A voir également:
- PHP - else non pris en compte
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Supprimer compte instagram - Guide
- Créer un compte instagram sur google - Guide
- Gmail connexion autre compte - Guide
13 réponses
Utilisateur anonyme
23 juin 2014 à 19:22
23 juin 2014 à 19:22
Bonjour
J'ai même fait juste : if (!empty($_POST['rooms']))
Et tu as eu parfaitement raison. empty teste si la variable existe, il n'y aucun danger à employer empty sur une variable inexistante, et il est totalement inutile de tester avec isset avant, ça fait double emploi.
Pour en revenir à ta question initiale, il n'y a pas assez long de code pour se faire un avis. En particulier, on ne voit pas où tu affiches ton erreur : on voit seulement que tu le mets dans une variable $e_rooms, mais tu n'affiches pas cette variable.
Si tu ne l'affiches que bien plus loin et qu'entre temps tu as essayer d'utiliser la valeur de $_POST['rooms'], c'est normal que ça ne marche pas.
Au passage, rassure-moi : $_POST['rooms'] désigne bien un tableau de champs de saisie, pas un champ seul ?
J'ai même fait juste : if (!empty($_POST['rooms']))
Et tu as eu parfaitement raison. empty teste si la variable existe, il n'y aucun danger à employer empty sur une variable inexistante, et il est totalement inutile de tester avec isset avant, ça fait double emploi.
Pour en revenir à ta question initiale, il n'y a pas assez long de code pour se faire un avis. En particulier, on ne voit pas où tu affiches ton erreur : on voit seulement que tu le mets dans une variable $e_rooms, mais tu n'affiches pas cette variable.
Si tu ne l'affiches que bien plus loin et qu'entre temps tu as essayer d'utiliser la valeur de $_POST['rooms'], c'est normal que ça ne marche pas.
Au passage, rassure-moi : $_POST['rooms'] désigne bien un tableau de champs de saisie, pas un champ seul ?
makitoch
Messages postés
730
Date d'inscription
samedi 14 juin 2014
Statut
Membre
Dernière intervention
28 octobre 2020
78
Modifié par makitoch le 22/06/2014 à 17:12
Modifié par makitoch le 22/06/2014 à 17:12
Si il ignore le else c'est que la condition est tout le temps vrai.
Dans ta base SQL, la colone de la table qui correspond à 'rooms' est de quel type?
edit: la ligne "$valid=false;" est lisible ou c'est juste "$e_rooms = 'Le champs "Nombre de pièces" est requis';"
Dans ta base SQL, la colone de la table qui correspond à 'rooms' est de quel type?
edit: la ligne "$valid=false;" est lisible ou c'est juste "$e_rooms = 'Le champs "Nombre de pièces" est requis';"
Mes <select multiple='multiple'> pour ville et rooms ont chacun : <option value='' selected='selected'> Choisir </option> donc, d'entrée $_POST['ville'] et $_POST['rooms'] sont empty.
Si je submit mon form sans sélectionner ni ville ni rooms, j'ai erreur sql... mais pas de $erreur ='Veuillez sélectionner une ville // ou un nb de pièces';
Si je sélectionne une ou plusieurs villes + un ou plusieurs nombres de pièces, pas d'erreur sql.
J'ai viré mes $valid=true ou false, et je reste avec mes else ignorés... Je ne comprends pas pourquoi.
Merci !
Si je submit mon form sans sélectionner ni ville ni rooms, j'ai erreur sql... mais pas de $erreur ='Veuillez sélectionner une ville // ou un nb de pièces';
Si je sélectionne une ou plusieurs villes + un ou plusieurs nombres de pièces, pas d'erreur sql.
J'ai viré mes $valid=true ou false, et je reste avec mes else ignorés... Je ne comprends pas pourquoi.
Merci !
Bonne question. Effectivement j'avais un ptit soucis aussi de ce côté-là.
Elle est en varchar 50. Car j'ai Studio, Loft, 2, 3, 4 etc....
Mais si $_POST['rooms'] valait Studio, j'avais Unknown column Studio.... donc j'ai changé <option value="Studio"> Studio </option> en <option value="1"> Studio </option>, et j'ai supprimé <option value='Loft'>Loft</option>.
Tu penses que ça vient de là ?
Car j'ai problème identique de else non pris en compte avec if(empty($_POST['ville'])) <option value=ville_id> Ville nom</option>. table ville_id = int
Merci
Elle est en varchar 50. Car j'ai Studio, Loft, 2, 3, 4 etc....
Mais si $_POST['rooms'] valait Studio, j'avais Unknown column Studio.... donc j'ai changé <option value="Studio"> Studio </option> en <option value="1"> Studio </option>, et j'ai supprimé <option value='Loft'>Loft</option>.
Tu penses que ça vient de là ?
Car j'ai problème identique de else non pris en compte avec if(empty($_POST['ville'])) <option value=ville_id> Ville nom</option>. table ville_id = int
Merci
makitoch
Messages postés
730
Date d'inscription
samedi 14 juin 2014
Statut
Membre
Dernière intervention
28 octobre 2020
78
Modifié par makitoch le 22/06/2014 à 18:05
Modifié par makitoch le 22/06/2014 à 18:05
je pense que tu peux pas demander en même temps si la valeur existe et si elle est vide.
car si la valeur n'existe pas le serveur continuera le traitement normalement et tu auras une erreur sur le faite que la variable qu'il n'existe pas soit vide ou non.
En gros pour moi faudra plutot faire qu'elle que chose du style
if: existe
alors on test if : vide
tu imbrique les if sa évitera que le programme regarde si la variable est vide ou non Alors que elle n'existe pas
car si la valeur n'existe pas le serveur continuera le traitement normalement et tu auras une erreur sur le faite que la variable qu'il n'existe pas soit vide ou non.
En gros pour moi faudra plutot faire qu'elle que chose du style
if: existe
alors on test if : vide
tu imbrique les if sa évitera que le programme regarde si la variable est vide ou non Alors que elle n'existe pas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Quand je refais toute l'imbrication dans ce style :
ben plus aucun résultat ne s'affiche. Ni code d'erreur mysql ou php, ni mes $error ="Veuillez sélectionner.. ceci ou cela"; ni résultats de la recherche . Génial.
C'est pour ça que j'avais fait des if (){} else{} if(){} else{}
Je donne ma langue au chat !
Merci pour le coup d'oeil en tous cas
if( isset($_POST['rooms']) && !empty($_POST['rooms'])) { $_POST['rooms'] = array_map('mysql_real_escape_string',$_POST["rooms"]); if(isset($_POST['surface_min']) && !empty($_POST['surface_min'])) { $surface_min = mysql_real_escape_string($_POST['surface_min']); if(isset($_POST['surface_max']) && !empty($_POST['surface_max'])) { $surface_max= mysql_real_escape_string($_POST['surface_max']); if( !empty($_POST['ville'])) { $_POST['ville'] = array_map('mysql_real_escape_string',$_POST["ville"]);
ben plus aucun résultat ne s'affiche. Ni code d'erreur mysql ou php, ni mes $error ="Veuillez sélectionner.. ceci ou cela"; ni résultats de la recherche . Génial.
C'est pour ça que j'avais fait des if (){} else{} if(){} else{}
Je donne ma langue au chat !
Merci pour le coup d'oeil en tous cas
makitoch
Messages postés
730
Date d'inscription
samedi 14 juin 2014
Statut
Membre
Dernière intervention
28 octobre 2020
78
22 juin 2014 à 19:04
22 juin 2014 à 19:04
du coup c'est bien le if( isset($_POST['rooms']) && !empty($_POST['rooms'])) qui pose problème
makitoch
Messages postés
730
Date d'inscription
samedi 14 juin 2014
Statut
Membre
Dernière intervention
28 octobre 2020
78
22 juin 2014 à 19:05
22 juin 2014 à 19:05
essaye de faire comme ça if( isset($_POST['rooms']) ) { if(!empty($_POST['rooms'])) {} }
Merci le père pour ta réponse à ce sujet.
ok, plus de isset && !empty pour un seul et même champ à vérifier. Tant mieux !
j'ai posté chez la concurrence http://www.developpez.net/forums/d1452296-nouveau/php/langage/else-non-pris-compte , si ça te dit de m'aider. Mais on peut tout à fait rester ici, pour en discuter.
$_POST['rooms'] est un select multiple. Si empty, je souhaite afficher $e_rooms qui a bien un span qui l'attend <?php if(isset($e_rooms)) echo le !!! ?>, else on continue la procédure.
Lorsque une ou plusieurs valeurs sont sélectionnées sur $_POST['rooms'], pas de soucis, pas d'erreur sql.
A te lire,
ok, plus de isset && !empty pour un seul et même champ à vérifier. Tant mieux !
j'ai posté chez la concurrence http://www.developpez.net/forums/d1452296-nouveau/php/langage/else-non-pris-compte , si ça te dit de m'aider. Mais on peut tout à fait rester ici, pour en discuter.
$_POST['rooms'] est un select multiple. Si empty, je souhaite afficher $e_rooms qui a bien un span qui l'attend <?php if(isset($e_rooms)) echo le !!! ?>, else on continue la procédure.
Lorsque une ou plusieurs valeurs sont sélectionnées sur $_POST['rooms'], pas de soucis, pas d'erreur sql.
A te lire,
Utilisateur anonyme
23 juin 2014 à 22:16
23 juin 2014 à 22:16
C'est bien ce que je te disais.
Tu exécutes ta requête même si $_POST['rooms'] ou $_POST['ville'] sont vides. Or, la requête est incorrecte dans ce cas là. Donc ton programme râle et s'arrête, j'en ferais autant à sa place ;-)
Il ne faut pas que tu laisses ton script continuer, ou en tous cas pas passer par ta requête incorrecte.
Tu exécutes ta requête même si $_POST['rooms'] ou $_POST['ville'] sont vides. Or, la requête est incorrecte dans ce cas là. Donc ton programme râle et s'arrête, j'en ferais autant à sa place ;-)
Il ne faut pas que tu laisses ton script continuer, ou en tous cas pas passer par ta requête incorrecte.
Ok, je vais revoir mon imbrication quant-à ces 2 select majeurs, mais j'ai déjà essayé de les combiner : if(!empty rooms && ville) {continue} else {stop}, mais sans succès. Ce qui me parait illogique parce que si à la place de else{$surface_min='0';} je mets else{$e_surface_min ="erreur"}, mon erreur s'affiche et le script ne continue pas.
La nuit porte conseil et pendant mon sommeil je continue à développer (help me !!!!), donc peut--être que demain matin je me réveillerai avec un success ...
Stay tuned :P
Merci :)
La nuit porte conseil et pendant mon sommeil je continue à développer (help me !!!!), donc peut--être que demain matin je me réveillerai avec un success ...
Stay tuned :P
Merci :)
LePère, Si tu connais la solution, dis-la moi, si elle est si évidente que ça.
J'ai écrit et enregistré mon code en 20 versions à chaque fois sur un fichier différent, aucune n'a fonctionné. Et quand enfin j'ai eu mon $e_rooms_ville = "Veuillez renseigner nb de pièces et ville"; et que j'ai enregistré ce code au dessus du premier (page20.php sur page_originale.php), ça m'a refait erreur sql...
Donc si pour toi la solution saute aux yeux, est-ce que tu serais assez gentil pour me la faire partager ? Merci
J'ai utilisé le système d pour éviter d'avoir une erreur sql, mais qui n'affiche pas les messages tant attendus : "Veuillez renseigner ces p*** de champs !",
J'affiche à la place "Aucun bien ne correspond à votre recherche".. alors que ce n'est pas ça que je veux afficher dans ce cas.
J'ai écrit et enregistré mon code en 20 versions à chaque fois sur un fichier différent, aucune n'a fonctionné. Et quand enfin j'ai eu mon $e_rooms_ville = "Veuillez renseigner nb de pièces et ville"; et que j'ai enregistré ce code au dessus du premier (page20.php sur page_originale.php), ça m'a refait erreur sql...
Donc si pour toi la solution saute aux yeux, est-ce que tu serais assez gentil pour me la faire partager ? Merci
J'ai utilisé le système d pour éviter d'avoir une erreur sql, mais qui n'affiche pas les messages tant attendus : "Veuillez renseigner ces p*** de champs !",
J'affiche à la place "Aucun bien ne correspond à votre recherche".. alors que ce n'est pas ça que je veux afficher dans ce cas.
Utilisateur anonyme
25 juin 2014 à 08:34
25 juin 2014 à 08:34
J'étais absent hier.
Il y a beaucoup de choses que je ne comprends pas. Ton sujet est marqué comme résolu le 22 juin sur developpez.net alors que nous en parlions encore le 23. Et il me semble qu'il y avait l'intégralité du code source. Je ne la vois plus.
Où en es-tu ?
Il y a beaucoup de choses que je ne comprends pas. Ton sujet est marqué comme résolu le 22 juin sur developpez.net alors que nous en parlions encore le 23. Et il me semble qu'il y avait l'intégralité du code source. Je ne la vois plus.
Où en es-tu ?
Pas de problème. Je sais qu'on a tous une vie, et c'est gentil de me répondre.
C'est bon j'ai retrouvé le seul code qui marche parmi ma vingtaine de versions et de réimbrications. C'est celui là :
if ($_POST['type_de_bien']== 'Appartement' && empty($_POST['rooms']) OR empty($_POST['ville'])).
Mais si je dis :
($_POST['type_de_bien']== 'Appartement' && !empty($_POST['rooms']) && !empty($_POST['ville'])) {continue} else{stop}- là ça marche pas, ni aucune autre sorte d'imbrication.
Si je fais :
if ($_POST['type_de_bien']== 'Appartement)
{ if(empty($_POST['rooms'])) // 'Veuillez renseigner rooms'; // ça marche pas non plus --> mon script continue à s'exécuter jusquà erreur sql,
Ca m'a rendue dingue. Selon toi, ce comportement php est tout à fait normal?
Bon si oui, lol, ok, j'ai compris. Je n'avais pas clairement imprimé la subtilité. Tiens je vais m'en faire un tatouage ! (joke)
Effectivement balancer mon code intégral ne servait à rien, tout se jouait dans les 5 premières lignes.
Merci pour avoir regardé.
Bonne journée
C'est bon j'ai retrouvé le seul code qui marche parmi ma vingtaine de versions et de réimbrications. C'est celui là :
if ($_POST['type_de_bien']== 'Appartement' && empty($_POST['rooms']) OR empty($_POST['ville'])).
Mais si je dis :
($_POST['type_de_bien']== 'Appartement' && !empty($_POST['rooms']) && !empty($_POST['ville'])) {continue} else{stop}- là ça marche pas, ni aucune autre sorte d'imbrication.
Si je fais :
if ($_POST['type_de_bien']== 'Appartement)
{ if(empty($_POST['rooms'])) // 'Veuillez renseigner rooms'; // ça marche pas non plus --> mon script continue à s'exécuter jusquà erreur sql,
Ca m'a rendue dingue. Selon toi, ce comportement php est tout à fait normal?
Bon si oui, lol, ok, j'ai compris. Je n'avais pas clairement imprimé la subtilité. Tiens je vais m'en faire un tatouage ! (joke)
Effectivement balancer mon code intégral ne servait à rien, tout se jouait dans les 5 premières lignes.
Merci pour avoir regardé.
Bonne journée
Utilisateur anonyme
25 juin 2014 à 12:21
25 juin 2014 à 12:21
Effectivement balancer mon code intégral ne servait à rien, tout se jouait dans les 5 premières lignes
Bien sûr que si, ça servait ! Ce n'est pas parce que tu as obtenu le bon résultat en modifiant les quelques premières lignes que la connaissance du reste était inutile !
Pour autant que je me rappelle ton code, tel qu'il était écrit, tu exécutais ta requête dès que le if ($_POST['type_de_bien']== 'Appartement) était vrai, que $_POST['rooms'] ou $_POST['ville'] soient définis ou non.
Tu me demandes si ce comportement de php est normal, mais n'ayant pas le programme, je ne peux pas en juger. Ce qui est clair, c'est que tes trois conditions ne veulent pas dire la même chose, donc pas étonnant que les comportements diffèrent. Soit dit en passant, je trouve ton code "qui marche" parfaitement illogique, mais sans connaître ton application ce n'est qu'un préjugé de ma part.
Bonne continuation
Bien sûr que si, ça servait ! Ce n'est pas parce que tu as obtenu le bon résultat en modifiant les quelques premières lignes que la connaissance du reste était inutile !
Pour autant que je me rappelle ton code, tel qu'il était écrit, tu exécutais ta requête dès que le if ($_POST['type_de_bien']== 'Appartement) était vrai, que $_POST['rooms'] ou $_POST['ville'] soient définis ou non.
Tu me demandes si ce comportement de php est normal, mais n'ayant pas le programme, je ne peux pas en juger. Ce qui est clair, c'est que tes trois conditions ne veulent pas dire la même chose, donc pas étonnant que les comportements diffèrent. Soit dit en passant, je trouve ton code "qui marche" parfaitement illogique, mais sans connaître ton application ce n'est qu'un préjugé de ma part.
Bonne continuation
L'architecture de base :
testé avec 50 types d'imbrications à l'intérieur if ($_POST['type_de_bien']== 'Appartement' ) lorsqu'à appart sélectionné.
Enfin bref, subtilités du php enregistrées!
Merci
if(isset($_POST['submit_rechercher']))
{ if ($_POST['type_de_bien']== 'Appartement' )
{ if (!empty($_POST['rooms'])
{
}
else {$e_rooms='Veuillez sélectionner nb pièces'; etc
}
}
else if ($_POST['type_de_bien']== 'Maison' )
{ include('acheter_maison.php');
}
else if ($_POST['type_de_bien']== 'Terrain' )
{ include('acheter_terrain.php'); // Evidemment pas de nombre de pièces requis !!
}
else if (){}
else {$e_type_de_bien= 'Veuillez choisir un type de bien';}
}
testé avec 50 types d'imbrications à l'intérieur if ($_POST['type_de_bien']== 'Appartement' ) lorsqu'à appart sélectionné.
Enfin bref, subtilités du php enregistrées!
Merci