envoi de donnees avec un formulaire

HD
Mammouth du PHP | 1181 Messages

17 févr. 2006, 12:51

salut
j'ai codé ce script qui recupere les lignes d'un fichier et qui envoi le numero de ligne selectionné à un fichier php :
  <?php
			$fichier = "textenews.htm"; 
			$lines = file ($fichier);
			foreach ($lines as $line_num => $line) {
			echo "
				<tr>
					<td><font face='Arial Narrow' size='2'><input type='radio' name='del' value='$line_num'></font></td>
					<td><font face='Arial Narrow' size='2'>$line</font></td>
				</tr>
				";
			}
  ?>
le probleme c'est que le fichier php doit recuperer non pas le numero de ligne mais le contenu de la ligne !
et meme si je met
<input type='radio' name='del' value='$line'>
ca ne marche pas
comment faire alors ?
merci
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Mammouth du PHP | 768 Messages

17 févr. 2006, 12:54

<?php 
            $fichier = 'textenews.htm'; 
            $lines = file($fichier); 
            $i = 1;
            foreach ($lines as $line_num => $line) { 
            echo " 
                <tr> 
                    <td><font face='Arial Narrow' size='2'><input type='radio' name='del' value='".$i."'></font></td> 
                    <td><font face='Arial Narrow' size='2'>".$line."</font></td> 
                </tr> 
                "; 
            $i++;
            } 
  ?> 
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2006, 12:59

$lines est-il bien renseigné ?
Quand tu regardes le source généré, $line ne contient pas de caractères spéciaux génant pour le traitement html (genre des apostrophes) ?

HD
Mammouth du PHP | 1181 Messages

17 févr. 2006, 13:00

la variable ($del) renvoi toujours le numero de la ligne et non son contenu :(
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

HD
Mammouth du PHP | 1181 Messages

17 févr. 2006, 13:01

$lines est-il bien renseigné ?
Quand tu regardes le source généré, $line ne contient pas de caractères spéciaux génant pour le traitement html (genre des apostrophes) ?
pas de probleme à ce niveau :?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2006, 13:07

ben de toute façon, la syntaxe du radio est bonne, il faut effectivement que tu mettes $line et non pas $line_num en value
echo "<tr> 
                    <td><input type='radio' name='del' value='$line'></td> 
                    <td><font face='Arial Narrow' size='2'>$line</font></td> 
                </tr>"; 
Sinon... peut être un petit test en javascript au moment ou tu envois le formulaire pour vérifier la valeur ? un truc du genre :

Code : Tout sélectionner

for(i=0;i<document.forms[0].elements.length; i++) { if(document.forms[0].elements[i].type="checkbox" && document.forms[0].elements[i].checked) alert(document.forms[0].elements[i].value) }

HD
Mammouth du PHP | 1181 Messages

17 févr. 2006, 13:15

le code complet si quelqu'un peut essayer en local :
<form method="POST" action="del_n.php">
  <p align="center"><b><u><font face="Arial Narrow" size="3" color="#FF6699">Pour
  supprimer une nouvelle</font></u></b></p>
  <p align="center"><font face="Arial Narrow" size="2">veuillez cocher la case
  correspondante</font></p>
    
  <div align="center">
    <center>
    <table border="2" cellpadding="2">
	
  <?php
			$fichier = 'textenews.htm';
            $lines = file($fichier);
            $i = 1;
            foreach ($lines as $line_num => $line) {
            echo "
                <tr>
                    <td><font face='Arial Narrow' size='2'><input type='radio' name='del' value='".$i."'></font></td>
                    <td><font face='Arial Narrow' size='2'>".$line."</font></td>
                </tr>
                ";
            $i++;
            } 
  ?>
  
      </table>
    </center>
  </div>
  <p align="center"><font face="Arial Narrow" size="2"><input type="submit" value="Envoyer" name="B1"></font></p>
</form>
textnews.htm :
<a href='../lien.php'>01/01/06 : premiere nouvelle</a>&nbsp;-&nbsp;
<a href='../lien.php'>02/01/06 : deuxieme news</a>&nbsp;-&nbsp;
<a href='../lien.php'>03/01/06 : Troisieme nouvelle</a>&nbsp;-&nbsp;
<a href='../lien.php'>04/01/06 : Quatrieme nouvelle</a>&nbsp;-&nbsp;
<a href='../lien.php'>05/01/06 : cinquieme news</a>&nbsp;-&nbsp;
<a href='../lien.php'>06/01/06 : sixieme nouvelle</a>&nbsp;-&nbsp;
sinon pour le test js je l'insere comment au moment de l'envoi ?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2006, 15:34

Je n'ai pas pu tester ton code, mais je pense que le problème vient des apostrophes dans le fichier que tu lis. Le radio que tu génères va ressembler à ça :

Code : Tout sélectionner

<input type='radio' name='del' value='<a href='../lien.php'>01/01/06 : premiere nouvelle</a>&nbsp;-&nbsp;' >
Du coup ta value s'arrête à '<a href='

Essayes comme ceci (j'ai remplacé les ' du radio par des " pour ne pas avoir de problème) :
<?php 
  $fichier = "textenews.htm"; 
  $lines = file ($fichier); 
  foreach ($lines as $line_num => $line) { 
    echo '<tr> 
      <td><input type="radio" name="del" value="'.$line.'"></td> 
      <td><font face="Arial Narrow" size="2">'.$line.'</font></td> 
      </tr>'; 
  } 
?> 
D'ailleurs, sans avoir à changer les apostrophes et les guillemets, tu dois pouvoir faire un addslashes ou un htmlentities (à vérifier)
echo ' ... <input type='radio' name='del' value='".addslashes($line)."'> ...';
// ou
echo ' ... <input type='radio' name='del' value='".htmlentities($line, ENT_QUOTES)."'> ...';
Nota : le $i ne t'apporte rien, le compte des lignes tu l'as dans num_ligne :)

HD
Mammouth du PHP | 1181 Messages

17 févr. 2006, 15:43

oui tu as surement raison
je vous tiens au courant
merci !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

HD
Mammouth du PHP | 1181 Messages

20 févr. 2006, 12:50

ca marche bien le
 echo '<tr> 
      <td><input type="radio" name="del" value="'.$line.'"></td> 
      <td><font face="Arial Narrow" size="2">'.$line.'</font></td> 
      </tr>'; 
merci bien !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]