Tableau dynamique php

Résolu
beubeu -  
 beubeu -
Bonjour,
J'aimerais savoir s'il est possible de créer un tableau dynamique en php pour lequel chaque ligne est un
input type="text"
Le truc c qu'il faut nommer chaque case differemment, et il accepte pas la syntaxe avec les variables phpdu genre
name=$tab[$i]
Si je fais
name=case1
A la fin de ma boucle je ne récupere que la dernière ligne créer, les autres ont été écrasé apres chaque incrémentation, normal vu que le nom est le même.
Enfin bref je voudrais savoir s'il est possible de faire ca en php, j'aimerais eviter le js si possible...
Merci
A voir également:

13 réponses

Utilisateur anonyme
 
Bonjour,
ta demande est peu claire, mais une chose est sûre c'est que chaque input text doit avoir un nom #.
regarde si cela peut solutionner ton soucis :
Cela ne vous est jamais arrivé de vous demander si il était possible de créer des variables dynamiques ?
C'est à dire des variables ayant un nom changeant au cours du script ?

Et bien c'est tout à fait possible de faire ceci en PHP.

En effet, grâce aux variables dynamiques vous allez pouvoir utiliser des noms de variables qui sont eux mêmes (les noms), variables, ce qui veut dire que vous allez utiliser des noms de variables qui sont affectés et utilisés dynamiquement dans votre script.

D'après ce que l'on vient dire, une variable dynamique serait alors une variable qui aurait comme nom la valeur d'une variable, par exemple $var.
En effet, si nous définissons la variable $hello, avec en valeur la chaîne de caractères Coucou, on aurait la chose suivante :

exemple1
<?php

$var = 'hello';
$hello = 'Coucou';
echo ${$var};
?>


Qui affichera :


Coucou
0
beubeu
 
Re
Le soucis pour moi ne réside pas la en fait
Lorsque je veux appeler mes input type="text" avec une variable g une erreur de code.
Exemple :

<?php
$j=0;
while ($j<=$diff){
echo '<tr><th>'.$datedfr[$j].'</th>';
echo "<td><input type=\"text\" name="$var[$j][0].\"></td>";
echo "<td><input type=\"text\" name="$var[$j][1].\"></td>";
echo "<td><input type=\"text\" name="$var[$j][2].\"></td>";
echo "<td><input type=\"text\" name="$var[$j][3].\"></td>";
$j++;
}
?>

Il me sort cette erreur la :

Parse error: parse error, expecting `','' or `';'' in C:\wamp\www\SaisieRepasForm.php on line 79

Voila mon problème -_-
Merci
0
Utilisateur anonyme
 
la ligne 79 est-elle : echo "<td><input type=\"text\" name="$var[$j][0].\"></td>";

essaie avec ça

echo "<td><input type='text' name='".$var[$j][0]."'></td>";
--
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
c'est une erreur de syntaxe:

echo "<td><input type=\"text\" name=\"".$var[$j][0]."\"></td>";


si tu concatènes avec un point il faut le faire de chaque côté de la variable
0

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

Posez votre question
beubeu
 
Yes bien vu c ca
Reste plus qu'a utiliser les données ca c faisaible j'crois ^^
Merci bien en tt cas
0
beubeu
 
Recitf
Plus compliqué que je pensais, impossible de réutiliser mon tableau, je trouve pas pk.
Voila mon code :

// Ma boucle
while ($j<=$diff){
echo '<tr><th>'.$datedfr[$j].'</th>';
echo "<td><input type='text' name=".$var[$j][0]."></td>";
echo "<td><input type='text' name=".$var[$j][1]."></td>";
echo "<td><input type='text' name=".$var[$j][2]."></td>";
echo "<td><input type='text' name=".$var[$j][3]."></td>";
$j++;
}
//Affichage des données recup
echo $var[0][0].'<br>';
echo $var[0][1].'<br>';
echo $var[0][2].'<br>';
echo $var[0][3].'<br>';

Il semble qu'elle soit vide, une idée?
0
beubeu
 
En fait le $_POST prend pas mes variables, comment faire pr les récup?
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
ne pas confondre un script php qui s'execute a chaque appel au serveur et un logiciel qui tourne sur ton pc lui il garde les valeurs alors que le script php ne "s'en souvient plus" entre chaque appel

donc dans ta page formulaire qd tu creer tes <imput dans la bocle while je suppose que tu utilises un array $var initialisé dans cette page

il faut donc que dans le script php qui reçoit tu ait ce même $var au début du script et ensuite:

for($i=0;$i<sizeof($var);$i++){
echo $_POST[$var[$i][0]]."<br>";
echo $_POST[$var[$i][2]]."<br>";
echo $_POST[$var[$i][2]]."<br>";
echo $_POST[$var[$i][3]]."<br>";
}

0
Beubeu
 
Merci
J'essaye ca demain au taf je te tiens au courant
Bonne soirée
0
beubeu
 
Salut,
Alors pr ta proposition sizeof($var) me renvoie 0, et si je remplace pr un count($tot) qui représente le nombre de ligne du tableau les $_POST n'ont tjs rien, la misère koi -_-
Merci qd mm
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
sizeof($var) me renvoie 0

donnes moi un peu le code d'initialisation du tableau $var

count($tot)

count c'est pareil que sizeof et que viens faire ce $tot

sizeof renvoie le nombre d'éléments de l'array $var
0
beubeu
 
Mon tableau var correspondait au nom des input qui constituait le tableau. La taille du tableau dépend de la saisie que l'utilisateur effectue precedemment.
Pour remedier à ce problème j'ai fait différement. Voila ma solution :

while ($i<$diff){
echo "<tr>";
echo "<td>".$datedfr[$i]."</td>";
echo "<td><input type='text' name='ptidej".$i."'></td>";
echo "<td><input type='text' name='midsoir".$i."'></td>";
echo "<td><input type='text' name='gouter".$i."'></td>";
echo "<td><input type='text' name='nuitee".$i."'></td>";
echo "</tr>";
$i++;
}

Ensuite pour recup les données saisie on fait:

while ($i<$diff){
$var[0][$i]= $_POST['ptidej'.$i].'<br>';
$var[1][$i]= $_POST['midsoir'.$i].'<br>';
$var[2][$i]= $_POST['gouter'.$i].'<br>';
$var[3][$i]= $_POST['nuitee'.$i].'<br>';
$i++;
}

Par contre j'ai une question, c'est tu s'il est possible d'inserer des données dans ma table Mysql à partir d'un tableau à deux dimension, par exemple
$req="INSERT INTO $table (champs1) VALUES ($var[0][$i])";

Moi ca ne marche pas, ya pas grand chose sur le net a propos de ca.
Merci
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
$req="INSERT INTO $table (champs1) VALUES ('".$var[0][$i]."')"; 


ensuite pour un INSERT il me semble qu'il faut préciser tous les champs de ta table et les valeurs a y inserer
0
beubeu
 
Yep ca marche!
Merci encore
0