Se connecter / S'enregistrer
Votre question

[PHP] Message d'erreurs persistants sur des "while"

Tags :
  • Base de données
  • Programmation
Dernière réponse : dans Programmation
23 Février 2007 18:32:31

Voilà, depuis ce matin je travaille sur une page d'inscription à un jeu (ne vous en faites pas, jusque ici c'est le seul problème que j'ai)

et, une fois mes 450 lignes de code terminé (ouf!) J'ai rencontré un problème persistant. Ayant d'abord posté sur http://www.siteduzero.com (lire le post) il s'avère que mon problème est difficile :s (doit-on en rire ou en pleurer?)

En fait, je voulais aller chercher des valeurs attributives dans une database à partir d'un formulaire.

Par exemple, si on me dit, voilà, ta race est humain (force humain=8), ton sexe est masculin(Force masculin=2) et ton signe astrologique est Gémaux(Force Gémaux= disons 3), ben ta force sera de force_race + force_signe + force_sexe.

Jusqu'ici, pas difficile pour moi (j'ai quand même un certain niveau) mais en fait l'air de rien ça marche pas. Voici la portion de code sur lequel mon message d'erreur pointe:

Citation :
<?
$signechoisi = $_POST['signe'];
$racechoisie = addslashes($_POST['race']);
$sexechoisi = $_POST['sexe'];
echo $racechoisie;
echo $signechoisi;
echo $sexechoisi;

$connectsigne = "SELECT * FROM signe WHERE id = $signechoisi";
$connectrace = "SELECT * FROM races WHERE nom = $racechoisie";
$connectsexe = "SELECT * FROM but WHERE id = $sexechoisi";

$signe_force = mysql_query($connectsigne);
while ($data1 = mysql_fetch_array($signe_force) )
{
$race_force = mysql_query($connectrace);
while ($data2 = mysql_fetch_array($race_force) )
{
$sexe_force = mysql_query($connectsexe);
while ($data3 = mysql_fetch_array($sexe_force) )
{
$force = $data1['cara_force'] + $data2['cara_force'] + $data3['cara_force'];



$signe_intel = mysql_query($connectsigne);
while ($data4 = mysql_fetch_array($connectsigne) )
{
$race_intel = mysql_query($connectrace);
while ($data5 = mysql_fetch_array($connectrace) )
{
$sexe_intel = mysql_query($connectsexe);
while ($data6 = mysql_fetch_array($connectsexe) )
{
$intel = $data4['cara_intel'] + $data5['cara_intel'] + $data6['cara_intel'];



$signe_sol = mysql_query($connectsigne);
while ($data7 = mysql_fetch_array($connectsigne) )
{
$race_sol = mysql_query($connectrace);
while ($data8 = mysql_fetch_array($connectrace) )
{
$sexe_sol = mysql_query($connectsexe);
while ($data9 = mysql_fetch_array($connectsexe) )
{
$sol = $data7['cara_sol'] + $data8['cara_sol'] + $data9['cara_sol'];

$signe_sag = mysql_query($connectsigne);
while ($data01 = mysql_fetch_array($connectsigne) )
{
$race_sag = mysql_query($connectrace);
while ($data02 = mysql_fetch_array($connectrace) )
{
$sexe_sag = mysql_query($connectsexe);
while ($data03 = mysql_fetch_array($connectsexe) )
{
$sag = $data01['cara_sag'] + $data02['cara_sag'] + $data03['cara_sag'];


$signe_pouv = mysql_query($connectsigne);
while ($data04 = mysql_fetch_array($connectsigne) )
{
$race_pouv = mysql_query($connectrace);
while ($data05 = mysql_fetch_array($connectrace) )
{
$sexe_pouv = mysql_query($connectsexe);
while ($data06 = mysql_fetch_array($connectsexe) )
{
$pouv = $data04['cara_pouv'] + $data05['cara_pouv'] + $data06['cara_pouv'];



$signe_dext = mysql_query($connectsigne);
while ($data07 = mysql_fetch_array($connectsigne) )
{
$race_dext = mysql_query($connectrace);
while ($data08 = mysql_fetch_array($connectrace) )
{
$sexe_dext = mysql_query($connectsexe);
while ($data09 = mysql_fetch_array($connectsexe) )
{
$dext = $data07['cara_dext'] + $data08['cara_dext'] + $data09['cara_dext'];


mysql_query("INSERT INTO membres VALUES( '', '" . $_POST['pseudo'] . "', '" . md5($_POST['pass']) . "', '" . $_POST['mail'] . "', '" . $_POST['cookie'] . "', '" . 0 . "', '" . $_POST['but'] . "', '" . $_POST['element'] . "', '" . $_POST['race'] . "', '" . $_POST['signe'] . "', '" . $_POST['sexe'] . "', '" . 0 . "', '" . 0 . "', '" . $force . "', '" . $intel . "', '" . $sol . "', '" . $sag . "', '" . $pouv . "', '" . $dext . "', '" . 1 . "', '" . 1 . "', '" . 1 . "', '" . 1 . "', '" . 1 . "', '" . time() . "', '" . time() . "')");

}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
?>


(PS: Vous pouvez trouver le code complet avec coloration syntaxique sur le lien du site du zéro)


Voilà, je vous remercie de tout coeur pour votre aide, je suis déséspéré :/ 

Autres pages sur : php message erreurs persistants while

23 Février 2007 22:46:07

J'ai rapidement parcouru le post plus complet sur le Site du Zéro. Et en effet, ton code est plutôt laid. Ton "j'ai quand même un certain niveau" est plutôt moyen avec du code aussi sale après.

Je t'explique très brièvement le concept des jointures, en tentant de l'appliquer à ton cas (sans vraiment regarder en détails : autant de boucles while me font vraiment très peur...

  1. $sql = 'SELECT
  2. (S.force + R.force + A.force)
  3. FROM
  4. sexe S,
  5. race R,
  6. astrologique A
  7. WHERE
  8. S.id_sexe = '.$player->id_sexe.'
  9. AND R.id_race = '.$player->id_race.'
  10. AND A.id_signe = '.$player->id_signe;
  11.  
  12. $req = mysql_query($sql) or die(mysql_error());
  13. $force = mysql_result($req, 0);


Et là, tu auras le résultat tant souhaité. Le fait d'avoir relié plusieurs tables entre elles s'appelle une jointure.

Si tu veux plus de détails, Google est ton ami.
24 Février 2007 09:25:54

Sethpolma a dit :
Ton "j'ai quand même un certain niveau" est plutôt moyen avec du code aussi sale après.
...
Si tu veux plus de détails, Google est ton ami.

Je te remercie pour ton aide à la fois joviale et polie.

Enfin, merci quand même (je critique mais sans toi je serais en larmes à l'heure qu'il est)
Je n'avais jamais entendu parlé des jointures; très brièvement des "inner join", aux cours, mais en pratique je ne connaissais pas vraiment.

Merci de ton aide!
24 Février 2007 14:34:40

Ne le prend pas mal. C'est juste une croisade personnelle contre le nombre incroyable de codeurs qui se disent des dieux de la programmation, et qui au final pondent des trucs immondes. :) 

Sinon, perso, j'ai jamais utilisé les "INNER JOIN", et tout ça. Ca existe... C'est cool ! Mais je te conseille plutôt les jointures "à la main", en faisant des égalités d'ID. Après, c'est sûr qu'il manque peut-être des choses. Mais bon... J'en ai pas le besoin.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS