Page 1 sur 1

Créer du code HTML dans une variable php ...

Posté : 22 juil. 2007, 20:48
par Reisduif
Bonjour à tous,

en fait, quand l'utilisateur sélectionne un produit, j'ai le formulaire qui est automatiquement soumis.

Donc, le but est de créer dynamiquement un tableau reprenant les caractéristiques du produit. Donc, je place le code html dans une variable php puis j'utilise l'instruction "echo" pour afficher le tableau créé. Le problème, c'est que l'utilisateur peut ajouter autant de produit qu'il veut. Donc, je concatène le contenu de mon tableau en y ajoutant un nouveau tableau et ainsi de suite.

Le problème, c'est qu'il n'ajoute apparemment pas le code à la fin de la châine de caractères.

Voici mon code :

<?
  if (isset($_POST["btnSend"]))
  {
    $intCptProducts = (int) $_POST["txtHiddenCptProducts"];
    $strDynamicProductCode = ereg_replace('\"', '"', $_POST["txtHiddenGenerateProductCode"]);
 }
  else
  {
    $intCptProducts = 0;
    $strDynamicProductsCode = "";
  }
?>

<script language="javascript">
<!--
  function ValidateForm()
  {
    document.frmState.txtHiddenCptProducts.value = <?php echo $intCptProducts; ?>;
  }
// -->
</script>

<html>
<head>
<title>Produits - formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="frmProduct" method="post" action="CleverForm.php" onSubmit="return ValidateForm();">
  <table width="90%" border="5" align="center" bgcolor="#CCCCCC">
    <tr>
      <td>
        <div align="center"><font face="Times New Roman, Times, serif" size="6">Aperçu des produits</font></div>
      </td>
    </tr>
  </table>
  <br>
  <table width="90%" border="0" align="center">
    <tr>
      <td>
        <p align="left">
    Produits <select name="cmbProducts" size="1" OnChange="document.frmProduct.getElementById("btnSubmit").click();">
      <option value="0" selected>Faites votre choix</option>
      <option value="1">Banane</option>
      <option value="2">Pomme</option>
      <option value="3">poire</option>
      <option value="4">Prune</option>
      <option value="5">Mandarine</option>
      <option value="6">Clémentine</option>
      <option value="7">Groseille</option>
      <option value="8">Framboise</option>
      <option value="9">Fraise</option>
      <option value="10">Ananas</option>
    </select>
    <br>
<?
    $intWhichProducts = (int) $_POST["cmbProducts"];

    if ($intWhichProducts != 0)
    {
      $intCptProducts++;

      $strDynamicProducts = $strDynamicProductsCode;

      $strDynamicProducts .= "<table width=\"90%\" border=\"1\" align=\"center\">";

      $strDynamicProducts .= "  <tr>";

      switch ($intWhichProducts)
      {
        case 1:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Banane</td>";
          break;
        case 2:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Pomme</td>";
          break;
        case 3:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Poire</td>";
          break;
        case 4:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Prune</td>";
          break;
        case 5:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Mandarine</td>";
          break;
        case 6:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Clémentine</td>";
          break;
        case 7:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Groseille</td>";
          break;
        case 8:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Framboise</td>";
          break;
        case 9:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Fraise</td>";
          break;
        case 10:
          $strDynamicProducts .= "    <td width=\"20%\">".$intCptProducts.". Ananas</td>";
          break;
      }

      $strDynamicProducts .= "    <td width=\"20%\">A. Prix</td>";
      $strDynamicProducts .= "    <td width=\"20%\">B. Quantité</td>";
      $strDynamicProducts .= "    <td width=\"20%\">C. Origine</td>";
      $strDynamicProducts .= "    <td width=\"20%\">D. Commentaire</td>";
      $strDynamicProducts .= "  </tr>";
      $strDynamicProducts .= "</table>";

      echo $strDynamicProducts ;
    }
?>

  <p align="center"> </p>
  <p align="center">&nbsp;</p>
  <p>&nbsp;</p>
      </td>
    </tr>
  </table>
  <p align="center">
    <input type="submit" name="btnSend" id="btnSubmit" value="Envoyer">
  </p>
  <input type="hidden" name="txtHiddenCptProducts">
  <input type="hidden" name="txtHiddenGenerateProductsCode" value="<? print ereg_replace('"', '\"', $strDynamicProducts ); ?>">
</form>
</body>
</html>

Merci d'avance

Thierry

Posté : 23 juil. 2007, 00:31
par Ryle
Peut être est ce parce que tu écrases tes valeurs au lieu de les concaténés :
$strDynamicProductCode = ereg_replace('\"', '"', $_POST["txtHiddenGenerateProductCode"]);
...
$strDynamicProducts = $strDynamicProductsCode; 
Pourquoi ne pas plutôt garder les valeurs sélectionnées (et seulement elles) en session et ne générer le tableau que pour l'affichage ?

Ca sera beaucoup plus simple d'en ajouter, d'en modifier ou d'en enlever, parce que tu vas sérieusement t'amuser pour la retrouver si l'utilisateur a saisi 4 ou 5 lignes et souhaite supprimer la seconde ;)