Page 1 sur 2

pb else

Posté : 21 juin 2018, 19:00
par quattro
Bonjour
mon code :

Code : Tout sélectionner

// Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) & !empty($_POST['prenom']) & !empty($_POST['qualif']) & !empty($_FILES['photo']) & !empty($_POST['titre'])) { $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) & $inPhoto['error'] == 0) { // test si le fichier n'est pas trop gros if ($inPhoto['size'] <= 2000000) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image';//chemin de stockage move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \>"; } } else{ echo "sélectionnez un format plus petit.";} } // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue dans la Base de Donnée..." ; } } else { echo "Veuillez enregistrer tous les champs correctement"; } // Je me deconnecte $req = null;
1 - Lorsque je rempli qu'a moitié(volontairement)mon formulaire, cela devrait basculer sur le :
else
{
echo "Veuillez enregistrer tous les champs correctement";
}
et ne le faite pas ?
2 - quand je suis à l'étape :
if ($inPhoto['size'] <= 2000000)
et que je selectionne une photo de plus de 2Mo cela ne m'indique pas le message :
else{ echo "sélectionnez un format plus petit.";}
??

Re: pb else

Posté : 21 juin 2018, 23:52
par @rthur
Bonjour,


1) Normal tu as une erreur dans ton if(), pour mettre plusieurs conditions avec un ET, il faut deux symboles "&", comme ceci : if ($cond1 && $cond2)

2) Vérifie ce que contient ta variable $inPhoto['size'] pour voir si elle contient bien la taille du fichier.

Re: pb else

Posté : 22 juin 2018, 09:35
par quattro
Bonjour,

1) Normal tu as une erreur dans ton if(), pour mettre plusieurs conditions avec un ET, il faut deux symboles "&", comme ceci : if ($cond1 && $cond2)
cela concerne se if là :

Code : Tout sélectionner

// test si le fichier n'est pas trop gros if ($inPhoto['size'] <= 2000000)
2) lorsque je fais un ;

Code : Tout sélectionner

echo "Taille = ".$inPhoto['size']."<br \>";
cela m'affiche bien la taille

Re: pb else

Posté : 22 juin 2018, 14:46
par Spols
tu devrais indenter ton code correctement pour bien voir quel else correspond à quel if.

commence par corriger tes & par des &&

ensuite si echo "Taille = ".$inPhoto['size']."<br \>"; te donne la bonne valeur, vérifie le type de donnée que tu as avec var_dump() par exemple.

tu peux aussi faire un var_dump($inPhoto['size'] <= 2000000) pour voir ce que vaux ta condition

Re: pb else

Posté : 23 juin 2018, 18:02
par quattro
bonjour
mon code :

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \>"; } } } } // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue dans la Bdd..." ; // Je me deconnecte $req = null; } else { echo "Veuillez recommencer l'enregistrement"; } ?>
quand je lance l'appli, si je choisi une photo > 2Mo cela ne s'enregistre pas dans mon dossier(le test si > que 2000000 fonctionne), par contre si photo <2Mo cela s'enregistre dans le dossier avec le nouveau nom attribué.
Mais dans tous les cas ( >2Mo ou <2Mo ) cela s'enregistre dans la Bdd.
Je veux uniquement le cas <2Mo !!!

Re: pb else

Posté : 23 juin 2018, 22:08
par Spols
Il suffit que tu mette ton enregistrement en bdd au même endroit que ta sauvegarde du fichier

Re: pb else

Posté : 24 juin 2018, 14:17
par quattro
Bonjour
merci pour ton aide.
mon code est le suivant :

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } } } else { echo "Veuillez recommencer, respectez les consignes"; } ?>
maintenant quand je rentre les bonnes valeurs dans chaque champs, je valide, cela s'enregistre dans la Bdd.
Par contre si volontairment je rentre une mauvaise valeurs ou autres dans les champs du formulaire, ensuite je valide, rien ne s'enregistre dans la Bdd;Ok normal, mais pour quoi mon :

Code : Tout sélectionner

else { echo "Veuillez recommencer, respectez les consignes"; }
ne s'applique pas ??

