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 :

[SQL] Ressources sql et mysql_fetch_assoc()


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut [SQL] Ressources sql et mysql_fetch_assoc()
    Bonjour,

    J'ai une erreur de ce style : Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL...
    J'ai bien cerné le problème et je suis à peu près sur que ce bout de code en est la cause :

    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
    17
    18
    19
    20
    echo "#@#@#@#@";
     
     $SQL = "SELECT i1.Code AS nom, i1.Ville, i2.Code AS contact, i1.Nom FROM contact i1 LEFT OUTER JOIN message i2 ON NumMess=".$_POST['Ligne']." ";
    $res = mysql_query($SQL) or die (mysql_error());
     
    ?> 	
    <p> <label>Nom contact : </label><select name="contact" id="contact" onchange="go()">
    <?php	 
     
    	while($val=mysql_fetch_assoc($res))
    		{
    		?>
            <option 
    		value="<?php echo $val['contact'];?>" <?php if($val['contact'] == $val['nom']){echo 'selected="selected"';} ?> ><?php echo $val['Nom'];?> &nbsp; &nbsp; <?php echo $val['Ville']; ?>
    		</option>
    		<?php
    		} ?>
     
    </select></p>
    <p><input type="button" onclick="chgAction('contact.php')" value="Gérer les contacts"></p>
    Ce code permet d'alimenter un div en AJAX en faite et c'est lorsque j'essaye de récupérer cette valeur que j'ai le message d'erreur.

    Le comble dans tous ça c'est que ça fonctionne très bien sous Internet Explorer mais pas sous Firefox.

    Si vous pouviez m'aider ça serait gentil.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as une erreur "not a valid mysql..." sans que l'exécution de la requête ne te renvoie d'erreur ?

    Commençons par les erreurs "bateau" : tu es sûr d'avoir quelque chose dans $_POST['ligne'] dans ta requête ?
    Et j'ai un doute sur la syntaxe de ta requête. Normalement le ON de la jonction porte sur quelque chose en rapport avec les tables genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table1 join table2 on table1.attribut = table2.attribut
    On pourrait avoir la structure des tables ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Elle a raison, le SQL est pas bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         SELECT i1.Code AS nom, i1.Ville, i2.Code AS contact, i1.Nom FROM contact i1 
         LEFT OUTER JOIN message i2 ON NumMess=".$_POST['Ligne']."
    De plus, je ne comprends pas :
    i1.Code AS nom
    i1.Nom
    tu risques d'avoir une référence circulaire si je ne me trompe pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        SELECT i1.Code AS Code1, i1.Ville, i2.Code AS Code2, i1.Nom FROM i1, i2 WHERE i1.Code = i2.Code AND NumMess=".$_POST['Ligne']."

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    T'es certain que ça fonctionne bien sous IE ? T'as pas un autre truc qui devrait pas être là ? La mise à jour est bien faite ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Celira :
    _en effet l'éxecution de la requête ne me renvoie pas d'erreur, le div se charge sans problème apparent.
    _je suis sur que mon $_POST['ligne'] est bien alimenté.

    mathieu:
    _si la structure de ma requête n'était pas bonne j'aurais un message d'erreur lors de l'execution de ma requête. De plus j'ai essayé sous phpmyadmin et ça fonctionne très bien.

    dingo :
    _je confirme, ça fonctionne très bien sous Internet Explorer. Les changements se font bien dans la bdd, j'ai vérifié.

    Les structures de mes tables sont les suivantes :
    message :
    NumMess int(10)
    SujetMess varchar(100)
    ContenuMess text
    DateMess date
    HeureMess time
    Lu char(1)
    TelMess varchar(30)
    Code smallint(4)
    SaisiePar varchar(30)
    RecuPar varchar(30)

    contact :
    Code smallint(4)
    Civilite varchar(30)
    Nom varchar(30)
    Adresse varchar(30)
    SuiteAd varchar(30)
    Cp varchar(10)
    Ville varchar(30)
    Telephone varchar(30)
    Fax varchar(30)
    Portable varchar(30)
    Email varchar(50)

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Re,

    ça me semble suspect mais bon, si ca marche...
    Par contre, quel est ton code javascript ?

    Par que la manière de créer les objets différe d'un navigateur à l'autre...

    Issu de Wikipédia :

    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
    17
    18
    19
     
     
    if (window.XMLHttpRequest) {
      xhr = new XMLHttpRequest();
     
      if (window.ActiveXObject) 
      {
        try { // essaie de charger l'objet pour IE
          xhr = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
          try { // essaie de charger l'objet pour une autre version IE
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e) {
            window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
          } // try-catch
        } // try-catch
      }
     
    } // if-else
    A+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Mon code AJAX est le suivant :

    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
    17
    function getXhr(){
                                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                                    return xhr;
    			}
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    /** Méthode qui sera appelée sur le clic d'une ligne du tableau **/			
    function fillform(ligne){
    	var xhr = getXhr();
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						var MonTableau = xhr.responseText;
    						// On se sert de innerHTML pour rajouter les options à la liste	et de value pour remplir les inputs et textarea
    						document.getElementById('NomEmpSaisie').innerHTML = MonTableau.split('#@#@#@#@')[0];
    						document.getElementById('NomEmpRecu').innerHTML = MonTableau.split('#@#@#@#@')[1];
    						document.getElementById('conta').innerHTML = MonTableau.split('#@#@#@#@')[2];
    						document.forms['message'].elements['Telephone'].value = MonTableau.split('#@#@#@#@')[3];
    						document.forms['message'].elements['DateMess'].value = MonTableau.split('#@#@#@#@')[4];
    						document.forms['message'].elements['HeureMess'].value = MonTableau.split('#@#@#@#@')[5];
    						document.forms['message'].elements['SujetMess'].value = MonTableau.split('#@#@#@#@')[6];
    						document.forms['message'].elements['ContenuMess'].value = MonTableau.split('#@#@#@#@')[7];
    						document.forms['message'].elements['Ligne'].value = ligne;
    						}
    				}
    				// Ici on va voir comment faire du post
    				xhr.open("POST","ajax_tableau.php",true);
    				// ne pas oublier ça pour le post
    				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    				// ne pas oublier de poster les arguments
    				xhr.send("Ligne="+ligne);
    			}
    La ligne qui me permet de récupérer le résultat est celle en gras.

  8. #8
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Encore une fois attention aux injections SQL....

    Encadrez dans vos requêtes les integer par des intval !!!!

  9. #9
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Re,
    J'y comprends plus rien, LOL

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message
    Re,
    J'y comprends plus rien, LOL
    +1

    Si ta requête fonctionne sous phpMyAdmin et qu'elle ne renvoie pas d'erreur à l'exécution par mysql_query, normalement ça devrait marcher ! A moins que $res ne soit redéfinie entre l'affectation par mysql_query et l'utilisation par mysql_fetch_assoc, je ne vois vraiment pas.
    Désolée...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Le comble dans tous ça c'est que ça fonctionne très bien sous Internet Explorer mais pas sous Firefox.
    contenu de ceci, je ne pense pas que ça vienne du coté serveur, donc effectivement le problème se situe surement dans le javascript.

  12. #12
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par julien.63 Voir le message
    contenu de ceci, je ne pense pas que ça vienne du coté serveur, donc effectivement le problème se situe surement dans le javascript.
    Si il y'a un warning du coté de PHP c'est une erreur au niveau du code. Le client peux impacter les données envoyées mais pas provoquer d'erreurs de ce coté là si c'est bien conçu.

    Toujours vérifier les données provenant du client... toujours...

  13. #13
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Si il y'a un warning du coté de PHP c'est une erreur au niveau du code
    euuh oui c'est très juste...
    pourtant ma remarque reste vraie (enfin je pense).
    Y-aurait-il deux problèmes?

  14. #14
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Il faut que tu sois plus précis si tu veux qu'on arrive a comprendre pourquoi ça bug...

    Essayes de nous envoyer le code source de toutes tes pages en indiquant le nom des fichiers correspondants.

    De nous expliquer ce que tu veux faire au final.

    En experant faire avancer ton Schmilblick, A +

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    quel est le résultat si tu entres l'url (page + param) appelée par Ajax, directement dans la barre d'adresse du nav ?
    Fais ici un copié/collé du résultat affiché dans le nav : ça permettra (peut-être) de voir la valeur ou la structure qui pose problème à FF mais pas à IE ...

    En complément : le code HTML de l'objet ayant l'id 'conta' ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message
    Bonjour,

    Il faut que tu sois plus précis si tu veux qu'on arrive a comprendre pourquoi ça bug...

    Essayes de nous envoyer le code source de toutes tes pages en indiquant le nom des fichiers correspondants.

    De nous expliquer ce que tu veux faire au final.

    En experant faire avancer ton Schmilblick, A +
    Comment veux tu que je t'envois le code source de toutes mes pages ?

    Au final je veux simplement faire une requête update ou seulement un select.
    Dans ces 2 requêtes je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Code=".$_REQUEST['contact']."
    et c'est ça qui bug.
    Ce $_REQUEST['contact'] correspond au select qui a pour name contact. (cf mon premier message)

    Vous vouliez aussi ça je crois :
    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
    17
    18
    19
    20
    <div id="conta">
    <p> <label>Nom contact : </label><select name="contact" id="contact" onchange="go()">
    	<option value='-1'>Aucun</option>
     
       <?php
    $SQL = "SELECT Code, Nom, Ville FROM contact ORDER BY Nom ASC";
            $res = mysql_query($SQL);
     
            while($val=mysql_fetch_array($res))
            { 
        ?>
                 <option value="<?php echo $val['Code'];?>">
    	         <?php echo $val['Nom']; ?> &nbsp; &nbsp; <?php echo $val['Ville']; ?>
                 </option>
       <?php } 
    ?>
     
       </select></p>
       <p><input type="button" onclick="chgAction('contact.php')" value="Gérer les contacts"></p>   
    </div>
    Merci pour votre aide. J'espere que l'on va trouver la solution.

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Et ça aussi
    Citation Envoyé par E.Bzz Voir le message
    le résultat si tu entres l'url (page + param) appelée par Ajax, directement dans la barre d'adresse du nav ?
    Fais ici un copié/collé du résultat affiché dans le nav :
    puisque c'est ce qui, au final, arrive dans ton div en générant l'erreur

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 638
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    tu veur dire Ebzz que tu soupçonnes une difference d'envoi dasn le send entre IE et FFX ?

    ça pourrait venir du header ?

    faudrait tester aussibien le request que le post et le get ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    tu veur dire Ebzz que tu soupçonnes une difference d'envoi dasn le send entre IE et FFX ?

    ça pourrait venir du header ?

    faudrait tester aussibien le request que le post et le get ?
    Par exemple ...

    Mais aussi (bien que le message ne soit pas en phase) la "structure" de la réponse qui est intégrée au HTML existant. Dans tous les cas les données "brutes" devraient être les plus parlantes ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. surveillance ressources SQL
    Par niko0083 dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2011, 13h45
  2. savoir si un user est connecté et ressources SQL/serveur
    Par newbie_php dans le forum Langage
    Réponses: 1
    Dernier message: 24/02/2011, 22h24
  3. [SQL] Requête SQL
    Par Kit59 dans le forum Oracle
    Réponses: 2
    Dernier message: 29/06/2005, 18h15
  4. Réponses: 2
    Dernier message: 06/06/2005, 15h13
  5. Conversion de SQL à Transact-SQL
    Par sebioni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/07/2003, 11h59

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