Concaténation et chaine

Bonjour.

Dans mon code je génère une liste déroulante comme ceci.


<form name="go">
<SELECT size="1" onchange="javascript: onChangeSelect(this.value);">
<option>Produits catalogue</option>
foreach($id_serialize as $val_id) 
    {
     <option value="<?php echo $val_id;?>"><?php echo $val_id;?></option>
    } 
</select>
</form>

Je possède une fonction qui doit remplir des colonnes d’un tableau.

remplircellule("contenu");

Je dois remplir une colonne avec la liste déroulante ci dessous mais impossible de m’en sortir.
Toujours une erreure quelque part.

Si quelqu’un peux m’aider.

Merci bien.

Saluton,
Ça devrait déjà aller un peu mieux comme ça :

<form name="go">
<SELECT size="1" onchange="javascript: onChangeSelect(this.value);">
<option>Produits catalogue</option>
<?php
foreach($id_serialize as $val_id)  {
      echo "<option value=\" $val_id\">$val_id</option>
      } 
?>
</select>
</form>

Edité le 04/03/2008 à 17:44

Merci Maljuna Kris pour ta réponse mais le problème n’est pas la.

En gros j’aimerais faire ca

remplircellule("<form name="go">
<SELECT size="1" onchange="javascript: onChangeSelect(this.value);">
<option>Produits catalogue</option>
<?php
foreach($id_serialize as $val_id) {
 echo "<option value=\" $val_id\">$val_id</option>
 } 
?>
</select>
</form>");

Mais j’arrive pas à écrire ça correctement.


<?php
$text = '<form name="go">
<SELECT size="1" onchange="javascript: onChangeSelect(this.value);">
<option>Produits catalogue</option>';

foreach($id_serialize as $val_id) {
 $text .= "<option value=\" $val_id\">$val_id</option>";
 } 
$text .= '</select>
</form>';

echo 'remplircellule('.$text.')';
?>

C’est un truc dans ce genre que tu veux ?
Edité le 04/03/2008 à 20:59

Ca serais plutot :

remplircellule($text);

simplement je pense, mais bon l’idée est la :slight_smile:

Pour les personnes qui créent des fonctions Template, ou qui affichent de gros contenue via les variables String passé en parametre, enfin d’evite de faire des tonnes de $text .= ‘’; $text .= ‘’;$text .= ‘’;$text .= ‘’;$text .= ‘’;$text .= ‘’; etc…
Il est possible d’utilisé les fonctions de Bufferisation de sortie.

Dans l’exemple si dessus par exemple ca donnerais :


<?php
ob_start();
?>
<form name="go">
<SELECT size="1" onchange="javascript: onChangeSelect(this.value);">
<option>Produits catalogue</option>
foreach($id_serialize as $val_id) 
 {
 <option value="<?php echo $val_id;?>"><?php echo $val_id;?></option>
 } 
</select>
</form>
<?php
$bufferSortie = ob_end_flush();
remplircellule( $bufferSortie );
?>

Voilà pour la culture :smiley:

Ps : Si la fonctions remplircellule est du Js ( j’ai déduit que c’était du Php car c’était du Php avant, et il n’y avais pas de précision, il faut pas géré la chose de cette maniere, mais avec ce qui est donné au dessus par manu2 ( par contre surment des erreurs du au quotes sont à prevoir )
Edité le 04/03/2008 à 21:48

Au passage, tu peux aussi faire ça:

function foo($str) {
  return remplircellule($str);
}
ob_start('foo');
...
ob_end_flush();

Ce qui fait la même chose.

(ob_end_flush = afficher le buffer, ob_end_clean = ne pas afficher le buffer, mais le vider, ob_get_clean = récupérer le buffer & le vider, etc)

Merci à vous.