Erreur incompréhensible PHP

alexcamb87 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
Jodu Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
cela fait plusieurs pages php ou j'utilise cette méthode, mais la ça ne marche plus je ne comprends pas...

Voilà le code, au début il est censé récupérer des $_POST et en fonction de leur résultat (vide ou non) il affiche différents formulaires.

La il me semble d'avoir un bon code :( Si il ni a rien du tout, il affiche le formulaire de création d'album. Ce formulaire envoie le nom de l'album a la même page, et donc la variable $nomAlbum n'est plus nulle et on se rends au deuxième formulaire...

Sauf que la les deux formulaires s'affiche en même temps et ça ne change rien si je donne une valeur a nomAlbum. Je ne comprends pas

$nomAlbum=$_POST['nomAlbum'];
$miniature=$_POST['miniature'];
$photo=$_POST['photo'];


if($nomAlbum=='' || $miniature=='' || $photo=='')
{
echo"<h2>Création d'un album</h2><br>";
echo'<form method="post" action="gestionimage.php?Opt=1">';
echo"<br><br><br>Nom de l'album  ";
echo'<input type="text" name="nomAlbum"><br><br>';
echo'<input type="submit" value="valider"></form>';
}

if($nomAlbum!='' || $miniature=='' || $photo=='')
{
echo"<h2>Création d'un album</h2><br>";
echo"Insérez une photo afin de finaliser la création de l'album. ";
echo'<form method="post" action="gestionimage.php?Opt=1" enctype="multipart/form-data">';
echo'<input type="hidden" name="nomAlbum" value="'.$nomAlbum.'"/>';
echo'<br>Miniature (150px dans le sens de la longueur): <input type="file" name="miniature"/><br>';
echo'<br>Photo (640px dans le sens de la longueur): <input type="file" name="photo"/><br><br>';
echo'<input type="submit" value="valider"></form>';
}
A voir également:

2 réponses

Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour,

tu as un problème dans tes conditions, si $miniataure=="" ou si $photo=="", le test réussira toujours.

je sais pas exactement ce que tu veux faire mais essaye avec :

if($nomAlbum=='' && ($miniature=='' || $photo=='') )
{
    ...
}

if($nomAlbum!='' && ($miniature=='' || $photo=='') )
{
    ...
}


Voila en espérant que ça t'aide :)
0
Jodu Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   14
 
Salut,

pour tester si un champ est vide tu peux aussi faire :
if (empty($_POST['ton_Album']))
{
    .....
}

pour tester si un champ n'est pas vide, c'est pareil sauf que tu mets !empty

C'est plus propre ;)

Et un autre conseil, evite les variables avec des majuscules, tu vas forcément te tromper un jour
Préfère des trucs comme $nom_album au lieu de $nomAlbum

Edit : c'est normal que tes deux formulaire s'affichent.

Au debut tu testes si nomAlbum est vide, ou si miniature est vide, ou si photo est vide.
Donc, si l'un des trois est vide, tu affiches.

Après tu fermes ta condition, et tu en ouvres une autre.
La tu dis : si nomAlbum n'est pas vide, OU si miniature est vide, ou si Photo est vide.

Donc réfléchis, si ton nom album est rempli et que miniature ou photo est vide, il passera dans les deux if, car tes conditions seront remplies. La solution de Defouille est donc la bonne ;)
0