Re: pb else

Posté : 24 juin 2018, 18:45
par @rthur
maintenant quand je rentre les bonnes valeurs dans chaque champs, je valide, cela s'enregistre dans la Bdd.
Par contre si volontairment je rentre une mauvaise valeurs ou autres dans les champs du formulaire, ensuite je valide, rien ne s'enregistre dans la Bdd;Ok normal, mais pour quoi mon :

Code : Tout sélectionner

else { echo "Veuillez recommencer, respectez les consignes"; }
ne s'applique pas ??
Relis ton code et regarde quelle est la condition pour que ce message s'affiche ? :)

Re: pb else

Posté : 24 juin 2018, 22:11
par Spols
tu devrais indenter ton code correctement pour bien voir quel else correspond à quel if.

Re: pb else

Posté : 25 juin 2018, 12:49
par quattro
bonjour
J'avance doucement mais surement..
mon code :

Code : Tout sélectionner

// Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000) { var_dump ($inPhoto['size'] <= 2000000); // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } else { echo "Photo volumineuse"; } } } else { echo "Veuillez remplir tous les champs"; } }
Donc, si mon formulaire est incomplet cela m'affiche bien : Veuillez remplir tous les champs.
Par contre si ma photo que je sélectionne est > 2Mo cela ne m'affiche pas : Photo volumineuse ?
Par contre si ma photo que je sélectionne est < 2Mo , le var_dump ($inPhoto['size'] <= 2000000), m'indique bien :
C:\UwAmp\www\essai\page\principal.php:84:boolean true

Re: pb else

Posté : 25 juin 2018, 13:08
par or 1
echo "taille : ".$inPhoto['size'];
if ($inPhoto['size'] <= 2000000)

qu'est ce que cela affiche quand la photo est trop lourde ?

Re: pb else

Posté : 25 juin 2018, 13:23
par quattro
rien du tout

Re: pb else

Posté : 25 juin 2018, 13:29
par Spols
Il se peut que quand ta photo est trop lourde, il y ai un blocage au niveau html et que donc ton formulaire ne contient pas ce fichier.

Tente un var_dump($_POST);var_dump($FILES); en tout début de code et compre le résultat avec une bonne et un trop grosse photo.

Re: pb else

Posté : 25 juin 2018, 19:40
par quattro
j'ai donc mis un var_dump à ce niveau :

Code : Tout sélectionner

//Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; var_dump($inPhoto);

pour une grosse photo cela me met :

Code : Tout sélectionner

C:\UwAmp\www\essai\page\principal.php:76: array (size=5) 'name' => string 'test.jpg' (length=8) 'type' => string '' (length=0) 'tmp_name' => string '' (length=0) 'error' => int 1 'size' => int 0

Pour une petite photo cela met met :

Code : Tout sélectionner

C:\UwAmp\www\essai\page\principal.php:76: array (size=5) 'name' => string 'linux.jpg' (length=9) 'type' => string 'image/jpeg' (length=10) 'tmp_name' => string 'C:\Users\QE\AppData\Local\Temp\php7E15.tmp' (length=42) 'error' => int 0 'size' => int 59437

je m’aperçois que "error = 1" pour la grosse photo.
donc je met un else à ce niveau :

Code : Tout sélectionner

$req = null; } } } else{ if ($inPhoto['error'] == 1){ echo "Photo > 2Mo, recommencez l'enregistrement"; }

et ca a l'air de fonctionner.

mon code entier :

Code : Tout sélectionner

// Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; var_dump($inPhoto); // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000 ) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\image'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } else{ if ($inPhoto['error'] == 1){ echo "Photo > 2Mo, recommencez l'enregistrement"; } } } else { echo "Veuillez remplir tous les champs"; } }
mais je ne comprend pas pourquoi ?

Re: pb else

Posté : 25 juin 2018, 23:13
par @rthur
La variable 'Error' contient un n° qui correspond à un message d'erreur.
0, c'est qu'il n'y a pas d'erreur.
Pour tous les autres, regarde ici : http://php.net/manual/fr/features.file- ... errors.php