FORUM D’ENTRAIDE INFORMATIQUE (FEI)
Site d’assistance et de sécurité informatique

Modification code php pour passage en php 7.4

Règles du forum : Entraide concernant la programmation informatique en général, tous langages : recherche ou correction d'un code ou d'une fonction, aide à la réalisation d'un projet...
Pour la programmation web (HTML, CSS, PHP, MySQL...), il est conseillé de s'orienter dans le forum Webmastering.
Merci de lire et de respecter la charte générale du forum.

Répondre

Afin d’empêcher la création automatisée de comptes, nous vous demandons de réussir le défi ci-contre.
Smileys
:D :) :-) ;) :| :( :cry: :cheers: :hourra: :mv: :lol: :mdr: :bonjour: :hello: :jap: :siffle: :bisou: :P :o :x :roll: :good: :bad: :super: :reflexion: :suspect: :? :oops: :peur: :zen: :boude: :bug:

Revue du sujet : Modification code php pour passage en php 7.4 Étendre la vue

Re: Modification code php pour passage en php 7.4

par B2D2 » mar. 2 janv. 2024 16:29
Il faut changer de méthode pour l'accès à la base de données MySQL, et utiliser les fonctions équivalentes avec mysqli_* au lieu de mysql_*.
Voilà en petit exemple la fonction que j'utilises en permanence (pas parfaite mais fonctionnelle) ; attention car cela fonctionne très bien sur des requêtes simples, si tu attaque avec des requêtes plus complexes (du style imbriquée... etc...), le résultat peut être un peu hasardeux ou ne pas fonctionner :
Code : Tout sélectionner
/**
 * En cas d'erreur SQL, renvoie la valeur null après avoir affiché l'erreur (là ou ça tombe !)
 * S'il n'y a pas de résultat (0 lignes), retourne un tableau de valeur NULL.
 * @param string $requeteSQL	Requete à envoyer telle qu'elle (aucun contrôle !)
 * @param string $champID	Identifiant utilisé comme clé du tableau de valeurs, pour les requètes SELECT (inutile dans les autres cas)
 * La donnée renvoyée dépend du type de requette :
 * INSERT : ID de la ligne insérée (null = pas d'insertion possible)
 * UPDATE : nombre de lignes modifiées (null = modif non faite ; 0 = aucune !)
 * SELECT : tableau de valeurs "id" => tableau associatif "nom_champ" => "valeur" (null = pas de résultat trouvé (ou erreur...))
 * DELETE : nombre de lignes supprimées (0 ou null = rien effacé (erreur si null...)
 **/
function sqlRequete(string $requeteSQL, string $champID=NULL) {
	if ( strpos($requeteSQL,"_vue") ) echo('[ '.$requeteSQL.' ]<br />');
	$resultatArray=null; 
	// récupération des résultats SI possible...
	$lien = new mysqli(DB_server, DB_user, DB_password, DB_bdd); 
	if ($lien->connect_errno) {
		echo('ERREUR '.$lien->connect_errno.' : '.$lien->connect_error.'.');
		$retour = FALSE;
	} else {  
        $resultat = $lien->query($requeteSQL);
        if (stristr($requeteSQL,"SELECT")!==FALSE || stristr($requeteSQL,"SHOW")!==FALSE) {	// SELECT
            if ( ($resultat!==FALSE) and ($resultat->num_rows>0) ) {	// Renvoi les lignes dans un tableau de tableau associatif...
                while ($ligne = $resultat->fetch_assoc()) { 
                    if ( (is_string($champID)) and ( array_key_exists($champID, $ligne)) ) {
                        $resultatArray[$ligne[$champID]] = $ligne;
                    } else {                  
                        $resultatArray[] = $ligne;  
                    }
                }
                $retour = $resultatArray;
            } else {	$retour = FALSE;	}
            if ($retour=='') { $retour = FALSE; }
        }
        if (stristr($requeteSQL,"INSERT")!==FALSE) {	 
            $retour = $lien->insert_id;
        } elseif (stristr($requeteSQL,"UPDATE")!==FALSE) {
            $retour = $lien->affected_rows;	
        } elseif (stristr($requeteSQL,"DELETE")!==FALSE) {
            $retour = $lien->affected_rows;	
        }
    }
    if (!is_bool($resultat)) {  $resultat->free();  }
    $lien->close();
	return($retour); 
}
Et pour info, ça s'utilise comme ça :
Code : Tout sélectionner
$requete = "SELECT animaux.idx as id_animal, animaux.genre as genre FROM animaux WHERE animaux.genre LIKE '%can%' ;";
$listeAnimauxGenreContientCan = sqlRequete($requete,'id_animal');
echo "<ul>";
foreach ($listeAnimauxGenreContientCan as $id=>$animal) {
    echo "<li>ID = ".$id." est un ".$animal['genre']."</li>
}
echo "</ul>";

Re: Modification code php pour passage en php 7.4

par wilkinsonwilfrid » lun. 18 déc. 2023 05:48
Des problèmes similaires m’ont tourmenté et j’ai finalement renoncé à essayer de les résoudre. PHP utilise désormais la programmation objet, ce qui nécessite des connaissances que je ne possède tout simplement pas pour le moment.

Re: Modification code php pour passage en php 7.4

par patoo » mar. 4 avr. 2023 10:09
Bonjour,

J'ai eu un problème similaire et je dois avouer que j'ai dû abandonner. PHP est passé en mode programmation objet et cela demande de nouvelles compétences que je n'ai ni le temps ni la force d'apprendre!

Bon courage en espérant que tu règle ce problème :hello:

Modification code php pour passage en php 7.4

par AJP971 » ven. 17 mars 2023 15:15
Bonjour, suite à un changement de serveur mon code php ne fonctionne plus , je suis passé en PHP 7.4
comment modifier mon code?
merci d'avance
voici le code
extract(shortcode_atts(array('iddomaine' => '0'), $atts));



// on se connecte à MySQL
$db = mysql_connect('localhost', 'bmdcformacom', '971admin971');
// on sélectionne la base
mysql_select_db('testbmdcformacom',$db);



$sql = "SELECT post_title,post_name,meta_value
FROM wp_posts, wp_postmeta
WHERE wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = '_thumbnail_id'
AND wp_posts.post_name ='".$iddomaine. "'
ORDER BY post_title";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$idimage="";
$nomdomaine="";


while($data = mysql_fetch_assoc($req))
{
$nomdomaine = $data['post_title'];
$idimage = $data['meta_value'];
}




$sql = "SELECT guid
FROM wp_posts
WHERE wp_posts.ID =".$idimage."";


$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$monimage ;


while($data = mysql_fetch_assoc($req))
{
$monimage = $data['guid'];
}



echo '<a href="https://institutformacom.com/audit-cons ... ne.'"><img class="featureimage" src="'.$monimage.'"></img>

<div class="titre_domaine">'.utf8_encode($nomdomaine).'</div></a>

' ;


echo('<style>

.titre_domaine{
text-align:center;
line-height:25px;
margin-top:30px;
}


.featureimage{
display: block;
margin-left: auto;
margin-right: auto

}


</style>

');


mysql_close($db);

Bonsoir Nous allons procéder à un[…]

Cadeaux High-tech

Bien joué :mdr:

Salut ! Malheureusement il n'y a pas de vraie solu[…]

Salut ! Il faut être plus précis dans[…]