Degugage :)

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 : Degugage :)

par Elie » 02 mars 2005, 00:19

Pas con ... :)
Je vais modifier ca je sais pas pourquoi j'y ai pas penser avant :/
Je me sert de ca que pour les checkbox en fait :/

Tu peux juste me montrer comme faire le meme genre de truc avec un code d'autant de ligne ?
$champ = array('title','texte','info'); 
  for($c=0;$c<count($champ);$c++) { 
      for($i=1;$i<=$_POST['nb_titre'];$i++) { 
      ${$champ[$c]} .= $_POST[$champ[$c][$i]; 
      if($i<$_POST['nb_titre']) ${$champ[$c]} .= "|"; 
      } 
  } 
A part faire ca je vois pas quoi faire :)

par crab » 02 mars 2005, 00:03

Ouais c'est bien ce que je pensais ;-)
Tu peux faire plus simple !
Si tu nomme tes input genre "title[]", "texte[]" et "info[]", tu auras automatiquement un tableau de valeurs !
Donc plus besoin de faire ta récuperation avec les variables dynamique :P

Il y a plusieurs post qui traite cette "futilité" sur le forum, fait une recherche.

A+

par Elie » 01 mars 2005, 23:51

Voila la reponse pour info ...

Je voulais delester mais puisque vous etes motive :)

Le formulaire :
			  <? for($i=1;$i<=$_POST['nb_titre'];$i++) { ?>
			  <tr>
			  <tr>
				<td class="text-align-right">Titre <? echo $i; ?> : </td>
				<td><input type="text" name="title_<? echo $i; ?>" class="newsletter" style="width: 300px" /></td>
			  <tr>
			  <tr>
				<td class="text-align-right">Texte <? echo $i; ?> : </td>
				<td><textarea name="texte_<? echo $i; ?>" class="newsletter" style="width: 300px" rows="4"></textarea></td>
			  <tr>
			  <tr>
				<td class="text-align-right">Plus d'infos : </td>
				<td><input type="text" name="info_<? echo $i; ?>" class="newsletter" style="width: 300px" value="http://" /></td>
			  <tr>
			  <? } ?>
Récuperation des champs
  $champ = array('title','texte','info');
  for($c=0;$c<count($champ);$c++) {
	  for($i=1;$i<=$_POST['nb_titre'];$i++) {
	  ${$champ[$c]} .= $_POST[$champ[$c].'_'.$i];
	  if($i<$_POST['nb_titre']) ${$champ[$c]} .= "|";
	  }
  }

par crab » 01 mars 2005, 17:05

Je viens de relire le code, et je me suis posé la question dans quels cas bizarre tu étais fourré pour en arriver a une solution aussi tordue...

Tu pourrais nous donner un aperçu de ton formulaire et préciser ton prb car je pense (j'en suis meme sur) qu'il existe un moyen beaucoup moins fastidieux et plus simple pour le résoudre. :roll:

(parce que j'imagine que après tu fais des explode() de tes variables, non ??)

par crab » 01 mars 2005, 16:55

Hello,

T'abuse un peu sur les variables dynamique ;-)
Ok, donc si j'ai bien compris ce que tu voudrais faire ton code pourrais ressembler a ça
$champ = array('title','message','info');
for($i=1;$i<=3;$i++) {
   for ($j=0; $j < count($champ); $j++) { 
      ${$champ[$j]} .= addslashes($_POST[$champ[$j].'_'.$i]);
	  if($i<3) ${$champ[$j]} .= "|";
   }
}
Je dis pas que c'est génial, je suis juste rester dans la meme optique ...

Une autre solution aurait été de faire en sorte que le premier indice ton array 'champ' soit égal a 1 :
$champ = array( 1 => 'title', 2 => 'message', 3 => 'info' );
A+

par demipoulp » 01 mars 2005, 09:08

je comprend pas bien .... tu veus faire un simple listage de ton array() :?: :?:

dans ce cas un foreach( ) suffi

Degugage :)

par Elie » 01 mars 2005, 06:13

Salut :)

Comment faire pour que ca marche ?

for($i=1;$i<=3;$i++) {
$champ = array('','title','message','info');
${$champ[$i]} .= addslashes($_POST[$champ[$i].'_'.$i]);
if($i<3) ${$champ[$i]} .= "|";
}

Pour que $title = ... $message = ...

Merci car la je seche :)