mysql_result pour mysqli

Mammouth du PHP | 620 Messages

23 janv. 2019, 16:15

Bonjour,
je dois faire un maj d'un ancien code avec mysql mais je ne trouve pas l’équivalent de la fonction pour passer avec mysqli
la ligne originale c'est

Code : Tout sélectionner

$v_connecte = mysql_result($resultat, 0, 0);
et je voudrait avoir l’équivalent de cette ligne pour mysqli.
Pouvez vous m'aider ?

Mammouth du PHP | 1967 Messages

23 janv. 2019, 16:24

Warning
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

mysqli_data_seek() in conjunction with mysqli_field_seek() and mysqli_fetch_field()
PDOStatement::fetchColumn()
here's a rough replacement using mysqli:

if (!function_exists('mysql_result')) {
function mysql_result($result, $number, $field=0) {
mysqli_data_seek($result, $number);
$row = mysqli_fetch_array($result);
return $row[$field];
}
}
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 620 Messages

23 janv. 2019, 16:35

Merci, j'ai vu la doc sur php.net mais je comprends pas comment l'adapter à cette ligne de code...

Mammouth du PHP | 1967 Messages

25 janv. 2019, 08:59

tu as 2 possibilité, soit tu inclus le code dans le tiens, et ainsi tu remplacera la fonction mysql_result()

soit tu remplace ta ligne par celle qui sont dans la fonction
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$v_connecte = $row[0];
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 620 Messages

28 janv. 2019, 17:09

merci pour l'aide mais je rame un peu désolé.
j'ai reprise intégralement le code (c'est un compteur de visite) mais je n'ai aucunes données qui s'affichent en essayant de faire les modifications pour passer en sqli....

j'en suis là...
en ancienne version sql le compteur fonctionne bien (il tourne encore) mais en version sqli plus rien...

Code : Tout sélectionner

