Parcourir <table>

Résolu/Fermé
Arbitta Messages postés 76 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 16 février 2016 - Modifié par Arbitta le 15/04/2015 à 12:25
Arbitta Messages postés 76 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 16 février 2016 - 15 avril 2015 à 13:37
j'ai un tableau de cette maniére :(il parcour un fichier text et affiche chaque ligne avec ls 2 check box )
<?php
echo '<form name="f1" method="post" action="resultat.php">
echo '<table><tr> <td>LINK</td>  <td>allow</td>  <td>dntAllow</td> </tr>';
while (!feof($fichier)) {
$cont=fgets($fichier,1024); 
                echo '<tr> ' ;
                echo '<td> '.$cont.'</td>' ;
                echo '<td> <input type="checkbox" name="allow"> </td> ';
                echo '<td> <input type="checkbox" name="disallow"> </td> ';
                echo '</tr>';
 }
echo '</table>';  
echo ' <input type="submit" value="send" /> ' ;             
echo '</form>

lorsque je click sur le checkbox "allow" de la premiére ligne alors il m'insére la ligne et le mot "allow" dans le fichier text (fichier2.txt).
lorsque je click sur le checkbox "dntallow" de la deuxiéme ligne alors il m'insére la ligne et le mot "bntallow" dans (fichier2.txt).
Comment je peut parcourir la balise <table><tr><td>?
MErci. :)

2 réponses

Bonjour

Le problème est que tu donnes le même nom allow ou disallow aux check box sur toutes les lignes de ton tableau. Si elles ont toutes le même nom, tu ne peux pas les distinguer et dans le formulaire que tu recevras, il n'y aura qu'un seul $_POST['allow'] et un seul $_POST['disallow'] - sans doute le dernier de la liste.
L'astuce est de faire name ="allow[]" pour créer un tableau. Tu récupéreras alors tous les $_POST['allow'][$i] grâce à une boucle for par exemple (ou foreach, ou while selon tes goûts).

Je ne sais pas pourquoi tu travailles avec des fichiers texte, une base de données serait normalement beaucoup plus appropriée pour faire ce genre de choses.
1
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
15 avril 2015 à 12:46
Tiens j'avais zappé ça... PHP cache tant de surprises...
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
15 avril 2015 à 12:39
'lut, avec le code actuel tu ne peux pas: toutes tes checkbox s'appellent allow et disallow, ce qui créé des collisions pour chaque ligne.
Il faut leur donner un nom différent à chacun, par ex. un nombre suffixé. Il faut aussi passer le nombre d'entrées dans un élément caché, pour que
resultat.php
sache combien de checkboxes il doit vérifier. Aussi, tu n'es pas obligé de sortir le code HTML depuis PHP, les deux peuvent se mélanger, même au travers de boucles ou de conditions:
<form name="f1" method="post" action="resultat.php">
<table><tr> <td>LINK</td>  <td>allow</td>  <td>dntAllow</td> </tr>
<?php
$i = 0;
while (!feof($fichier)) {
	$cont=fgets($fichier,1024);
	?>
	<tr>
	<td><?php echo $cont; ?></td>
	<td> <input type="checkbox" name="allow<?php echo $i; ?>"> </td>
	<td> <input type="checkbox" name="disallow<?php echo $i; ?>"> </td>
	</tr>
	<?php
	++$i;
}
?>
</table>
<input type="hidden" name="count" value="<?php echo $i; ?>" />
<input type="submit" value="send" />
</form>
resultat.php
fera une boucle avec
$i
allant de
0
à
$_POST['count']
, et vérifiant la valeur de
$_POST['(dis)allow'.$i]
, puis traitant comme tu le souhaites.
0
Arbitta Messages postés 76 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 16 février 2016
15 avril 2015 à 13:37
merci bien . j'utilise un fichier text car je suis entrain de créer un fichier robot.txt
0