Problème de variable dans une requete mysql

Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011 - 28 nov. 2007 à 23:42
Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011 - 29 nov. 2007 à 13:54
bonjour,

j'ai quelques petits problèmes avec un bout de code.

habituellement j'utilise $data['texte'] pour récupéré le contenu d'un champ de ma table.

mais la ca ne fonctionne pas. je suis capable de lire seulement le premier champs...

j'explique. je récupère le nom des table avec mysql_query(show table..) et pis apres avoir fais le tri je veux allez lire dans une table spécifique mais je ne réussi pas...

j'aimerais avoir quelques explications merci!


CODE
*******
$req = mysql_query("SHOW TABLES") or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while ($row = mysql_fetch_row($req)) {
$pos1 = stripos($row[0], "tour");
if ($pos1 === false){
;
} else {
$query = mysql_query("SELECT name,categorie FROM $row[0]");
$data = mysql_fetch_row($query);
echo "<tr>
<td>",$data[1],"</td>
<td></td>
<td>",$data[3],"</td>
</tr>";
}
}
mysql_close;


C'est dans le deuxième mysql_query que j'ai de la difficulté


Merci!

8 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 00:18
Salut,

$pos1 = stripos($row[0], "tour");
if ($pos1 === false){
;
} else {

=> Plutôt :

if (stripos($row[0], 'tour')!==false) {
// Ce que tu mets dans le else
}

Tu ne récupères que le premier enregistrement parce que tu ne fais pas le nécessaire pour en récupérer d'autres :
$data = mysql_fetch_row($query);

Bizarre, parce que tu fais bien ce qu'il faut pour récupérer tous les enregistrements de lapremière requête... Pourquoi ne pas faire pareil pour la seconde ?
0
Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011
29 nov. 2007 à 00:32
ok pour la premiere partie


 while ($row = mysql_fetch_row($req)) {

 

    if (stripos($row[0], 'tour')!==false){

        $query = mysql_query("SELECT * FROM $row[0]");

        $data = mysql_fetch_row($query);

            echo "<tr>

           
       
<td>",$data['name'],"</td>

                    <td></td>

           
       
<td>",$data['categorie'],"</td>

                    </tr>";

    }

}


pour mon probleme je ne te suis pas....dans ma requete j'ai pas mis un * parce que je veux pas tous les champs jutse 2


dans d'autre page php je pouvais récupéré mes champs avec $data['nom'] , par exemple, ici ca ne fonctionne pas...


peut tu t'expliquer un peu


Merci
0
Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011
29 nov. 2007 à 00:38
re


pour mieux m'expliquer...dans ma deuxième requete, je dois mettre $data[2] au lieux de $data['name']


name qui est le nom de mon champs dans ma table.


je comprend pas pourquoi parce dans mes autre page ou j'ai des requete $data['name'] fonctionne mais pas ici
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
29 nov. 2007 à 04:32
$req = mysql_query("SHOW TABLES") or die('Erreur SQL !
'.$sql.'
'.mysql_error());

while ($row = mysql_fetch_row($req)) {

$pos1 = stripos($row[0], "tour");

if ($pos1 === false){

;

} else {

$query = mysql_query("SELECT name,categorie FROM $row[0]");

$data = mysql_fetch_row($query);

echo "<tr>

<td>",$data[1],"</td>

<td></td>

<td>",$data[3],"</td>

</tr>";

}

}

mysql_close;

Ta requete, demande deux valeurs, name, et catégorie. Dans ton tableau de valeurs, tu demande la 1 et la 3. Ya pas comme un probleme ? si tu fait un print_r ($data) tu verra que tu n'aura que deux entrées. Prends ces deux la (si t'es en both ou numeric, c'est 0 et 1, sinon c'est name et catégorie)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011
29 nov. 2007 à 04:43
ca je sais...je fais print_r($data) sur cette page et ca me donne.


Array
(
[0] => Test Tour
[1] => 2 vs 2
)


mais quand je sais la meme manip sur d'autre page ca me donne


Array
(
[id] => 1
[name] => accueil
[link] => index.php
)


ici c'est le nom de mes champs

si t'es en both ou numeric, c'est 0 et 1, sinon c'est name et catégorie)


je ne te comprend pas
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
29 nov. 2007 à 05:08
quand tu fait une requete sur mysql, tu peux spécifier le type de retour que tu veux
numeric : c'est juste les chiffres (donc 1 et 2 dans ton cas)
jesaispluslenom : c'est le nom, comme name et link
et both c'est les deux
Donc regarde le fetch : php.net/mysql_fetch_row
et choisi celui qui t'arrange le plus, ca devrait fonctionner
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 nov. 2007 à 08:01
hello,

mysql_fetch_row() ramène un tableau indexé numériquement (au passage, tu demandes un $data[3] alors que tu ne vas chercher que 2 champs dans ta table??? Et il ne faut pas oublier que l'indexation d'un tableau commence à 0, pas à 1).
mysql_fetch_assoc() ramène un tableau indexé associativement (avec comme clefs le nom de tes champs).
mysql_fetch_array() ramène par défaut un tableau doublement indexé : numériquement, et associativement.
mysql_fetch_array() peut prendre 3 constantes en paramètres (en plus de ta ressource de requête) :
MYSQL_NUM => pour avoir seulement un tableau indexé numériquement
MYSQL_ASSOC => tableau associatif...
MYSQL_BOTH => comportement par défaut (numérique ET associatif).
0
Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011
29 nov. 2007 à 13:54
Merci boucoup pour ce coups de main!
0
Rejoignez-nous