Type de la variable _POST

Bonjour,

je dois récuperer le titre d'un livre dans un formulaire à l'aide d'un select et afficher le contenu du livre selectionné.
mon formulaire:
<?php
if ($handle = opendir('.'))
{
echo "<form action=\"traitement.php\" method=\"post\">Quel texte voulez-vous etudier?<select name=\"titres\" size=\"3\" multiple>";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && strstr($file,".txt") != NULL)
{
$fichier = fopen($file, 'r');
$ligne = fgets($fichier);//lire ligne 1
echo "<option value=\"$ligne\">$ligne</option>";
fclose($file);
}
}
closedir($handle);
echo "</select><br><input type=\"submit\" name=\"Valider\" value=\"Valider\">";
}
?>

et dans le 2e php je dois verifier le choix du livre:
<?php
$variable = $_POST['titres'];
echo $variable;
if($_POST['titres']=="La colère d'Arthur"){
echo "<br>toto";

}
if($variable=="Jack et le haricot magique"){
echo "toto";

}
if($variable=="La chèvre de M. Seguin"){

}

?>

le probleme est que je ne rentre jamais dans mon if et je ne sais pas pourquoi :s
si quelqu'un pouvait m'aider svp
merci

3 réponses

  1. Bonjour php3,

    C'est sûrement un problème d'encodage
    Regarde en quel codage de caractère tu écris ta page HTML et quel est l'encodage de la chaîne de comparaison côté PHP
    1. Sans oublier l'encodage des fichiers dans lesquels tu récupères tes titres de livres.
  2. Bonjour,

    Certainement quelques clés pour vous aider à comprendre votre problème:
    http://html5.immo-scope.com/index.php?page=general/applisFullUtf8

    Cordialement
    1. re-bonjour,

      la recherche d'un livre par son titre est déconseillé.

      Si vous cherchez les élémenst en base de données, il faut avoir un couple clé-valeur:
      clé = numéro ISBN du libre / ou code du livre: HUG001 par exemple...
      valeur = titre du livre....

      Exemple

      <select name='cle_livre'>
      <option value='HUG001'>Les miésrables</option>
      <option value='HUG002'>Notre Dame de Paris</option>
      .....
      </select>

      A l'envoi du POST, vous récupérez la clé:

      <?php
      $cleLivre = substr($_POST['cle_livre'], 0 , 6); // sécurité pour empêcher injection SQL

      $sql = "SELECT * FROM livres WHERE cle_livre='$cleLivre' LIMIT 0,1";
      ...suite code extraction données livre...
      ?>

      Bien entendu, le champ cle_livre est un champ indexé uniqu ou primaire (c'est mieux...).

      A+
      1. Sauf que là, il n'y a pas de base de données :)