Page 1 sur 1

Degugage :)

Posté : 01 mars 2005, 06:13
par Elie
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 :)

Posté : 01 mars 2005, 09:08
par demipoulp
je comprend pas bien .... tu veus faire un simple listage de ton array() :?: :?:

dans ce cas un foreach( ) suffi

Posté : 01 mars 2005, 16:55
par crab
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+

Posté : 01 mars 2005, 17:05
par crab
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 ??)

Posté : 01 mars 2005, 23:51
par Elie
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]} .= "|";
	  }
  }

Posté : 02 mars 2005, 00:03
par crab
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+

Posté : 02 mars 2005, 00:19
par Elie
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 :)