Tableau dynamique php [Résolu/Fermé]

Signaler
-
 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

13 réponses


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
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

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>";
--
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
881
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
Yes bien vu c ca
Reste plus qu'a utiliser les données ca c faisaible j'crois ^^
Merci bien en tt cas
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?
En fait le $_POST prend pas mes variables, comment faire pr les récup?
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
881
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>";
}

Merci
J'essaye ca demain au taf je te tiens au courant
Bonne soirée
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
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
881
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
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
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
881
$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
Yep ca marche!
Merci encore