stripslashes coupe mon mot !!!!!

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 15:06

Bonjour, j'ai un formulaire avec des "select on change submit" comme ci dessous :
<select name='Source' onchange='this.form.submit()'>
<?
If ((isset($_GET['Source']))) echo"<option value='".stripslashes($_GET['Source'])."'>".stripslashes($_GET['Source'])."</option>";
?>
<option value="Tous">Tous</option>
<option value="Centre d'appels">Centre d'appels</option>
<option value="Autres">Autres</option>
</select>
Si je choisis 'Centre d'appel', cela s'affiche correctement au debut de ma liste SOURCE.
Mais des que je fais un choix ailleur et que je suis sur centre d'appel, il le reaffiche comme ceci : Centre d

Quelqu'un peut il m'aider
Merci[/b]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juil. 2005, 15:09

Dans ton cas, tu n'as pas l'utilité de stripslashes car tu ne fait pas d'injection SQL et que tes variables sont or des chaines

Je pense que ceci devrait fonctionner
value="'".$_GET['Source']."'>".$_GET['Source']."</option>"; 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 15:14

Merci Zeus de t'interesser a mon probleme,

Malherueusement, si j'essaye d'utiliser stripslashes, c'est que justement il me met des \ (des le premier choix il affiche Centre d\'appels et plus je manipule plus il ajoute des \\\\).

Effectivement a ce niveau je n'insert rien dans la base.....

Je comprends pas

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 15:16

Le seul endroit ou intervient $Source, c'est plus bas dans le formulaire que je valide, apres mes different choix on submit..

Donc dans l'autre formulaiure j'ai ceci...

<input type="hidden" name="Source" value="<?php echo $Source;?>">

Mais la, je valide pas le formulaire alors c'est pas ca ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juil. 2005, 15:20

rien à voir avec le problème mais est-ce que c'est exprès que tu affiches en premier la valeur qui a été sélectionnée ?

tu pourrais plus simplement pré-positionner la liste sur la valeur choisie en faisant le même test et en inscrivant ou non "SELECTED" dans tes balises <option>

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 15:26

Oui c'est normal, c'est un formulaire de pre selection, pour detailler la recherche....

ensuite j'envoie tous les criteres avec hidden

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juil. 2005, 15:35

Oui c'est normal, c'est un formulaire de pre selection, pour detailler la recherche....

ensuite j'envoie tous les criteres avec hidden
je ne comprend pas bien le rapport avec ma question mais bon...

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 16:31

Pour les ames charitables qui se pencheront sur ce probleme, j'ai sorti ce petit code, qui a l'execution montre bien le probleme

<?php
if ((isset($_GET['Source']))) $Source=stripslashes($_GET['Source']);
echo $Source;

echo "<FORM METHOD='GET' name='Prerecherche'>";

echo "Source :<select name='Source' onchange='this.form.submit()'>";
If ((isset($Source))) { echo'<option value='.$Source.'>'.$Source.'</option>'; }
echo "<option value='Tous'>Tous</option>";
echo "<option value='Centre d'appels'>Centre d'appels</option>";
echo "<option value='Autres'>Autres</option>";
echo "</select>";

echo "autre modif :<select name='Autre' onchange='this.form.submit()'>";
If ((isset($Autre))) { echo'<option value='.$Autre.'>'.$Autre.'</option>'; }
echo "<option value='Tous'>Tous</option>";
echo "<option value='Toto'>Toto</option>";
echo "<option value='Autres'>Autres</option>";
echo "</select>";

echo "</form>";
?>
A l'avance merci

Mammouth du PHP | 19672 Messages

15 juil. 2005, 16:41

Deux choses : d'abord, ton code est inutilement lourd: pourquoi faire interpréter du HTML par PHP ?
<?php
if ((isset($_GET["Source"])))
{
    $Source = stripslashes($_GET["Source"]);
}
echo $Source;
?>
<FORM METHOD="GET" name="Prerecherche">
Source :<select name="Source" onchange="this.form.submit()">
<?php
If ((isset($Source)))
{
    ?>
  <option value="<?php echo($Source); ?>"><?php echo($Source); ?></option>
    <?php
}
?>
  <option value="Tous">Tous</option>
  <option value="Centre d'appels">Centre d'appels</option>
  <option value="Autres">Autres</option>
</select>
autre modif :<select name="Autre" onchange="this.form.submit()">
<?php
If ((isset($Autre)))
{
    ?>
  <option value="<?php echo($Autre); ?>"><?php echo($Autre); ?></option>
    <?php
}
?>
  <option value="Tous">Tous</option>
  <option value="Toto">Toto</option>
  <option value="Autres">Autres</option>
</select>
</form>
De cette manière, d'une part c'est plus propre mais c'est plus facile à lire et surtout plus efficace.

Ensuite : tu dis que tu as des problèmes ? de quel ordre ? as-tu des messages d'erreur de quoique ce soit ? Ou bien il faut deviner :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 16:44

Salut cyrano, Je n'ai aucun message d'erreur...

Simplement si tu test mon petit code que tu choisi centre d'appels, puis que dans autre tu fais un choix, et bien il m'affiche pas centre d'appel correctement...

Je sais que ca vient de ' , mais ....

Roups
Invité n'ayant pas de compte PHPfrance

15 juil. 2005, 16:51

Un grand merci Cyrano, ca marche, serais ce abuser que de te demander les changements effrectués...

Parce que là, je pige pas ....

Mammouth du PHP | 19672 Messages

15 juil. 2005, 18:18

Pour l'exercice, reprends ton ancien code et essaye de le nettoyer de la manière dont je l'ai fait: tu vas forcément trouver l'erreur toi-même. Regarde un détail à propos des apostrophes / guillemets aussi, ça t'inspirera peut-être.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: