PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 16-12-2018 17:44:50

Gillaume
Membre
Inscription : 16-12-2018
Messages : 3

Ma condition if ne marche pas ( débutant total inside )

Bonsoir à tous,
je débute en Php, et il faut bien commencer un jour en faisant sourire les autres. tongue
Je suis un cours en ligne seul comme un grand.
Linuxien depuis plus de 20 ans, je code sur Geany pour le moment.

J'ai suivi le cours sur les conditions, variables, super globales, les fonctions, et les commandes les plus «utiles».
Je passe beaucoup de temps sur http://php.net/manual.

Dans mon code ( qui ne marche pas ), je voudrais que l'utilisateur rentre une chaîne de caractères et que celle ci
soit renvoyée à l'écran avec la première lettre en majuscule.
Si c'est autre chose, j'aimerais qu'un message d'erreur s'affiche ! wink ( Mais il ne s'affiche pas )

Si vous pouviez me montrer la voix, pour que je commence vraiment...
Mon code mi Php mi Html :

<?php
if (!is_string( $_POST) ) {
    extract ($_POST);
    $resultat = ucfirst($search);
    echo $resultat;
  }
  else {
    echo 'Il faut entrer une chaine de caracteres';
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>sans titre</title>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <meta name="generator" content="Geany 1.24.1" />
</head>
<body>
  <form action="exo1.php" method="post">
    <input type="text" name="search">
    <input type="submit" value="Ecrire">
 
</body>
</html>
 

Guillaume


un rien m'amuse, tout m'agace big_smile

Mal de gorge : rien de mieux qu'un gargarisme avec de l'aspirine effervescent... smile

Hors ligne

#2 16-12-2018 20:06:57

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : Ma condition if ne marche pas ( débutant total inside )

$_POST est toujours un tableau, c'est $_POST['search']; qu'il faut tester.
(et extract() à éviter).

Hors ligne

#3 17-12-2018 19:11:22

Gillaume
Membre
Inscription : 16-12-2018
Messages : 3

Re : Ma condition if ne marche pas ( débutant total inside )

Bonsoir, et merci.
exact, $_POST est un tableau...
Je l'avais zappé. smile

J'ai fait ceci, mais c'est pas mieux.
J'ai beau testé qi c'est une chaine de caractère ou non, ça ne me renvoie pas
la phrase d'erreur que j'ai mis dans else {}


<?php
declare(strict_types=1);

$resultat = ($_POST['search']);
if (is_string($resultat)) {
    echo ucwords($resultat);
  }
  else {
    echo 'vous devez rentrer une chaine !';
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>sans titre</title>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <meta name="generator" content="Geany 1.24.1" />
</head>
<body>
  <form action="exo1.php" method="post">
    <input type="text" name="search">
    <input type="submit" value="Ecrire">
</body>
</html>


un rien m'amuse, tout m'agace big_smile

Mal de gorge : rien de mieux qu'un gargarisme avec de l'aspirine effervescent... smile

Hors ligne

#4 17-12-2018 19:45:43

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : Ma condition if ne marche pas ( débutant total inside )

$_POST est un tableau de chaines donc is_string retournera toujours true.

Hors ligne

#5 22-12-2018 13:16:04

Gillaume
Membre
Inscription : 16-12-2018
Messages : 3

Re : Ma condition if ne marche pas ( débutant total inside )

ok, je reprends mon code présentement ! big_smile

Mais $resultat = ($_POST['search']) devrait me retourner la valeur de ce tableau, non ?

Dernière modification par Gillaume (22-12-2018 13:34:02)


un rien m'amuse, tout m'agace big_smile

Mal de gorge : rien de mieux qu'un gargarisme avec de l'aspirine effervescent... smile

Hors ligne

#6 22-12-2018 21:30:50

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : Ma condition if ne marche pas ( débutant total inside )

oui, mais ensuite la fonction utilisée is_string ne convient pas.
d'après la doc :
is_string('abc') = bool(true)
is_string('23') = bool(true)
is_string('23.5') = bool(true)
is_string('') = bool(true)
is_string(' ') = bool(true)
is_string('0') = bool(true)
à partir du moment où l'on a des '', c'est une chaine donc cela retourne true.
alors que si je ne saisis rien dans la case ou #@)={, cela doit me mettre le message "vous devez rentrer une chaine !", si j'ai bien compris l'énoncé de l'exercice.

Hors ligne

Pied de page des forums