Page 1 sur 2

[RESOLU] requete slq invalide + jointures

Posté : 09 janv. 2011, 17:11
par graffx
Salut a tous!


Voila, j' ai un petit souci avec uen requete, dans "SQL" de phpmyadmin, elle passe niquel et me retourne tous les bons resultats.


Dans ma page php c' est autre chose, voici mon code:
            $team2 = "SELECT ibf_members.name,ibf_members.id,ibf_members.mgroup_others,ibf_member_extra.id,ibf_member_extra.avatar_location FROM ibf_members LEFT OUTER JOIN ibf_member_extra ON ibf_members.id = ibf_member_extra.id WHERE ibf_members.mgroup_others = ",7," ";
                
                while ($team = mysql_fetch_array($team2))

et je me retrouve avec un :

Parse error: syntax error, unexpected ',' in /home/teamcashi/www/team.php on line 89
ou bien encore un "requete invalide"

Je suis conscient que c' est le ,7, qui pose souci, mais je ne trouve pas de solutions, je crois avoir tous essayé. Le probleme est que c' est exactement ce resultat que je dois trouvé, je ne peux donc enlever ni le numeraire, ni les virgules!


Merci d' avance, je seche!

Re: requete slq invalide + jointures

Posté : 09 janv. 2011, 17:33
par xTG
La concaténation de chaînes de caractères en PHP se fait avec le point : "."
;)

Re: requete slq invalide + jointures

Posté : 09 janv. 2011, 17:39
par graffx
Merci! Mais je n' ai pas encore trouvé, ceci dit je croyais que le point servait a separer DEUX chaines de caracteres? Hors moi je n' en ai qu' une! :s

Re: requete slq invalide + jointures

Posté : 09 janv. 2011, 18:40
par graffx
Toujours pas trouvé, je suis preneur d' autres details :s

Re: requete slq invalide + jointures

Posté : 09 janv. 2011, 19:17
par xTG
Le chiffre 7 est une "chaîne de caractère".

Re: requete slq invalide + jointures

Posté : 09 janv. 2011, 22:04
par graffx
bien sur mais j' ai vraiment besoin de ces deux virgules autour! je fais encore quelques essais!

Re: requete slq invalide + jointures

Posté : 09 janv. 2011, 23:52
par graffx
Non, je n' y arrive pas. Et quelques recherches sur google ne donnent pas l' effet voulu...

Re: requete slq invalide + jointures

Posté : 10 janv. 2011, 00:25
par sadeq
Bonjour, c'est simple le problème est que tu utilise des guillemets à l'intérieur des guillemets de la chaine SQL et ça c'est intolérable par PHP. T'a 2 solution d'écriture pour éviter cette erreur:
1. Utiliser des quottes pour délimiter une chaine interne à une chaine PHP entourée entre guillemets, exemple:
$team2 = "SELECT ibf_members.name,ibf_members.id,ibf_members.mgroup_others,ibf_member_extra.id,ibf_member_extra.avatar_location FROM ibf_members LEFT OUTER JOIN ibf_member_extra ON ibf_members.id = ibf_member_extra.id WHERE ibf_members.mgroup_others = ',7,' ";
2. Echapper (dans le sens de désactiver) les guillemets utilisée à l'intérieur d'une chaine PHP entourée par des guillemets en utilisant un anti-slash \ avant chaque guillemet interne, par exemple:
$team2 = "SELECT ibf_members.name,ibf_members.id,ibf_members.mgroup_others,ibf_member_extra.id,ibf_member_extra.avatar_location FROM ibf_members LEFT OUTER JOIN ibf_member_extra ON ibf_members.id = ibf_member_extra.id WHERE ibf_members.mgroup_others = \",7,\" ";

Re: requete slq invalide + jointures

Posté : 10 janv. 2011, 22:53
par graffx
Arf merci, en fait j' avais bien fait au debut, c' est juste que j' avais oublié un mysql_query!

Du coup, autre probleme, comment nommer ces variables dans un echo par la suite? Deja, voici ma requete :
             <?php
            $team2 = mysql_query("SELECT ibf_members.name,ibf_members.id,ibf_members.mgroup_others,ibf_member_extra.id,ibf_member_extra.avatar_location FROM ibf_members LEFT OUTER JOIN ibf_member_extra ON ibf_members.id = ibf_member_extra.id WHERE ibf_members.mgroup_others = ',7,' ");
                
                while ($team = mysql_fetch_array($team2)) 

