[RESOLU] Pb enregistrement

Eléphant du PHP | 166 Messages

12 nov. 2017, 01:25

Bonjour
Voici mon code :

Code : Tout sélectionner

<?php if ($mysqli = new mysqli('localhost', 'root', 'root', 'ecole')) { $mysqli->query('TRUNCATE TABLE nombre');//vide ma table au rafraichissement du naviguateur $nbeleve = rand(20,30);/* entre 20 & 30 élèves dans l'école*/ echo 'Il y a '.$nbeleve.' élèves ' .'</br>'; $i = 0; while ($i <= $nbeleve - 1) { $i++;//affecte nb d'eleves $nsport = rand(0,3);//affecte 0 à 3 sport/élève $sport = array('Boxe','Foot','Tennis','Velo','Piscine');//création tableau sports switch ($nsport) { case 0: $zero = 'Aucun sport';// Aucun sport echo '<p id="rouge">Elève '.$i.' = '.$zero.'</p>';//on affiche break; case 1: $rand_keys1 = array_rand($sport,1);//select 1 valeur au hazard du tableau $sport echo '<p id="bleu">Elève '.$i.' = '.$sport[$rand_keys1].'</p>';//on affiche break; case 2: $rand_keys2 = array_rand($sport,2);//select 2 valeurs au hazard du tableau $sport echo '<p id="vert">Elève '.$i.' = '.$sport[$rand_keys2[0]].' - '.$sport[$rand_keys2[1]].'</p>';//on affiche break; case 3: $rand_keys3 = array_rand($sport,3);//select 3 valeurs au hazard du tableau $sport echo '<p id="orange">Elève '.$i.' = '.$sport[$rand_keys3[0]].' - '.$sport[$rand_keys3[1]].' - '.$sport[$rand_keys3[2]].'</p>';//on affiche break; $req2 = 'INSERT INTO sport(nom) VALUES ("'.$zero.'","'.$sport[$rand_keys1].'","'.$sport[$rand_keys2[0]].'","'.$sport[$rand_keys2[1]].'", "'.$sport[$rand_keys3[0]].'","'.$sport[$rand_keys3[1]].'","'.$sport[$rand_keys3[2]].'")'; $mysqli->query($req2); } $req1 = 'INSERT INTO nombre(eleve,sport) VALUES ("'.$i.'","'.$nsport.'")'; $mysqli->query($req1); } } else { echo 'Erreur'; // On affiche un message d'erreur. } ?>
En bas, les variables $req1 et $req2 permettent l'enregistrement dans ma Bdd, or là, il n'y a que $req1 qui fonctionne. $req2 rien ne s'enregistre ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

12 nov. 2017, 10:56

Bonjour,

Fais un echo de $req2 et teste ta requête dans phpmyadmin
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 166 Messages

12 nov. 2017, 11:12

Bonjour
Alors un echo et un var_dump ne m'induque rien.
Par contre dans PHPAdmin cela me met :
#1136 - Column count doesn't match value count at row 1
Est ce se ne serait pas parce que j'indique uniquement le champ "nom" de ma table, et du fait, comme il n'y a qu'un champ mais plusieurs variables a rentrer, cela bug ?

Eléphant du PHP | 166 Messages

12 nov. 2017, 11:27

je me suis apercu aussi, quand mettant un var_dump de la variable $zero par exemple, avant le break case0, sa marche...Mais en mettant le meme var_dump après le break du case0 cela n'affiche rien....donc normal, que je ne puisse pas recuperer mais variable dans req2....
Comment faire ??

Eléphant du PHP | 166 Messages

12 nov. 2017, 14:04

j'ai fait ceci et ça a l'air de fonctionner :

Code : Tout sélectionner

case 0: $zero = 'Aucun sport';// Aucun sport $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$zero.'")'); echo '<p id="rouge">Elève '.$i.' = '.$zero.'</p>';//on affiche break; case 1: $rand_keys1 = array_rand($sport,1);//select 1 valeur au hazard du tableau $sport $sport1 = $sport[$rand_keys1]; $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$sport1.'")'); echo '<p id="bleu">Elève '.$i.' = '.$sport1.'</p>';//on affiche break; case 2: $rand_keys2 = array_rand($sport,2);//select 2 valeurs au hazard du tableau $sport $sport20 = $sport[$rand_keys2[0]]; $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$sport20.'")'); $sport21 = $sport[$rand_keys2[1]]; $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$sport21.'")'); echo '<p id="vert">Elève '.$i.' = '.$sport20.' - '.$sport21.'</p>';//on affiche break; case 3: $rand_keys3 = array_rand($sport,3);//select 3 valeurs au hazard du tableau $sport $sport30 = $sport[$rand_keys3[0]]; $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$sport30.'")'); $sport31 = $sport[$rand_keys3[1]]; $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$sport31.'")'); $sport32 = $sport[$rand_keys3[2]]; $result = $mysqli->query('INSERT INTO sport(nom) VALUES ("'.$sport32.'")'); echo '<p id="orange">Elève '.$i.' = '.$sport30.' - '.$sport31.' - '.$sport32.'</p>';//on affiche break;