Parcourir <table>

Résolu
Arbitta Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -  
Arbitta Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -
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

Utilisateur anonyme
 
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
Tiens j'avais zappé ça... PHP cache tant de surprises...
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'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   Statut Membre Dernière intervention  
 
merci bien . j'utilise un fichier text car je suis entrain de créer un fichier robot.txt
0