[RESOLU] Problème <div id=""> dans le echo

Eléphanteau du PHP | 40 Messages

10 déc. 2015, 15:12

Bonjour à tous voilà depuis peut je me suis mis au php est souvent je bloque mais là depuis maintenant 4 jours je n'arrive pas a trouver la solution pour sa :

Code : Tout sélectionner

<?php if (isset($_POST['submit'])) { $Pseudo = htmlspecialchars(trim($_POST['Pseudo'])); $Email = htmlspecialchars(trim($_POST['Email'])); $Password = htmlspecialchars(trim($_POST['Password'])); $RepeatPassword = htmlspecialchars(trim($_POST['RepeatPassword'])); $Checkbox = (isset($_POST['Checkbox'])); if ($Pseudo&&$Email&&$Password&&$RepeatPassword&&$Checkbox) { if (strlen($Pseudo)>=4) { if (strlen($Password)>=5) { if ($Password == $RepeatPassword) { $Password = sha1($Password); }else echo "Les mots de passes de correspondent pas !"; }else echo "Votre Mot de passse doit contenir minimum 5 caractères"; }else echo "Votre Pseudo doit contenir minimum 4 caractères"; }else echo "veuillez s'il vous plaît saisir tous les champs"; } ?>
Je vous explique enfet cette partie du code sert à quand un utilisateur veut s'inscrire si il remplis pas tous les champs ou si les mdp ne correspondent pas etc un message s'afiche jusqu'à là tous est bon mais ensuite je voulais modifier le message en css par exemple y mettre une bordure etc donc pour calà il faut que je mette une <div> ou une <class> mais quand j'essaye de la mettre comme ceci :

Code : Tout sélectionner

}else echo "<span class="M1">Les mots de passes de correspondent pas !</span>";
ce qu'on ma conseiller celà ne marche pas et j'ai beau tous essayer sois rien ne marche sois le message reste h24 affiché ce qui n'est pas bon.

Merci d'avance a ceux qui m'aideront si vous avez des questions en + qui peuvent vous aidez demandez moi :)

Mammouth du PHP | 1967 Messages

10 déc. 2015, 15:45

Hello,

Il faut que tu fasse attention à tes guillemets simple et double.

Dans l'exemple que tu nous donne, PHP devrait te mettre une erreur car tu referme tes " pour ta class sans les échapper.
Tu as plusieurs options dans ce cas:
1) échapper les guillemets du code html
}else echo "<span class=\"M1\">Les mots de passes de correspondent pas !</span>";
2) jongler avec les quillemets simples et doubles
}else echo '<span class="M1">Les mots de passes de correspondent pas !</span>';
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 40 Messages

10 déc. 2015, 16:39

Salut est merci pour ta réponse c'est sympas :) mais j'ai déjà essayez celà les 2 étapes que tu a mise est aucune des 2 marches j'ai même essayer la concaténation (on sais jamais ^^) est même sa na pas marcher mais je me demande si le problème ne viendrais pas de cette ligne de code :

Code : Tout sélectionner

$Pseudo = htmlspecialchars(trim($_POST['Pseudo'])); $Email = htmlspecialchars(trim($_POST['Email'])); $Password = htmlspecialchars(trim($_POST['Password'])); $RepeatPassword = htmlspecialchars(trim($_POST['RepeatPassword'])); $Checkbox = (isset($_POST['Checkbox']));
de ici :

Code : Tout sélectionner

$Checkbox = (isset($_POST['Checkbox']));

vue que j'ai mis un isset pour que sa marche mais je ne pense pas que celà est sa place est-ce que mon problème ne viendrais pas d'ici j'ai déjà essayer de modifier ici mais un message d'erreur s'affiche :/ merci camème pour t'est réponses :)

Mammouth du PHP | 1967 Messages

10 déc. 2015, 17:47

Si tu as des messages d'erreur, donne les nous cela pourra nous aider.

Je ne pense pas que l'erreur puisse venir de ton isset, il retourne un booléen (true ou false) que tu peux très bien enregistré dans une variable

Donne nous aussi le code source obtenu avec le code php correspondant, car là je comprends pas trop ton problème
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Mammouth du PHP | 1564 Messages

10 déc. 2015, 19:18

Salut,

t'as aussi cette solution:

Code : Tout sélectionner

}else echo "<span class='M1'>Les mots de passes de correspondent pas !</span>";
:mrgreen: Petit oublie de la part Spols

En ce qui concerne ton isset, il est bon comme la précisé Spols, tu peux enlever les parenthèses des bords qui ne servent à rien (c'est qu'un détail)

Pour une éventuelle solution, rajoute des accolade à ton else:

Code : Tout sélectionner

}else {echo '<span class="M1">Les mots de passes de correspondent pas !</span>';}
puis vérifie également à quel partie de ton code fait référence se fameux else.

Petite astuce pour vérifier si les champs sont remplis, fait une vérif simultanée de tous les champs:

Code : Tout sélectionner

