Formulaire

d0m
Mammouth du PHP | 1141 Messages

05 mars 2008, 16:45

L'idée est de vérifier si la mise en minuscule de ta réponse est égale à paris:
<?php
if (strtolower($_POST['reponse'])=='paris')
  header('Location: paris.php');
else
  header('Location: bowling2.php');
?>
mais là tu ne gères pas encore les accents...

Eléphanteau du PHP | 24 Messages

05 mars 2008, 17:04

L'idée est de vérifier si la mise en minuscule de ta réponse est égale à paris:
<?php
if (strtolower($_POST['reponse'])=='paris')
  header('Location: paris.php');
else
  header('Location: bowling2.php');
?>
mais là tu ne gères pas encore les accents...

merci...oui là je nai traité que le passage en "low" caractère, je voulais le faire pas à pas pour être sur de bien comprendre.
je vais maintenant chercher pour les caractères accentuer.

Invité
Invité n'ayant pas de compte PHPfrance

05 mars 2008, 20:52

Bonsoir,

comme je lai dis précédemment aucun soucis avec la focntion strtolower(), ca marche très bien.
Par contre quand je veux intégrer la gestion des caractères accentués, je cafouille un peu :

Code : Tout sélectionner

<?php if (isset($_POST['reponse'])) { if ((strtolower($_POST['reponse'])=='sous vos yeux') && strtr($_POST['reponse']),"é","e") header('Location: sousvosyeux.php'); else header('Location: index.php');} ?>
est ce que jutilise bien la bonne méthode pour concaténer les deux fonctions ?

ViPHP
ViPHP | 4674 Messages

05 mars 2008, 23:12

Mais pourquoi ne pas utiliser un bouton radio plutôt que de rentrer le texte à la main ? Ce serait tellement plus simple ... Et moins l'utilisateur a à travailler, et mieux il se porte ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Invité
Invité n'ayant pas de compte PHPfrance

05 mars 2008, 23:42

Bonsoir,

tout simplement parce que je fais un site avec des questions où l'utilisateur doit trouver la bonne réponse et je voudrais avoir une certaine marge d'erreur dans la réponse qu'il fournira.
:D

d0m
Mammouth du PHP | 1141 Messages

06 mars 2008, 09:34

Pour enlever les accents, rien de mieux qu'une fonction générique qui le fait automatiquement.

Tu peux par exemple utiliser dans ta fonction la fonction strtr

Il y a un exemple dans le manuel pour remplacer les accents :
<?php
$addr = strtr($addr, "äâö", "aao");
?>
Ce qui a pour effet de remplacer les caractères ä et â par a et ö par o.
grâce deviendra ainsi grace

Il te suffit donc de passer dans le 2ème argument tous les caractères accentués et dans le 3ème les mêmes caractères sans accents.

Eléphanteau du PHP | 24 Messages

06 mars 2008, 11:44

Pour enlever les accents, rien de mieux qu'une fonction générique qui le fait automatiquement.

Tu peux par exemple utiliser dans ta fonction la fonction strtr

Il y a un exemple dans le manuel pour remplacer les accents :
<?php
$addr = strtr($addr, "äâö", "aao");
?>
Ce qui a pour effet de remplacer les caractères ä et â par a et ö par o.
grâce deviendra ainsi grace

Il te suffit donc de passer dans le 2ème argument tous les caractères accentués et dans le 3ème les mêmes caractères sans accents.

Jai compris le fonctionnement de la fonction strtr, jarrive à l'utiliser dans un programme simple,
mais quand je veux l'intégrer dans ma page en la combinant avec srttolower(), ca cafouillle.
Je ne sais pas si jutilise la bonne méthode avec le && ou si je dois rajouter un condition avec un if supplémentaire.

Code : Tout sélectionner

<?php if (isset($_POST['reponse'])) { if ((strtolower($_POST['reponse'])=='element') && strtr($_POST['reponse']) == 'element'),"éè","ee") header('Location: bravo.php'); else header('Location: index.php');} ?>
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

d0m
Mammouth du PHP | 1141 Messages

06 mars 2008, 12:04

tu l'utilises mal.

Si tu regardes la documentation de la fonction, il faut passer :
- en 1er argument la chaine original (ou on doit remplacer)
- en 2e argument les caractères à remplacer
- en 3e argument les caractères qui vont remplacer

