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 02/08/2006, 11h09   #1
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
Par défaut [Conception] non affichage de $erreur

Bonjour,

j'ai un problème avec un $erreur qui ne s'affiche pas suite à la vérification qu'un formulaire est bien rempli. la vérification s'effectue dans la même page que celle qui contient le formulaire.

voici la construction du code :
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
- <? php, session start ; connexion à la base , récupération de variables de session ?>
- <? php vérification que le formulaire a bien été rempli :

if (isset($_POST['ajout']) && $_POST['ajout'] == 'Ajout') 
{
		if // si les champs sont vides
 		(
			(empty($_POST['description'])) 
			OR 
			(empty($_POST['contact']))
			OR 
			(
			(empty($_POST['categorie']))
			AND 
			(empty($_POST['categorie2']))
			)
		)//fin if vérification des champs vides
		
		{$erreur='merci de remplir tous les champs marqués de*';}
		else // c'est bien rempli
{	connexion, intégration des données }

 }// fin du if vérification que le formulaire est rempli
?>
<html>
<head><body> etc etc
		  <?php
if (isset($erreur)) echo '<br>',$erreur,'<br>';
?> <form name="Ajout" action="news_ajout.php" method="post">..</form>  
</body>
</html>
quand je définis $erreur, et que j'envoie le formulaire sans rien remplir, j'arrive à une page blanche. par contre, si à la place de définir $erreur, je fais {echo'merci de remplir tous les champs';} j'arrive bien à une page blanche avec cette phrase d'indiquée.

Je ne comprends pas pourquoi en définissant $erreur je n'arrive pas à ma page avec le formulaire + le message d'erreur là où j'ai indiqué qu'il devait être.

Merci à ceux qui pourront m'aider
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 11h23   #2
Membre confirmé
 
Inscription : janvier 2004
Messages : 537
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 537
Points : 264
Points : 264
Bonjour,

que te renvoie isset($erreur) lorsque tu ne remplis pas les champs ?
Par ailleurs, une concaténation s'effectue avec des points et non des virgules...
navis84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 11h23   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Bonjour crelha,

Je ne vois pas d'erreur dans le code que tu as copié mais il n'est pas complet...


Eventuellement tu pourrais essayé de placé

Code :
if (isset($erreur)) echo '<br>',$erreur,'<br>';
juste avant

Code :
}// fin du if vérification que le formulaire est rempli
...tu as peut-etre utilisé un exit() ou une redirection dans cette partie, ce qui empeche d'arriver jusqu'à la lecture de $erreur.


Bonne chance...
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 11h28   #4
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Tu as tout à fais raison navis84,

Si Guitou passe par là,il va encore se taper la tête...


Code :
if (isset($erreur)) echo '<br>' .$erreur. '<br>';
...voila,c'est mieux avec des points
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 12h04   #5
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
j'ai corrigé
<?php
if (isset($erreur)) echo '<br>'.$erreur.'<br>';
?>

ce qui ne change rien pour moi, sauf que j'évite des bleus à Guitou .

sur la suggestion de déplacer avant " fin du if vérification que le formulaire est bien rempli", ce n'est plus possible, car la syntaxe if() $xxx= ; ne serait plus correcte.

en revanche, j'ai essayé
if // si les champs sont vides
(
(empty($_POST['description']))
OR
(empty($_POST['contact']))
OR
(
(empty($_POST['categorie']))
AND
(empty($_POST['categorie2']))
)
)//fin if vérification des champs vides

{$erreur='merci de remplir tous les champs marqués de*';
echo '<br>'.$erreur.'<br>';}
qui bien sûr fait apparaitre le message d'erreur sur une page blanche.