if (isset($_POST['submit'],$_POST['input1'],$_POST['input2'],$_POST['etc']))
si tu veux vérifier qu'ils soit pas vide, met empty au lieu de isset (le empty ne fera pas de msg d'erreur si il est pas isset() donc pratique)

Eléphanteau du PHP | 40 Messages

11 déc. 2015, 01:25

Re merci pour vos réponses pratiques two3d merci pour t'est conseils je l'ai ai suivis alors en premier j'ai testé sa :

Code : Tout sélectionner

<?php if (!empty($_POST['submit'],$_POST['Pseudo'],$_POST['Email'],$_POST['Password'],$_POST['RepeatPassword'],$_POST['Checkbox'])) { $Pseudo = htmlspecialchars(trim($_POST['Pseudo'])); $Email = htmlspecialchars(trim($_POST['Email'])); $Password = htmlspecialchars(trim($_POST['Password'])); $RepeatPassword = htmlspecialchars(trim($_POST['RepeatPassword'])); $Checkbox = (isset($_POST['Checkbox'])); if ($Pseudo&&$Email&&$Password&&$RepeatPassword&&$Checkbox) { if (strlen($Pseudo)>=4) { if (strlen($Password)>=5) { if ($Password == $RepeatPassword) { $Password = sha1($Password); }else echo "Les mots de passes de correspondent pas !"; }else echo "Votre Mot de passse doit contenir minimum 5 caractères"; }else echo "Votre Pseudo doit contenir minimum 4 caractères"; }else echo "veuillez s'il vous plaît saisir tous les champs"; } ?>
le !empty mais un message d'érreur s'affiche celui là :

Parse error: syntax error, unexpected ',' in C:\wamp\www\SoireeChat\Inscription.php on line 120


ensuite j'ai tester sans le empty mais avec isset aucun message d'erreur mais aucun message tout court s'affiche.

j'ai essayer ce que tu ma dit sa :

Code : Tout sélectionner

}else echo "<span class='M1'>Les mots de passes de correspondent pas !</span>";
est impossible de modifier le message

est celui là aussi ne marche pas :

Code : Tout sélectionner

}else {echo '<span class="M1">Les mots de passes de correspondent pas !</span>';}
mais meri beaucoup camème pour vos réponses :)

Mammouth du PHP | 1967 Messages

11 déc. 2015, 09:26

hello,

isset accepte plusieurs arguments, ce qui n'est pas le cas de empty, donc pour utiliser cette fonction il faut l'écrire une fois pour chaque variable
if (!empty($_POST['submit']) && !empty($_POST['Pseudo']) && !empty($_POST['Email']) && !empty($_POST['Password']) && !empty($_POST['RepeatPassword']) && !empty($_POST['Checkbox']))
Et tu n'avais rien d'afficher avec un isset car ce premier if n'avait pas de else donc pas d'affichage.

Pour ton problème d'echo, essaye une de nos propositions et va voir dans ton code source (ctrl+U) et donne nous le code source html retourné. sans cela on ne pourra pas t'aider.

PS
Je n'avais pas préciser
}else echo "<span class='M1'>Les mots de passes de correspondent pas !</span>";
Car c'est en soit une mauvaise pratique. les doubles guillemets font appel à l’interpréteur php contrairement aux simples. ce qui permet
echo "texte: $maVariable";
donc le mieux reste encore :
}else echo '<span class="M1">Les mots de passes de correspondent pas !</span>';
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Mammouth du PHP | 1564 Messages

11 déc. 2015, 16:31

ah, désolé pour le empty, je ne savait pas, il faut dire que je l'utilise pas dans le cas de plusieurs vérif en même temps.