toi tu essaie de passer une expression comme 1er argument :
strtr($_POST['reponse']) == 'element'),"éè","ee")
et tu te plantes dans les parenthesages.

il faut remplacer :
strtr($_POST['reponse'],"éè","ee")
et vérifier que ce remplacement est le mot que tu veux :
if(... && ( strtr($_POST['reponse'],"éè","ee") == 'element' ) )

Eléphanteau du PHP | 24 Messages

06 mars 2008, 20:29

Jai reflechi sur le sujet une bonne partie de laprès midi...
Je reprends du début...
1/Si je prends la fonction strtolower() seule ca fonctionne :

Code : Tout sélectionner

<?php if (isset($_POST['reponse'])) { if (strtolower($_POST['reponse'])=='element') header('Location: element.php'); else header('Location: test.php'); } ?>
en saisissant par exemple ELeMent je passe bien sur element.php

2/Si je prends la fonction strtr() seule ca fonctionne aussi :

Code : Tout sélectionner

<?php if (isset($_POST['reponse'])) { if (strtr($_POST['reponse'],"éè","ee") == 'element' ) header('Location: element.php'); else header('Location: test.php'); } ?>
en saisissant élèment je passe également sur la page suivante.

3/ si je veux combiner les deux, ca ne marche plus :

Code : Tout sélectionner

<?php if (isset($_POST['reponse'])) { if ((strtr($_POST['reponse'],"éè","ee") == 'element' ) && (strtolower($_POST['reponse'])=='element')) header('Location: element.php'); else header('Location: test.php'); } ?>
seule la saisie de element fais avancer.

J'ai ensuite essayé comme suit :

Code : Tout sélectionner

<?php if (isset($_POST['reponse'])) { if (strtolower(strtr($_POST['reponse'],"éè","ee") == 'element' )) header('Location: element.php'); else header('Location: test.php'); } ?>
ya du progrès lol la saisie de element ou élèment fonctionne :)
par contre ELeMEnt ne fonctionne pas.

suis-je sur la bonne voie ?
merci d'avance pour votre aide.
jai aussi essyé de declarer une variable (avant le if) qui transforme en lower et ensuite dappliquer strtr sur cette variable mais sans succès :/

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 4674 Messages

06 mars 2008, 20:47

(s'il te plaît, penses à te connecter avant de poster)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 24 Messages

06 mars 2008, 20:57

(s'il te plaît, penses à te connecter avant de poster)
oui désolé, mais jai beaucoup de mal a me connecter et quand je veux poster, ca me dis souvent que je ne peux pas répondre à mon message :?

ViPHP
ViPHP | 4674 Messages

06 mars 2008, 20:59

Oui, le double-post n'est pas autorisé (ça évite le flood). Il faut éditer ton précédent message si tu veux ajouter des choses :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 24 Messages

06 mars 2008, 21:06

Merci c'est bon à savoir pour la prochaine fois :)

d0m
Mammouth du PHP | 1141 Messages

07 mars 2008, 09:52

Code : Tout sélectionner

if (strtolower(strtr($_POST['reponse'],"éè","ee") == 'element' )) header('Location: element.php');
Ton problème semble être que tu essaies de bricoler des choses sans vraiment assez réfléchir à ce que tu fais.

Avant de coder, écris textuellement ce que tu veux faire :
Tu as une chaine qui fait office de réponse entrée par l'utilisateur qui peut contenir des accents et des majuscule. Toi tu veux tout en minuscule sans accents.
1ère étape : remplacer les caractères accentués de la réponse par les mêmes caractères sans accent. Ça donne une chaine2
2ème étape : mettre la chaine2 en minuscule. Ça donne la chaine 3.
3ème étape : comparer la chaine 3 à la bonne réponse.

Si tu as du mal, avant de faire tout en une ligne fait le en plusieurs :
<?php
if (isset($_POST['reponse'])) {
  $chaine2 = strtr($_POST['reponse'],"éè","ee");
  $chaine3 = strtolower($chaine2)
  if ($chaine3 == 'element' )
    header('Location: element.php');
  else 
    header('Location: test.php');
}
?>
Ensuite, pour faire tout en une ligne, il te suffit de remplacer dans la ligne
 if ($chaine3 == 'element' )
$chaine3 par son égalité, de même dans $chaine3 avec $chaine2...