Pour le pseudo, si je fais $team['name'] ou $team['ibf_members.name'], ca fonctionne nickel.

Mais pour l' avatar, ni $team['avatar_location'] ni $team['ibf_member_extra.avatar_location'] ne fonctionne.

Si je fais un print_r, ca donne:



Coyote

Array ( [0] => Coyote [name] => Coyote [1] => 1 [id] => 1 [2] => ,7, [mgroup_others] => ,7, [3] => 1 [4] => av-1.png [avatar_location] => av-1.png )

Ska

Array ( [0] => Ska [name] => Ska [1] => 2 [id] => 2 [2] => ,7, [mgroup_others] => ,7, [3] => 2 [4] => [avatar_location] => )

SaD

Array ( [0] => SaD [name] => SaD [1] => 3 [id] => 3 [2] => ,7, [mgroup_others] => ,7, [3] => 3 [4] => av-3.jpg [avatar_location] => av-3.jpg )




Donc l' avatar est bien la. Mais je n' arrive pas a l' afficher.

Re: requete slq invalide + jointures

Posté : 10 janv. 2011, 23:10
par xTG
L'image ne s'affichage pas ? Ou le texte du champs avatar ne s'affiche pas ? ;)
Vérifies ton lien !

Re: requete slq invalide + jointures

Posté : 11 janv. 2011, 00:20
par graffx2
Le texte du champs avatar! d' ailleurs dans le code source je me retrouve avec un <img src="" />

J' ai essayé une variable simplifiée du genre $avatar = $team['ibf_member_extra.avatar_location'] mais rien ne marche de ce coté!

Re: requete slq invalide + jointures

Posté : 11 janv. 2011, 10:00
par sadeq
Bonjour,
Pour éviter les problèmes de champ nommé dans le tableau résultat d'une requête il faut renommer les champs dans la requête SQL évitant du coup les erreurs sur les champs homonymes provenant de plusieurs tables jointes. Donc essaye ça dans ta requête:
$team2 = mysql_query("SELECT ibf_members.name,ibf_members.id as id_member,ibf_members.mgroup_others,ibf_member_extra.id as id_extra,ibf_member_extra.avatar_location FROM ibf_members LEFT OUTER JOIN ibf_member_extra ON ibf_members.id = ibf_member_extra.id WHERE ibf_members.mgroup_others = ',7,' ");
Mais pour l'avatar, il vaut mieux nous donner ton code php qui affiche l'image pour qu'on puisse t'aider. Tout en vérifiant en amont si le chemin d'accès aux images sur le disque est respecté.

Re: requete slq invalide + jointures

Posté : 11 janv. 2011, 20:27
par graffx
Merci a tous pour votre aide! Il me semblait bien qu' il y avait une methode de renommage des variables, ceci dit j' ai cette fois droit a un :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/teamcashi/www/team.php on line 91

Le probleme vient donc de la requete.


            <?php
            $team2 = mysql_query("SELECT ibf_members.name as name,ibf_members.id as id1,ibf_members.mgroup_others as group,ibf_member_extra.id as id2,ibf_member_extra.avatar_location as avatar FROM ibf_members LEFT OUTER JOIN ibf_member_extra ON ibf_members.id = ibf_member_extra.id WHERE ibf_members.mgroup_others = ',7,' ");
                
                while ($team = mysql_fetch_array($team2))
            {
            echo $team['avatar'];
            echo $team['name'];        
            }    
            ?>
J' ai enlevé le superflu!

Re: requete slq invalide + jointures

Posté : 11 janv. 2011, 20:53
par sadeq
Message de moogli le 11 Jan 2011, 20:45 (récupéré)
salut,

group est un mot clef sql je suppose que c'est ce qui bloque.

Il faut absolument tester le retour de mysql_query afin de voir si tous ce passe comme il faut.

Par exemple
Code php
<?php
$re = mysql_query($requete);
if($re === false){
echo 'Erreur SQL : '.mysql_error().'<br />'.$requete;
}
else {
//traitement de la requête avec le while et tous le tremblement.
}
?>
tu peut aussi tester ta requete avec la console mysql ou phpmyadmin afin de voir si elle retourne ce que tu souhaite.


@+[/quote]

Re: requete slq invalide + jointures

Posté : 11 janv. 2011, 21:29
par graffx
Hé bien grace a vous ca fonctionne, j' espere que ca servira a un autre!!!


Mille mercis!!!! =D>