Page 1 sur 1

Modification code php pour passage en php 7.4

Posté : ven. 17 mars 2023 15:15
par AJP971
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);

Re: Modification code php pour passage en php 7.4

Posté : mar. 4 avr. 2023 10:09
par patoo
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:

Re: Modification code php pour passage en php 7.4

Posté : lun. 18 déc. 2023 05:48
par wilkinsonwilfrid
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

Posté : mar. 2 janv. 2024 16:29
par B2D2
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>";