Degugage :)

Mammouth du PHP | 1339 Messages

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 :)
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 200 Messages

01 mars 2005, 09:08

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

dans ce cas un foreach( ) suffi
Univers divided by 0 - cucumber error - reboot

Eléphant du PHP | 67 Messages

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+

Eléphant du PHP | 67 Messages

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 ??)

Mammouth du PHP | 1339 Messages

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]} .= "|";
	  }
  }
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 67 Messages

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+

Mammouth du PHP | 1339 Messages

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 :)
Bon sinon tu me fais un message privé et on se fait un TeamViewer