[RESOLU] Boucle pour variables similaires

Eléphanteau du PHP | 47 Messages

02 févr. 2019, 23:40

Bonjour,

J'aimerais éviter de répéter ceci :

Code : Tout sélectionner

$q1 = isset($_POST["q1"]) ? $_POST["q1"] : 0; $q2 = isset($_POST["q2"]) ? $_POST["q2"] : 0; $q3 = isset($_POST["q3"]) ? $_POST["q3"] : 0; $q4 = isset($_POST["q4"]) ? $_POST["q4"] : 0; $q5 = isset($_POST["q5"]) ? $_POST["q5"] : 0; $q6 = isset($_POST["q6"]) ? $_POST["q6"] : 0; $q7 = isset($_POST["q7"]) ? $_POST["q7"] : 0; $q8 = isset($_POST["q8"]) ? $_POST["q8"] : 0; $q9 = isset($_POST["q9"]) ? $_POST["q9"] : 0;
J'ai fait une boucle qui ne marche pas :

Code : Tout sélectionner

for ($i=1; $i<=9; $i++) { $q.$i = isset($_POST["q'.$i.'"]) ? $_POST["q'.$i.'"] : 0; }
Merci pour ceux qui pourront m'aider

Mammouth du PHP | 2703 Messages

02 févr. 2019, 23:51


Eléphanteau du PHP | 47 Messages

03 févr. 2019, 01:47

Avec les accolades ?

Code : Tout sélectionner

for ($i=1; $i<=9; $i++) { $q{$i} = isset($_POST["q'.$i.'"]) ? $_POST["q'.$i.'"] : 0; }
Ca ne marche toujours pas.

Mammouth du PHP | 2703 Messages

03 févr. 2019, 15:08

il faut lire la doc et apprendre à débuger.

$i = 0;
echo "q'.$i.'";

fatal-fury
Invité n'ayant pas de compte PHPfrance

03 févr. 2019, 15:55

J'ai lu et tout testé, justement ça ne marche pas.

echo "q'.$i.'"; // Affiche q'.0.'

Mammouth du PHP | 1967 Messages

04 févr. 2019, 08:27

for ($i=1; $i<=9; $i++)
{
$varname = 'q' . $i;
  $$varname = isset($_POST["q'.$i.'"]) ? $_POST["q'.$i.'"] : 0;
}
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 47 Messages

05 févr. 2019, 00:09

Ca ne marche toujours pas. En vérifiant avec :
echo $q1;
echo $q2;

Ca me donne tout le temps 0, même quand les posts sont définis.

Mammouth du PHP | 1967 Messages

05 févr. 2019, 09:01

$_POST["q'.$i.'"] te pose encore des problème,

la différence entre " et ' est importante.
avec des double " les variables php sont interprété
avec des simples ' le text est rendu tel quel.

avec ta syntaxe $_POST["q'.$i.'"] on ouvre des doubles " donc la suite est interprété tel quel sauf les variables. Donc il y a le q puis le simple ' et le point ensuite une variable interprété puis un simple ' et le point résultat q'.X.' qui ne correspond à rien dans ta superglobale $_POST.
donc soit
$_POST['q'.$i]
soit
$_POST["q$i"]
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 47 Messages

05 févr. 2019, 13:53

En effet, ça marche avec :

isset($_POST['q'.$i]) ? $_POST['q'.$i] : 0;

ou

isset($_POST["q$i"]) ? $_POST["q$i"] : 0;

Merci !