Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2007, 09h28   #1
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
Par défaut [Conception] ElseIf a répétition - Ne marche pas ! - Pq?

Des boucles ElseIf a répétition, est ce que cela marche ... car j'essaye de mettre en place une condition dans un if(isset($_POST['xxxx'])) ... Cela ne veut pas marcher ...

J'ai bien l'impression qu'il s'arrete a la 2e condition de mon ElseIf ... Demandez si vous voulez voir mon code ...

Merci Help !
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 09h34   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
oui ca marche et c'est équivalent à un switch case :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$a = 20;
 
if($a < 5)
{
echo "A est inférieur a 5";
}
elseif($a < 10)
{
echo "A est inférieur a 10 et supérieur a 5";
}
elseif($a < 50)
{
echo "A est inférieur a 50 et supérieur a 10";
}
elseif($a == 20)
{
echo "A égal 20";
}
tu n'entres que dans UNE des conditions, en gros tu testes la première, si c'est faux tu testes la deuxieme, si c'est faux la troisieme etc. Mais des que tu en trouves une bonne tu arretes
Donc ca affichera "A est inférieur a 50 et supérieur a 10" et non pas "A égal 20"
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 10h27   #3
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
Peux tu regarder ce qui ne va pas ! please ...

C'est comme ci la valeur postée $_POST etait gardé en mémoire a 2 reprises et qu'il m'incrémentait les champs un par un dés que celui est vide ... je ne comprends pas pourquoi !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$DataStlise=mysql_fetch_array($Lets_satelise1);
 
 
    if(isset($_POST['satelise'])) {
				if($DataStlise['Satellise_Qui'] == NULL)
				{
	$sql_satelise="UPDATE etablissement SET Satellise_Qui='".$_POST['satelise']."' WHERE IdEtb='$id'";
	$exe_sqlsatelise = mysql_query($sql_satelise) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	            }
	            elseif($DataStlise['Satellise_Qui1'] == NULL)
				{
	$sql_satelise1="UPDATE etablissement SET Satellise_Qui1='".$_POST['satelise']."' WHERE IdEtb='$id'";
	$exe_sqlsatelise1 = mysql_query($sql_satelise1) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	            }
	           elseif($DataStlise['Satellise_Qui2'] == NULL)
			   {
	$sql_satelise2="UPDATE etablissement SET Satellise_Qui2='".$_POST['satelise']."' WHERE IdEtb='$id'";
	$exe_sqlsatelise2 = mysql_query($sql_satelise2) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			   }
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 10h41   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
tu veux dire que la tu rentres dans tes 3 ifs?
Mets des echo a l'entrée de chaque if pour voir où tu passes.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h11   #5
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
J'ai essayé ca mais il s'arrete constamment sur le 1er champ et le met constamment a jour.

POURQUOI !!!!!!!!!!!!!!!! j'en px plus je crois que je vais craquer !!!!!!!!!!!!!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//Zone de modification pour le(s) satelisés
 
 
   echo'<form method="POST" name="maj_sat_qui" onsubmit="return refresh(this)" Action="index.php?numlien=Det_Etablissement&id='.$id.'"><SELECT size="1" name="satelise" id="satelise_mdf" style="visibility: hidden">';     
   echo'<option SELECTED></OPTION>';
 
   while($dataEts1=mysql_fetch_array($RLets1))
   {
   echo'<option>'.$dataEts1['Etablissement'].'</option>';
   }
   if(isset($_POST['satelise'])) {
				if($dataEts1['Satellise_Qui'] == "")
				{
	$sql_satelise="UPDATE etablissement SET Satellise_Qui='".$_POST['satelise']."' WHERE IdEtb='$id'";
	$exe_sqlsatelise = mysql_query($sql_satelise) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	            }
	            Elseif($dataEts1['Satellise_Qui1'] == "")
				{
	$sql_satelise1="UPDATE etablissement SET Satellise_Qui1='".$_POST['satelise']."' WHERE IdEtb='$id'";
	$exe_sqlsatelise1 = mysql_query($sql_satelise1) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	            }
	           Elseif($dataEts1['Satellise_Qui2'] == "")
			   {
	$sql_satelise2="UPDATE etablissement SET Satellise_Qui2='".$_POST['satelise']."' WHERE IdEtb='$id'";
	$exe_sqlsatelise2 = mysql_query($sql_satelise2) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			   }
			   }	
 
   echo'</SELECT><input value="Ok" id="input_OK2" style="visibility: hidden" type="submit" onClick="form_satelise_qui();"><IMG src="image/cancel.png" id="iddelimgannulsatelise" style="visibility: hidden" style="border:"0" onclick="satelise_ann();"></form></td>';
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h13   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
bah euh c'est normal puisque c'est le fonctionnement du if/elseif/.../else
reregardes mon exemple, il s'arrete quand il voit < 50 et il entre pas dans le else suivant puisqu'il est deja rentré quelque part.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h14   #7
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
j'ai appliqué la meme methode que tu as décrite un peu plus haut non ??????

je comprends pas là !
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h21   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
On reprend parce que je comprends pas. Dans ton code, tu dis qu'il s'arrete tjs sur le premier If et qu'il fait le update. Donc c'est tout simplement parce que
$dataEts1['Satellise_Qui'] est toujours une chaîne vide.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h31   #9
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
Non car il peut arriver que le champ Satellise_Qui et Satellise_Qui1 soit rempli par des valeurs (soit des noms de ville me concernant).
Donc dans mon cas, le champ Satellise_Qui est rempli ... mais il me le met a jour a chaque fois et ne passe pas au second ...

En fait je récupère la valeur postée de la liste déroulante SELECT nommé "satelise"

Si une valeur est postée, il rentre dans la boucle if(isset......

Vois tu ?

Crois tu que cela peut fonctionner.
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 16h34   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Justement je ne vois pas trop

Commences par faire un peu de echo pour comprendre...
Tu affiches en début de script la valeur retournée par le formulaire
ensuite tu affiches pour chaque if des "je rentre dans mon if XXX"
ensuite pour chaque résultat de la requete retourné par le fetch, tu affiches ses valeurs
Tu devrais rapidement comprendre ce qui se passe après
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 17h54   #11
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
euh ... comment tu t'y prendrais toi ?
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 17h57   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
en mettant des echo ???

Bon je viens de relire ton code plus lentement. Pourquoi est ce que tu utilises $dataEts1['Satellise_Qui'] après la boucle while() ??? Du coup après la boucle while $dataEts1 vaut false (c'est ce qui te fait quitter la boucle) et tu ne rentres surement dans aucun des if

Je comprends vraiment pas ce que tu essaies de faire en fait...
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 22h23   #13
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
Savez vous comment mettre à ZERO un $_POST (valeur postée par un formulaire !)

...
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 22h50   #14
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
J'ai l'impression que mon problème vient du fait que la valeur du formulaire postée reste constamment en mémoire ... et donc il incrémente a chaque fois le champ satellise_Qui, Satellise_Qui1, Satellise_Qui2.

Est il possible de résété la valeur ?
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 23h33   #15
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
unset()
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2007, 11h14   #16
Membre régulier
 
Avatar de bilou95
 
Inscription : septembre 2006
Messages : 433
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 433
Points : 79
Points : 79
Comme ca ca devrait vider le contenu de mon $_POST ?????

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//Zone de modification pour le(s) satelisés
 
 
   echo'<form method="POST" name="maj_sat_qui" onsubmit="return refresh(this)" Action="index.php?numlien=Det_Etablissement&id='.$id.'"><SELECT size="1" name="satelise" id="satelise_mdf" style="visibility: hidden">';     
   echo'<option SELECTED></OPTION>';
 
   $var_sat=$_POST['satelise'];
 
   $Stlise=mysql_fetch_assoc($Lets_satelise1);
 
 
   if(isset($var_sat)) {
				if($Stlise['Satellise_Qui'] == "")
				{
	$sql_satelise="UPDATE etablissement SET Satellise_Qui='$var_sat' WHERE IdEtb='$id'";
	$exe_sqlsatelise = mysql_query($sql_satelise) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	unset($_POST['satelise']);
	            }
 
	            Elseif($Stlise['Satellise_Qui1'] == "")
				{
	$sql_satelise1="UPDATE etablissement SET Satellise_Qui1='$var_sat' WHERE IdEtb='$id'";
	$exe_sqlsatelise1 = mysql_query($sql_satelise1) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			 unset($_POST['satelise']);
	            }
 
	           Elseif($Stlise['Satellise_Qui2'] == "")
			   {
	$sql_satelise2="UPDATE etablissement SET Satellise_Qui2='$var_sat' WHERE IdEtb='$id'";
	$exe_sqlsatelise2 = mysql_query($sql_satelise2) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	unset($_POST['satelise']);
			   }
			   }	
   while($dataEts1=mysql_fetch_array($RLets1))
   {
   echo'<option>'.$dataEts1['Etablissement'].'</option>';
   }
 
 
 
 
 
   echo'</SELECT><input value="Ok" id="input_OK2" style="visibility: hidden" type="submit" onClick="form_satelise_qui();"><IMG src="image/cancel.png" id="iddelimgannulsatelise" style="visibility: hidden" style="border:"0" onclick="satelise_ann();"></form></td>';
bilou95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h41.


 
 
 
 
Partenaires

Hébergement Web