Page 1 sur 1

envoi de donnees avec un formulaire

Posté : 17 févr. 2006, 12:51
par HD
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

Posté : 17 févr. 2006, 12:54
par mario
<?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++;
            } 
  ?> 

Posté : 17 févr. 2006, 12:59
par Ryle
$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) ?

Posté : 17 févr. 2006, 13:00
par HD
la variable ($del) renvoi toujours le numero de la ligne et non son contenu :(

Posté : 17 févr. 2006, 13:01
par HD
$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 :?

Posté : 17 févr. 2006, 13:07
par Ryle
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) }

Posté : 17 févr. 2006, 13:15
par HD
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 ?

Posté : 17 févr. 2006, 15:34
par Ryle
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 :)

Posté : 17 févr. 2006, 15:43
par HD
oui tu as surement raison
je vous tiens au courant
merci !

Posté : 20 févr. 2006, 12:50
par HD
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 !