Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2008, 15h14   #1
Candidat au titre de Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2008
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

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

Informations forums :
Inscription : janvier 2008
Messages : 30
Points : 14
Points : 14
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 :
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.
bosserieux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 15h37   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
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 :
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 15h49   #3
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
Bonjour,

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

Code :
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 :
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']."
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 15h52   #4
Membre Expert
 
Inscription : mai 2004
Messages : 1 253
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 1 253
Points : 1 290
Points : 1 290
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 ?
dingoth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h07   #5
Candidat au titre de Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2008
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

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

Informations forums :
Inscription : janvier 2008
Messages : 30
Points : 14
Points : 14
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)
bosserieux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h41   #6
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
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 :
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+
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h44   #7
Candidat au titre de Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2008
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

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

Informations forums :
Inscription : janvier 2008
Messages : 30
Points : 14
Points : 14
Mon code AJAX est le suivant :

Code :
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 :
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.
bosserieux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h51   #8
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Encore une fois attention aux injections SQL....

Encadrez dans vos requêtes les integer par des intval !!!!
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 16h58   #9
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
Re,
J'y comprends plus rien, LOL
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 17h06   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 20h52   #11
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
Citation:
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.
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 20h56   #12
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
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...
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2008, 21h05   #13
Membre émérite
 
Avatar de julien.63
 
Inscription : décembre 2005
Messages : 1 322
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 1 322
Points : 981
Points : 981
Envoyer un message via MSN à julien.63
Citation:
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?
julien.63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 09h32   #14
Membre éclairé
 
Inscription : août 2007
Messages : 360
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 360
Points : 334
Points : 334
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 +
mathieu44800 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 10h45   #15
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
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 : 9 315
Points : 15 609
Points : 15 609
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 12h01   #16
Candidat au titre de Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2008
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

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

Informations forums :
Inscription : janvier 2008
Messages : 30
Points : 14
Points : 14
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 :
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 :
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.
bosserieux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 12h08   #17
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
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 : 9 315
Points : 15 609
Points : 15 609
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h20   #18
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 120
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 120
Points : 45 270
Points : 45 270
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
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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h33   #19
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 315
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 : 9 315
Points : 15 609
Points : 15 609
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web