envoi de donnees avec un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : envoi de donnees avec un formulaire

par HD » 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 !

par HD » 17 févr. 2006, 15:43

oui tu as surement raison
je vous tiens au courant
merci !

par Ryle » 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 :)

par HD » 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 ?

par Ryle » 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) }

par HD » 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 :?

par HD » 17 févr. 2006, 13:00

la variable ($del) renvoi toujours le numero de la ligne et non son contenu :(

par Ryle » 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) ?

par mario » 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++;
            } 
  ?> 

envoi de donnees avec un formulaire

par HD » 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