je voulais éviter de vous coller tout le code, mais je crois que je vais devoir en mettre plus :


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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
session_start();
if (!isset($_SESSION['login'])) 
{
    header ('Location: guideindex.php');
    exit();
}
else
{
// on se connecte à notre base 
$base = mysql_connect ('', '', '');
mysql_select_db ('', $base);
 
// on prépare une requête pour pouvoir afficher ensuite les éléments
$sql = 'SELECT * FROM aide_st WHERE login="'.addslashes($_SESSION['login']).'" ';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
//récupération des résultats sous forme d'un tableau
$data = mysql_fetch_array($req);
$_SESSION['clef'] =$data['s_clef'];
 
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();
}
?>
<?php
 
if (isset($_POST['ajout']) && $_POST['ajout'] == 'Ajout') 
{	
		if // si les champs sont vides
 		(
			(empty($_POST['description'])) 
			OR 
			(empty($_POST['contact']))
			OR 
			(
			(empty($_POST['categorie']))
			AND 
			(empty($_POST['categorie2']))
			)
		)//fin if vérification des champs vides
 
		{$erreur='merci de remplir tous les champs marqués de*';
		}
 
		else // c'est bien rempli
		{	
 			// on se connecte à notre base 
			$base = mysql_connect ('localhost', '', '');
			mysql_select_db ('', $base);
    			// j'épargne les définitions de variables
$jour = date("Y-m-d");
			$sql1 = 'INSERT INTO aide_news VALUES ("","'.$_SESSION['clef'].'","'.$description.'","'.$contact.'","'.$categorie.'","'.$date.'","'.$jour.'")'; 
 
   			 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
       		 mysql_query($sql1) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());        
 
       		 // on ferme la connexion à la base
 
 			echo "<script language='javascript'>window.location.href='newsajout_ok.php'</script>";
		}// fin du else bien rempli	
	exit();
 	mysql_close();
 }// fin du if post
?>
 
 
puis html etc... et 
  <?php
if (isset($erreur)) echo '<br>'.$erreur.'<br>';
?>

Quelqu'un y voit plus clair que moi ?
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 13h22   #6
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
C'est bien ce que je pensais...

Tu attribues une valeur à $erreur si le formulaire a été soumis...tu fais ton traitement puis.....exit().

Etant donné que l'affichage de $erreur est en dehors du "if formulaire soumis" et que tu arretes le script avec exit(), ton sript me va pas jusqu'à la lecture de $erreur.

Donc pour afficher le message d'erreur sur une page blanche, tu places

Code :
if (isset($erreur)) echo '<br>'.$erreur.'<br>';
juste avant exit();

Pour afficher le message d'erreur et le formulaire tu supprimes simplement le exit();

Voila...il faut bien que tu comprennes que la fonction exit() termine l'execution du script courant.

J'espère que ca réglera ton problème...
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2006, 14h13   #7
Membre régulier
 
Avatar de carelha
 
Inscription : mars 2006
Messages : 168
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 168
Points : 74
Points : 74
Merci beaucoup, effectivement ca marche en supprimant les deux lignes. cependant, il faut bien que je les intègre dans le code (exit, my sql close), et là, je ne vois plus où les intégrer au code ?

Merci de ton aide
carelha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2006, 09h24   #8
Membre du Club
 
Inscription : juillet 2006
Messages : 85
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 85
Points : 55
Points : 55
Rebonjour Carelha,

Tu n'es absolument pas obligé de supprimer mysql_close() , cette fonction n'a pas d'incidence sur le déroulement du script (elle ferme la connexion à la bdd).

Pour ce qui est du exit(), tu dois le laisser uniquement si tu veux empecher que le formulaire se réaffiche.Etant donné que ton message d'erreur invite à compléter ce formulaire --> supprime ce exit(). Il n'y a aucune obligation d'avoir un exit() dans un script php .

La solution qui te convient le mieux est donc de déplacer ton code d'affichage de $erreur avant le mysql_close() et de supprimer exit().

En fait c'est ce que je disais dans mon message précédent.....

...bonne chance
Attilius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h22.


 
 
 
 
Partenaires

Hébergement Web