En ce qui concerne ton empty sur checkbox, je te conseil de ne pas le vérifier avec les autres mais de le vérifier comme tu la fait en premier, avec $checkbox = isset(....


cette ligne sert plus à rien du coup si tu fait tes vérifs simultanées, vu que tu les initialisent:

Code : Tout sélectionner

if ($Pseudo&&$Email&&$Password&&$RepeatPassword&&$Checkbox)
parce que oui, elle seront "isset" du coup.

Je te propose ce code propre, tu aura la possibilité de voir comment on fait (c'est ma façon de coder hein, après chacun fait différement mais la technique reste la même).
J'ai mis htmlentities à la place de htmlspecialchars, avec le paramètre ENT_QUOTES pour convertir guillemets simples et doubles afin de sécuriser l'entrée des données en BDD.
htmlentities — Convertit tous les caractères éligibles en entités HTML

Code : Tout sélectionner

if(isset($_POST['submit'])){//si le bouton submit est cliqué if(empty($_POST['submit']) OR empty($_POST['Pseudo']) OR empty($_POST['Email']) OR empty($_POST['Password']) OR empty($_POST['RepeatPassword'])){ echo "<div class='M1'>veuillez s'il vous plaît saisir tous les champs</div>"; } else { $Pseudo = htmlentities(trim($_POST['Pseudo']),ENT_QUOTES); $Email = htmlentities(trim($_POST['Email']),ENT_QUOTES); $Password = htmlentities(trim($_POST['Password']),ENT_QUOTES); $RepeatPassword = htmlentities(trim($_POST['RepeatPassword']),ENT_QUOTES); $Checkbox = isset($_POST['Checkbox']); //si tu veux mettre 1 ou 0 pour le résultat du checkbox, une simple vérification binaire fera l'affaire: //$Checkbox = isset($_POST['Checkbox'])?1:0; if(strlen($Pseudo)<4 OR strlen($Pseudo)>10){ //si le pseudo est plus petit que 4 caractères ou plus grand que 10 caractères, on affiche un msg d'erreur (rien ne t'emp^che de mettre plus de 10 caractères possible) echo "<div class='M1'>Votre Pseudo doit contenir minimum 4 caractères et maximum 10 caractères</div>"; } else { if(strlen($Password)<5){ echo "<div class='M1'>Votre Mot de passse doit contenir minimum 5 caractères</div>"; } else { if($Password != $RepeatPassword){ echo "<div class='M1'>Les mots de passes de correspondent pas !</div>"; } else { $Password = sha1($Password); //etc... } } } } }
PS: il te faudra peut être mettre htmlentities($ta_variable,ENT_QUOTES,"UTF-8"); ou htmlentities($ta_variable,ENT_QUOTES,"ISO-8859-1"); pour tous, suivant l'encodage de ta page

Eléphanteau du PHP | 40 Messages

11 déc. 2015, 16:46

ou la je comprend pas trop trop vue que je suis débutant est en phase d'apprentissage j'ai (à peut prêt compris) et merci beaucoup pour vos réponses je vais tester tout sa :)

Eléphanteau du PHP | 40 Messages

11 déc. 2015, 16:58

Merci pour ce code il est vrai que j'arrive beaucoup mieux a lire ton code c'est sympas merci a vous 2 enfet le problème c'est que je suis en phase d'apprendre le php et je connais le php genre les mutilication avec if les boucles while etc.. mais je n'arrive jamais en metre en pratique si vous voyez ce que je veut dire du coup j'ai du mal en comprendre quand je vois des trucs genres :

Code : Tout sélectionner

//si tu veux mettre 1 ou 0 pour le résultat du checkbox, une simple vérification binaire fera l'affaire:
par exemple la tu vois je isset tu peut faire sa mais je saurai jamais le mettre en pratique si vous voyez ce que je veut dire ^^ ( je sais je suis bizzare mdr)

Eléphanteau du PHP | 40 Messages

11 déc. 2015, 16:59

ton code marche bien two3d sauf les <div id=""> dans le echo qui ne marchent toujour pas :/ mais c'est le chekbox j'ai pas trop compris :/

Avatar du membre
Mammouth du PHP | 1564 Messages

11 déc. 2015, 17:23

Pour le checkbox, en fait, si tu veux insérer dans la base de données le résultat du checkbox (checked ou pas checked), tu peut très faire une verif binaire, c'est à dire que si elle est cochée, donc:

Code : Tout sélectionner

$VarCheckbox=isset($_POST['ckecbox'])?"elle est cochée":"elle n'est pas cochée";
avec if else cela donne: (code plus long mais à l'avantage de te permettre d'assigner de faire différentes manip entre tes accolades)

Code : Tout sélectionner

if(isset($_POST['ckecbox'])){ echo "elle est cochée"; } else { echo "elle n'est pas cochée"; }
pour plus d'info sur la verif binaire, je t'invite à voir la doc PHP

Pour ta div, il te faut faire un fichier .css avec ceci (exemple):

Code : Tout sélectionner

.M1{definition des styles CSS pour cette classe}
tu peut très bien définir du style à même la page html/php avec la balise <style>:

Code : Tout sélectionner

<style type="text/css"> .M1{definition des styles CSS pour cette classe} </style>
ce code sera à placer de préférence entre les balise <head> de ta page.

Eléphanteau du PHP | 40 Messages

11 déc. 2015, 17:29

two3d merci beaucoup j'ai d'un coup mieux compris sayez :D merci pour t'est réponses et enfet la <div class=""> ne marchais pas car comme un abrutis au lieu de mettre le point devant la classe exemple :
j'ai mis un dièse
mais sayez celà est rectifier est effectivement sa marche beaucoup mieux ^^.

une dernière questions : ou pourrais-je apprendre le php? car j'ai appris sur openclassroom c'est bien expliqué mais il manques 2 - 3 petites choses comme empty par exemple je me souvient pas qu'il en parle. donc si vous saurais ou pourrais-je bien apprendre le php :) merci beaucoup a vous :)

Avatar du membre
Mammouth du PHP | 1564 Messages

11 déc. 2015, 17:39

dièse pour les id (id="") et le point pour les classes (class="")

Je peux que te conseiller la doc officielle de PHP, soit: http://php.net/manual/fr/index.php ;)

Quand tu recherche un truc en particulier, je te conseil google, au début j'ai personnellement appris avec google en recherchant des script qui se rapprochait au plus de ce que je voulait faire ;)

Eléphanteau du PHP | 40 Messages

11 déc. 2015, 17:42

ok merci beaucoup a vous en tous cas :) c'est sympa :)