<?php // Chemin absolu vers le fichier config.inc.php $chemin = __FILE__; $chemin = str_replace('compteur.php', '', $chemin); // On vérifie que le fichier config.inc.php existe bien if (!file_exists($chemin . 'config.inc.php')) { echo 'Le fichier config.inc.php manque à l\'appel !'; } else { require_once($chemin . 'config.inc.php'); // Connexion à la base de données $base = mysqli_connect($host_name, $user_name, $password, $database); @mysqli_select_db($base_nom, $base); /*********************** * Traitement des dates * ***********************/ // On stocke dans $maintenant la date courante $jour = date('j'); $mois = date('n'); $annee = date('Y'); $aujourdhui = mktime(0, 0, 0, $mois, $jour, $annee); // date d'aujourd'hui à minuit au format timestamp $maintenant = time(); // date de l'instant présent au format timestamp /*************************** * Vérifications préalables * ***************************/ // On vérifie si on a dépassé le nombre de jours pendant lesquels les IP sont conservées $requete = "SELECT * FROM $base_table WHERE ip = 'reference'"; $resultat = $connect->query($requete); $data = mysqli_fetch_assoc($resultat); // On stocke dans $total le nombre de visites total $total = $data['total']; // On récupère la dernière date à laquelle les IP ont été effacées $ip_suppr = $data['prem_visite']; // Si la durée de conservation des IP est dépassée if ( ($maintenant-$ip_suppr) > ($garder_ip*24*60*60) ) { // On vide tout sauf la première ligne de référence $requete = "DELETE FROM $base_table WHERE ip != 'reference'"; $resultat = $connect->query($requete); // Et on remplace la date de référence par la date d'aujourd'hui à minuit $requete = "UPDATE $base_table SET prem_visite = '$aujourdhui' WHERE ip = 'reference'"; // On met la clause WHERE au cas où les IP n'ont pas pu être effacées $resultat = $connect->query($requete); } // On récupère la date du dernier jour stocké dans la base $date_stockee = $data['la_date']; // Si on a changé de jour, on remet le nombre de visites quotidiennes à 0 if ( ($aujourdhui != $date_stockee) ) { // Le nombre de visites de chaque visiteur de la base est remis à 0 $requete = "UPDATE $base_table SET total = '0' WHERE ip != 'reference'"; $resultat = $connect->query($requete); // La date stockée est mise à jour à la date d'aujourd'hui $requete = "UPDATE $base_table SET la_date = '$aujourdhui' WHERE ip = 'reference'"; $resultat = $connect->query($requete); } /********************************** * Fonction de vérification des IP * **********************************/ // On définit une fonction qui vérifie si l'IP ext exclue du comptage ou pas function verif_ip($valeur, $tableau) { $i = 0; while ($i < count($tableau)) { $resultatultat = strpos($valeur, $tableau[$i]); if ($resultatultat === false) { $i++; } elseif (strpos($valeur, $tableau[$i]) == 0) { return true; } else { $i++; } } return false; } /************************* * Traitement des visites * *************************/ // Récupération de l'adresse IP du visiteur dans $ip if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else { $ip = $_SERVER['REMOTE_ADDR']; } // Et du host correspondant à cette IP $hostname = gethostbyaddr($ip); // Si l'IP n'est pas dans la liste de celles à exclure if ( verif_ip($ip, $exclure_ip) != true) { // On compte le nombre d'entrées correspondant à l'IP de notre visiteur $resultat = $connect->query("SELECT count(*) FROM $base_table WHERE ip='$ip'"); //$ip_connue = mysql_result($resultat, 0, 0); mysqli_data_seek($resultat, 0); $row = mysqli_fetch_array($resultat); $$ip_connue = $row[0]; // Si aucune IP ne correspond, le visiteur est donc nouveau dans la base de données if ($ip_connue == 0) { // Alors on ajoute son heure de connexion, son IP, et on initialise son nombre de visites à 1 $requete = "INSERT INTO $base_table (prem_visite, la_date, total, ip, hostname) VALUES ('$maintenant', '$maintenant', 1, '$ip', '$hostname')"; $resultat = $connect->query($requete); // Et on incrémente le nombre de visiteurs $total++; $requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'"; $resultat = $connect->query($requete); } /* Sinon le visiteur est déjà dans la base, alors : - soit il est déjà venu dans la même période d'unicité d'un visiteur - soit la période est dépassée, alors le visiteur est considéré comme nouveau */ else { // On récupère toutes les données qui lui correspondent $requete = "SELECT * FROM $base_table WHERE ip = '$ip'"; $resultat = $connect->query($requete); $data = mysql_fetch_assoc($resultat); // On récupère la date de ses première et dernière visites $prem_visite = $data['prem_visite']; $der_visite = $data['la_date']; // Si la période est dépassée if ( ($maintenant - $prem_visite) > ($periode*60*60) ) { // Incrémentation du compteur total $total++; $requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'"; $resultat = $connect->query($requete); // On compte le visiteur comme nouveau, même si c'est dans la même journée $nb_visites = $data['total'] + 1; $requete = "UPDATE $base_table SET prem_visite = '$maintenant' , la_date = '$maintenant', total = $nb_visites WHERE ip = '$ip'"; $resultat = $connect->query($requete); } // Sinon on est dans la même période d'unicité else { // On met uniquement à jour l'heure de son dernier passage $requete = "UPDATE $base_table SET la_date = '$maintenant' WHERE ip = '$ip'"; $resultat = $connect->query($requete); } } } /*********************** * Stockage des données * ***********************/ // Nombre de visites total $requete = "SELECT total FROM $base_table WHERE ip = 'reference'"; $resultat = $connect->query($requete); $v_total = mysqli_fetch_row($resultat); $v_total = $v_total[0]; // Nombres de visiteurs quotidiens $requete = "SELECT sum(total) FROM $base_table WHERE ip != 'reference'"; $resultat = $connect->query($requete); //ancien $v_auj = mysql_result($resultat, 0, 0); mysqli_data_seek($resultat, 0); $row = mysqli_fetch_array($resultat); $v_auj = $row[0]; // Nombre de visiteurs en ligne $en_ligne = $maintenant - ($intervalle*60); $requete = "SELECT count(*) FROM $base_table WHERE (ip != 'reference') AND (la_date >= '$en_ligne')"; $resultat = $connect->query($requete); // ancien $v_connecte = mysql_result($resultat, 0, 0); mysqli_data_seek($resultat, 0); $row = mysqli_fetch_array($resultat); $v_connecte = $row[0]; } ?>

Mammouth du PHP | 1967 Messages

28 janv. 2019, 23:32

J'ai pas tous regarder mais tu te connect sur la variable $base et puis tu utilise $connect . un peu de constance fera peut être des miracles
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Mammouth du PHP | 620 Messages

29 janv. 2019, 10:36

oui effectivement j'ai modifié mais je n'ai rien qui s'affiche...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

29 janv. 2019, 10:43

Vérifies que MySQL ne renvoie aucune erreur :
http://php.net/manual/fr/mysqli.error.php
Quand tout le reste a échoué, lisez le mode d'emploi...