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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    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 chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    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 Expert
    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
    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
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    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 chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    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
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    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.

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