Créer code PHP dynamiquement

Jacques2014
Invité n'ayant pas de compte PHPfrance

10 janv. 2014, 12:53

Bonjour à vous tous :-)
Et bonne année ! :-)

Voici mon soucis :
J'ai ce code qui me permet de créer des "URL" suivant des "cases à cocher" dans un formulaire :
$URLPAGE="recherche";
if ($_POST['pays']!="") {$URLPAGE.="_".$_POST['pays'];} else {}
if ($_POST['guitare']!="") {$URLPAGE.="_".$_POST['guitare'];} else {}
if ($_POST['contrebasse']!="") {$URLPAGE.="_".$_POST['contrebasse'];} else {}
if ($_POST['batterie']!="") {$URLPAGE.="_".$_POST['batterie'];} else {}
// ...etc.

// puis :
$URLPAGE=$URLPAGE.".html";

Header("Location: $URLPAGE");

Ce qui me permet d'avoir dans l'url les critères sélectionnés de la personne qui recherche un titre.

Cela fonctionne très bien :-)
Mais j'aimerai créer la liste des "if ($_POST['..." dynamiquement.
Les infos sont dans une table et j'aimerai que ces "IF" soient inscris (dans mon fichier PHP) autant de fois qu'il y a de critères dans la table.
Mais surtout qu'il puisse prendre les modifications et autres suppressions/Ajouts sans que j'intervienne à chaque fois dans le fichier "url.php".

J'ai essayé ça :
$sqlCrit  = "SELECT * FROM $crit WHERE 1 ORDER BY order ASC";
$resCrit = mysql_query($sqlCrit)or die ('ERREUR  : '.$sqlCrit  .' '.mysql_error());
while ($enrCrit = mysql_fetch_array($resCrit)) 
{
$Crit_rw=trim($enrCrit['specs_rw']);

echo 'if ($_POST["'.$Crit_rw.'"]!="") {$URLPAGE.="_'.$Crit_rw.'"];} else {}";
// J'ai même essayé avec un "print" un "printf()"
}
Mais cela ne fonctionne pas :'-(

Auriez vous une idée ? Est ce envisageable ?

Merci
Jacques

ViPHP
xTG
ViPHP | 7331 Messages

10 janv. 2014, 14:06

Un array avec tes paramètres, ensuite plus qu'à identifier ce que tu reçois de $_POST :
foreach($_POST as $index => $valeur)
{
  // on teste que l'index existe dans notre array
  if( in_array($Crit_rw, $index) )
  {
    if( !empty($valeur) )
    {
      $URLPAGE .= "_".$valeur;
    }
  }
}

Jacques2014
Invité n'ayant pas de compte PHPfrance

10 janv. 2014, 14:55

xTG,
Merci de ta réponse et aide.

Mais je ne vois pas comment (et ou) mettre le code que tu m'as donné ?

Je vais quand même faire des tests...

Merci

Jacques

Jaques2014
Invité n'ayant pas de compte PHPfrance

10 janv. 2014, 15:12

xTG,
J'ai essayé ceci :
$sqlCrit  = "SELECT * FROM $crit WHERE 1 ORDER BY order ASC";
$resCrit = mysql_query($sqlCrit)or die ('ERREUR  : '.$sqlCrit  .' '.mysql_error());
while ($enrCrit = mysql_fetch_array($resCrit))
{
$Crit_rw=trim($enrCrit['specs_rw']);

foreach($_POST as $index => $valeur)
{
  // on teste que l'index existe dans notre array
  if( in_array($Crit_rw, $index) )
  {
    if( !empty($valeur) )
    {
      $URLPAGE .= "_".$valeur;
    }
  }
}
}
Et j'ai ce message d'erreur :
Warning: in_array() [function.in-array]: Wrong datatype for second argument in C:\wamp\www\django\url.php on line 28
Et la ligne 28 correspond à :
if( in_array($Crit_rw, $index) )
J'ai du me planter quleque part !

Merci

Jacques

Jacques2014
Invité n'ayant pas de compte PHPfrance

10 janv. 2014, 15:25

xTG,

Pfff ! Je n'ai plus les yeux en face des trous...

Merci cela fonctionne parfaitement.

Au lieu de me créer la liste des possibles critères sélectionnables (!)
Je n'utilise ceux réellement "cochés".

Merci grandement !

Jacques