[RESOLU] pb requete pour redirection

Eléphant du PHP | 250 Messages

02 juil. 2022, 11:15

Bonjour, ma requete ne fonctionne pas et je bloque là dessus
Ici, $msg est bien présent dans la table villes mais la redirection via le header ne se fait pas..
if(isset($_POST['nommer_ville']))
 {
$msg_nom_ville = ($_POST['nommer_ville']);
 }  
 
if (!empty($_POST)) {
$msg = filter_input(INPUT_POST, 'nommer_ville', FILTER_SANITIZE_STRING);
if(strlen($msg)>0){
$msg = strtolower($msg);
$msg = str_replace(' ', '_', $msg);
}
//-- verif du nom de la ville et de ses coordonnées en table villeS 
$pdostat =  $bdd->prepare("SELECT  * FROM villes ");
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat )) { 
$nom_ville = $resultat['nom_ville'];
}
if($nom_ville === '$msg')
{
header('Location:erreur_nommage.html');
exit;
}	
else {
	echo "cest pas good";
}
}
?>
Je pense qu'il faudrait que la requete liste TOUS les champs de la table villes et ainsi faire la vérification? mais je ne sais plus comment on code cela

Mammouth du PHP | 2417 Messages

02 juil. 2022, 14:24

qu'est-ce qu'affiche
echo '$msg';
?

Eléphant du PHP | 250 Messages

02 juil. 2022, 17:30

echo $msg; affiche bien cornell_city

table "villes"

+ Options
Textes complets id nom_ville pos_x_map pos_y_map tile pos_x pos_y
Éditer Éditer Copier Copier Supprimer Supprimer 12 cornell_city 30 90 /relief/tile_entre_ville.gif 30 30
Éditer Éditer Copier Copier Supprimer Supprimer 11 fort_bristol 80 278 /relief/tile_entre_fort.gif 30 30

Mammouth du PHP | 2417 Messages

02 juil. 2022, 17:38

echo $msg; affiche bien cornell_city
non
<?php
$msg = "cornell_city";
echo '$msg';
?>
ce code n'affiche pas cornell_city.

Eléphant du PHP | 250 Messages

02 juil. 2022, 17:54

oui, écris ainsi je suis d'accord mais je ne vois pas bien le rapport ou la finalité... A moins que ce ne soient les quotes ?
en enlevant les quotes
if($nom_ville === $msg)
{
header('Location:erreur_nommage.html');
exit;
}	
ca redirige bien

Avatar du membre
Eléphanteau du PHP | 41 Messages

04 juil. 2022, 15:14

en php les double cote et simple cote ne sont pas utilisé comme dans les autres langages.
double cote et simple cote sont là pour contenir du texte. mais!
-les simple cote vont prendre en compte le texte brute
-les double cote vont prendre en compte le texte qui possiblement peut contenu des variables
si je met une variable dans un simple cote exemple '$msg' il va afficher $msg sans réagir au $ qui indique que c'est une variable
si je met "$msg" là on indique que c'est un contenu qui peut avoir du texte potentiellement et des variables et là il va refaire une passe
et vérifier s'il y a des variables.. tien il y a un $ et là il va afficher le contenu de la variable $msg.
dans ton cas de figure tu as fais une erreur on utilise des doubles cote ou simple cote pour afficher un résultat final
pas pour le tester dans une condition avec «if» comme dans ton dernier code === $msg est correcte
après un strictement égale === j'avoue je ne saurait pas dire si c'est nécessaire. je pense qu'un == est suffisant.
on utilise le strictement égale pour bien éliminé certain contexte comme le fait qu'un texte peut parfois être :
true, 1, et son contenu et on veux que ça soit son contenu strict et rien d'autre.
mais ça ne s'utilise que dans de rare cas.
et je ne pense pas que "cornell_city" soit == "Cornell_city"

a == $b Égal true si $a est égal à $b après le transtypage.
$a === $b Identique true si $a est égal à $b et qu'ils sont de même type.

https://www.php.net/manual/fr/language. ... arison.php