Tableau dynamique php

Résolu/Fermé
beubeu - 29 janv. 2009 à 09:31
 beubeu - 30 janv. 2009 à 10:54
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
29 janv. 2009 à 09:39
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
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
29 janv. 2009 à 09:56
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 janv. 2009 à 10:11
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
Yes bien vu c ca
Reste plus qu'a utiliser les données ca c faisaible j'crois ^^
Merci bien en tt cas
0
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
En fait le $_POST prend pas mes variables, comment faire pr les récup?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
29 janv. 2009 à 18:36
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
Merci
J'essaye ca demain au taf je te tiens au courant
Bonne soirée
0
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 janv. 2009 à 10:38
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
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 janv. 2009 à 10:50
$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
Yep ca marche!
Merci encore
0