IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mysql_result obsolete, comment faire ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut Mysql_result obsolete, comment faire ?
    Bonjour,

    J'ai sais que mysql_result deviendra bientôt obsolète et il faut donc que je remplace cette fonction par une autre en version php 5.5. Cela dit je ne sais pas du tout comment faire. Autant pour mysql_query c'etait facile mais pour cette fonction je ne vois pas du tout. J'aimerai rester en mode procédurale.

    Voici la partie du code concernée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    $query = "SELECT * FROM $tbljeu"; 
    $result = mysqli_query($IdConn,$query); 
    $nb = mysqli_num_rows($result); 
     
    if ($nb > 0)
    {
    	$j=0;
    	while ($j<$nb)
    	{
    		$num=mysql_result($result,$j,"num");
    		$numasso=mysql_result($result,$j,$tabCat[$type]);
    		echo "<br>Pour obtenir le numéro $num , il faut le jouer avec le chiffre $numasso";
    		$j++;
    	}
    }
    J'aimerai bien entendu rester en mode procédural et remplacer ces deux lignes avec un code compatible php 5.5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $num=mysql_result($result,$j,"num");
    $numasso=mysql_result($result,$j,$tabCat[$type]);
    Merci d'avance à celui ou celle qui pourra m'aider et (sans trop exagérer) me sauver la vie (ou plutôt la semaine !).

    Je reste disponible pour toute question.

    Bonne soirée à tous.

    EDIT : j'ai vu que le manuel PHP disait qu'il fallait utiliser : bool mysqli_data_seek ( mysqli_result $result , int $offset )
    pour avoir une equivalence avec mysql_result.
    Avez vous une idée de comment faire avec mon exemple ci-dessus s'il vous plait ?

    J'ai trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function mysqli_result($res, $row, $field=0) {
        $res->data_seek($row);
        $datarow = $res->fetch_array();
        return $datarow[$field];
    }
    Est ce qu'en déclarant cette fonction dans mon code, il me suffira alors de remplacer tous les mysql_result par mysqli_result pour que tout fonctionne correctement ?

    Merci encore.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'ai sais que mysql_result deviendra bientôt obsolète
    En fait, elle est déjà obsolète depuis deux ans

    Est ce qu'en déclarant cette fonction dans mon code, il me suffira alors de remplacer tous les mysql_result par mysqli_result pour que tout fonctionne correctement ?
    Essaie
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut
    En fait je ne peux pas essayer sans etre sur à au moins 99% lol.
    C'est assez compliqué mais j'ai droit à une seule modif dans le code...

    C'est obsolète depuis 2 ans mais là j'ai appris que ca sera carrément inutilisable d'ici quelques mois... ce qui provoquera des tonnes d'erreurs sur mon site.

    Alors... penses tu que ca va marcher ?

    J'ai trouvé cette fonction de substitution sur le manuel php mais je ne suis pas sur de la traduction. Peux tu me dire si c'est bien ce que je pensais stp ?

    Voici le lien :
    http://php.net/manual/fr/class.mysqli-result.php#109782

    Merci encore

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Enfin ce n'est pas Cendrillon, les fonctions en disparaissent pas de ton serveur à minuit.
    Ca ne concerne qu'une mise à jour du serveur en PHP7 ; tu as encore 10 ans devant toi.

    Ton code est mal écrit déjà avec l'extension mysql, il serait dommage de faire une mise à niveau en gardant les problèmes.
    Tout simplement tu peux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $query = "SELECT * FROM $tbljeu"; 
    $result = mysqli_query($IdConn,$query); 
    while ($row = mysqli_fetch_assoc($result)) {
            echo '<br/>Pour obtenir le numéro ' . $row['num']. ', il faut le jouer avec le chiffre ' . $row[$tabCat[$type]];
    }
    Concernant ta mise à jour, j'imagine mal que tu te lances dans un nouveau code que tu n'aurais jamais testé et pour lequel tu n'as qu'un seul essai.
    Si tu as oublié un point-virgule quelque part tout est foutu ?
    Si c'est vraiment le cas, tu es dans le film Saw, pas dans du développement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut
    Merci pour ta réponse. Mais est ce que tu as bien compris toi aussi par rapport à la traduction du manuel php qu'il s'agit bien d'une fonction visant à remplacer mysql_result ?

    Je note l'amélioration de ton code mais pour te dire la vérité ce n'est pas la seule ligne de code écrite comme ca et il me sera plus simple de faire un bon "remplacer" dans mon éditeur de texte sur une centaine de fichiers plutot que tout réécrire avec mysql_fetch_assoc.

    Sinon oui je n'ai pas vraiment beaucoup d'essais car ce n'est pas vraiment mon site mais celui d'un ami. Je vais passer chez lui après sa journée de boulot pour accéder à son ftp et je n'ai que quelques minutes (une 20ene de minutes) avant qu'il ne parte 2 semaines en vacances. Je n'ai pas longtemps pour tester ca donc c'est pour cette raison que je voulais arriver chez lui avec une solution qui avait de fortes chances de fonctionner :-)

    10 ans tu dis ? Mais alors pourquoi OVH lui envoie des messages limite stressant pour lui dire que plus rien ne risque de fonctionner ? Tu me dis pour php 7 mais là OVH semble indiquer que seul php 5.5 sera pris en compte dans les mois à venir... cela ne voulait pas donc dire que mysql_result ne fonctionnera plus ?

    Merci encore je suis un peu perdu...

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Tu peux mettre le message précis d'OVH ?

    Sinon, si je débarque chez mon garagiste, et que je lui dis : "Salut, je vous confie ma bagnole, faut la réviser / rénover du genre changer le moteur, mais vous avez 20 minutes parce que je pars en vacances", il m'enverrra bouillir, et il aura bien raison... Alors fais pareil avec ton copain.
    Comment dit le proverbe déjà ? A l'impossible, nul n'est tenu !

    Sinon, oui, si tu as au moins du temps, le code en version locale de développpement, et les accès FTP une semaine, la librairie mysqli est une option satisfaisante.
    Une autre serait la librairie PDO... mais si tu veux changer le moins possible, va pour mysqli_
    Pour partir de codes qui fonctionnent, tu as des variantes sur cette page du manuel (variante orientée objet ou procédurale).
    Toujours si tu es pressé, prends la variante procédurale.
    Mais, dans tous les cas, ce ne sera pas un copier/coller au pif. Tu auras du code à modifier en profondeur sur toutes les pages, on parle d'accès à la base de données, là, pas d'un vague changement de couleur dans la CSS !

    Ceci dit, ça ne serait pas aussi compliqué si ton copain avait fait une fonction de connexion, qu'il convoquerait "toujours" pareil : tu n'aurais qu'à changer le contenu de la fonction. Fais-donc cela (une fonction) si ce n'est déjà fait.

    http://php.net/manual/fr/mysqli.prepare.php
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31
  2. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo