Requete sur requete ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete sur requete ?

par raptor » 21 juil. 2005, 14:11

de rien ;)

par Antony » 21 juil. 2005, 14:09

ah oui ça marche mieux là :lol: . Ce que je peux etre étourdie parfois :roll: . Merci pour tout en tout cas.

par raptor » 21 juil. 2005, 13:56

j'ai testé de code sur une table perso, ca fonctionne parfaitement -_-

Dans ton cas tu as encore fait une faute.

Dans la deuxieme requete, ta table s'appele cartes, et non table...

par Antony » 21 juil. 2005, 13:07

Excuse j'avais mal recopié mon code, je n'ai pas fait une erreur aussi grossière je sais bien que je suis pas très bon mais quand même lol... c'est que avant de poster je modifie le nom de mes variables et de mes tables.
Donc voici le code sans aucune modification cette fois, ça évitera les erreurs :
$Requete = mysql_query("SELECT Num FROM cartes ORDER BY RAND() LIMIT 6");
echo "<body bgcolor='skyblue'><center>";

$liste = "";
  while ($res = mysql_fetch_array($Requete)) {
   $liste.="|".$res["Num"];
  }
  $liste = substr($liste,1);
  $req2 = mysql_query("select * from table where Num REGEXP '^(".$liste.")$' order by Num asc");


while ($rows = mysql_fetch_array($req2)){ \\l'erreur est ici
    $Image = $rows['Num'];
    echo $Image;
}

Je pense que l'erreur vient du fait que j'interroge peut etre mal la requete. peut etre faut il faire autre chose que mysql_fetch_array ?

par raptor » 21 juil. 2005, 09:38

while ($res = mysql_fetch_array($Requete))

L'erreur est en rouge ;)

par Cyrano » 21 juil. 2005, 08:28

Modération : Je fatigue à répéter ça tout le temps : Lisez les règlements. Antony, article 3 première ligne !

par Antony » 21 juil. 2005, 08:27

voilà ça donne sa :
$Requete = mysql_query("SELECT Num FROM table ORDER BY RAND() LIMIT 6");
echo "<body bgcolor='skyblue'><center>";

$liste = "";
  while ($Requete = mysql_fetch_array($Requete)) {
   $liste.="|".$res["Num"];
  }
  $liste = substr($liste,1);
  $req2 = mysql_query("select * from table where Num REGEXP '^(".$liste.")$' order by Num asc");


while ($rows = mysql_fetch_array($req2)){ 'l'erreur est ici
	$Image = $rows['Num'];
	echo $Image;
}
echo "</center>";

par raptor » 20 juil. 2005, 17:26

fait un copier coller du dernier code que j'ai posté, et dis moi l'erreur retournée, car je doute qu'il y est une erreur dans ce dernier code :)

par Antony » 20 juil. 2005, 15:15

Me revoilà !
Donc j'ai essayé la solution de Mère teresa... Mais j'ai quelques problèmes... Soit j'ai pas compris la fonction sort() soit... j'ai pas compris.
si je fais ça :
$Requete = mysql_query("SELECT Point FROM table ORDER BY RAND() LIMIT 0,6");
$rows = mysql_fetch_array($Requete);
foreach ($rows as $key => $val) {
echo "rows[".$key."] = ".$val."\n";
}
là il m'affiche que deux résultats... par contre si je met à ma requete select * là il m'affiche 6 résultats mais 6 résultats par pair. par exemple 2 fois la valeur de la colonne 1, deux fois la valeur de la colonne 2 etc...
Et pour ta solution Raptor j'ai mis un point mais j'ai toujours la meme erreur...

par Antony » 19 juil. 2005, 20:13

lol désolé mais j'ai du m'absenter quelques jours ce qui explique que je ne répondais plus...
Mere Teresa ne t'inquiète pas je ne t'ai pas oublié loin de là, j'ai essayé ton code mais je ne suis pas arrivé à le faire marcher mais je n'ai pas encore eu le temps de m'y pencher sérieusement... je ne voulais pas mettre le traditionnel "euh non ça marche pas ton truc c'est nul" avant d'avoir compris et tout essayé...
Je vous tiens au courant prochainement, et merci encore pour vos réponses rapides c'est vraiment très agréable.

par mere-teresa » 18 juil. 2005, 16:00

Je le répete encore une fois, mais est-ce que tu as essayé le code de mere-teresa ?
Moi j'aiderai plus si on ne tient pas compte de mes interventions. Je passerai mon temps à modérer et censurer
[-(

par raptor » 18 juil. 2005, 15:54

Voila la bonne version:
$req = mysql_query("select Num from table order by rand() limit 6");

$total = mysql_num_rows($req);
if ($total==0) {
  echo "pas de résultat";
} else {
  $liste = "";
  while ($res = mysql_fetch_array($req)) {
   $liste.="|".$res["Num"];
  }
  $liste = substr($liste,1);
  $req2 = mysql_query("select * from table where Num REGEXP '^(".$liste.")$' order by Num asc");
  
  /* Ici le traitement du resultat de la requete */

}

Le REGEXP c'est pour se servir des expressions regulieres comme un Like.
Dans ce cas, je construis mon motif au dessus ($liste) et je lui demande de rechercher les champs lui correspondant, donc les Num listés dans ce cas.

@++

par zeus » 18 juil. 2005, 15:52

Je le répete encore une fois, mais est-ce que tu as essayé le code de mere-teresa ?

par raptor » 18 juil. 2005, 15:51

erf oui, c'est pas un & mais un . qu'il faut mettre :)

par Antony » 18 juil. 2005, 15:50

Si je fais ton code Raptor j'ai une erreur à la ligne 8 (parse error T_VARIABLE...) que j'ai réussi à corriger en faisant ceci :
$liste.= "|" & $res["Num"];

Mais ensuite quand j'effectue le traitement du résultat de la requete comme ceci :
while ($rows = mysql_fetch_array($req2)){
$Image = $rows['Num'];
echo $Image;
}
il m'affiche cette erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result...
J'ai essayé de changer quelques trucs mais je comprends pas tout à ton code et j'aime bien comprendre ce que je met : ça sert à quoi cette commande "REGEXP '^(".$liste.")$" ? Merci encore pour votre aide à tous.