Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 15/02/2011, 12h25   #1
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Par défaut Petit soucis de validation

Bonjour,

C'est surement simple !! mais je vois pas
Quand je valide le formulaire et que je n'ai pas de message $id_proprio ne s'affiche pas
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (isset($_SESSION['id_proprio'])){
	$id_proprio = $_SESSION['id_proprio'];
}
$message = array();
 
if (isset($_POST['valider'])){
	// Affichage des messages/infos
	if (!empty($message)) {
    		foreach ($message as $msg) {
        		echo '<p align="center"><span style="color:red">'.$msg.'</span></p>';
    		}
	}
	//si pas de message, enregistrement de l'annonce
	if (empty($message)) {
		echo "$id_proprio";
	}
}
Je fais un echo de $id_proprio juste pour voir si mes valeurs sont correctes
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 13h55   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Assure toi d'avoir bien démarré la session et controle son contenu.
Au passage simplement
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 19h39   #3
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Var_dump($_SESSSION) me renvoie bien tous les paramètres passés en session dont id_proprio.

Si je fais un echo $id_proprio juste après if (isset($_POST['valider'])) l'id_proprio apparait bien.

Si je provoque une erreur j'entre bien dans la boucle foreach

Est ce que ce n'est pas dû à $message=array(); ?
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 19h55   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 239
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 239
Points : 1 559
Points : 1 559
Citation:
Envoyé par philippef Voir le message
Est ce que ce n'est pas dû à $message=array(); ?
Logiquement il faudrait définir le contenu de $message à l'intérieur de la condition if (isset($_POST['valider']))
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 20h34   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
Est ce que ce n'est pas dû à $message=array(); ?
Je pensais que cette ligne n'était pas que pour le test.
Si tu définis manuellement $message, a quoi cela sert-il de tester sa valeur juste en dessous ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 20h51   #6
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Citation:
Envoyé par sabotage Voir le message
Je pensais que cette ligne n'était pas que pour le test.
Si tu définis manuellement $message, a quoi cela sert-il de tester sa valeur juste en dessous ?
Dans une autre page je controle que le formulaire est correctement rempli et j'utilise $message[] = 'mon texte'; J'ai environ 15 controles

Avant d'enregistrer le formulaire je controle $message . Si il y a des messages je les affiche, s'il n'y a pas de message alors j'enregistre.
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 20h53   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pourquoi dans le code que tu nous montres définis tu $message comme un tableau vide et juste en dessous controles-tu s'il est vide ou non ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 21h08   #8
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Pardon si je ne suis pas clair dans mon explication.
Je redonnes le code complet de ma page
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
<?php
require('proprietaires/annonces/fonctionsphp.php');
require ('connect.php');
if (isset($_SESSION['id_proprio'])){
	$id_proprio = $_SESSION['id_proprio'];
}
$message = array();
 
$departement = "";
//
$displayDiv0 = 'none';
$displayDiv1 = 'block';
$displayDiv2 = 'none';
$displayDiv3 = 'none';
$displayDivSaison = 'none';
$semaine = array();
$Disponibilite = array();
 
$year = date('Y');
$date = date("Y-m-d");
//récupération du n° de la dernière annonce
$sql = mysql_query("SELECT ref_annonce FROM logements ORDER BY ref_annonce DESC Limit 1");
$nombreligne = mysql_num_rows($sql);
if ($nombreligne > 0){
	$res = mysql_fetch_array($sql);
	$ref_annonce = $res['ref_annonce'];
	$ref_annonce = $ref_annonce + 1;
}
else {
	$ref_annonce = "000001";
}
include ('b_control_formulare.php');
 
//*************************************************************
//   Enregistrements dans la table logements
//*************************************************************
if (isset($_POST['valider'])){
	// Affichage des messages/infos
	if (!empty($message)) {
    		foreach ($message as $msg) {
        		echo '<p align="center"><span style="color:red">'.$msg.'</span></p>';
    		}
	}
	//si pas de message, enregistrement de l'annonce
	if (empty($message)) {
		echo $id_proprio $type_logement $codep $ville;
	}
}
//******** FIN *************
if (empty($_SESSION['id_proprio'])){
	$displayDiv1='none'; 
	echo "<div style='position:relative;width:470px;margin-left:10px;background-color:#ffffff;'>";
	echo "<p align='center'><span style='color:red;'><br /><br />Merci de vous enregistrer ou de vous identifier pour déposer une annonce</span></p></div>";
}
else {
	include ('c_insert_update.php');
	include ('d_property_formulare.php');
	include ('e_calendar_formulare.php');
}
?>
j'espère que c'est plus clair comme ça
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 21h12   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
tu as un problème de syntaxe :
Code :
1
2
3
if (empty($message)) {
	echo $id_proprio . ' ' . $type_logement . ' ' . $codep $ville;
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 21h27   #10
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Même si je ne mets que echo $id_proprio; rien ne s'affiche.

C'est bien ce code qui pose problème
Code :
1
2
3
if (empty($message)) {
           echo $id_propio;
}
Puisque ce code fonctionne et il affiche les messages
Code :
1
2
3
4
5
	if (!empty($message)) {
    		foreach ($message as $msg) {
        		echo '<p align="center"><span style="color:red">'.$msg.'</span></p>';
    		}
	}
Est ce qu'il y a une autre solution ?
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 21h28   #11
Membre chevronné
 
Avatar de micetf
 
Homme Fred
Professeur des Ecoles
Inscription : mai 2009
Messages : 503
Détails du profil
Informations personnelles :
Nom : Homme Fred
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Professeur des Ecoles
Secteur : Enseignement

Informations forums :
Inscription : mai 2009
Messages : 503
Points : 701
Points : 701
Je ne serais pas étonné si $message n'était pas vide.
Deux manières de le savoir :
- afficher le code source généré et voir si cette ligne html apparait (le contenu du tableau $message a été parcouru, mais il contient un espace) :
Code :
<p align="center"><span style="color:red"> </span></p>
- ajouter cette ligne avant le test sur le $_POST['valider'] (test explicite) :
Code :
echo (empty($message)) ? '<p>Message vide</p>' : '<p>Message non vide</p>';
Si mon hypothèse se confirme, il faudra aller faire un tour dans b_control_formulare.php et voir comment tu gères $message dans ce script.
Fred
micetf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 21h45   #12
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Je viens de regarder le code source et je n'ai rien vu d'anormal (pas d'espace)

par contre le 2è test affiche 'Message non vide'.

Pour les zones obligatoires mes messages sont construits de la même façon
Code :
$message[] = "La zone XX n'est pas renseignée.";
Est ce que ' peut créer un problème?
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 21h53   #13
Membre chevronné
 
Avatar de micetf
 
Homme Fred
Professeur des Ecoles
Inscription : mai 2009
Messages : 503
Détails du profil
Informations personnelles :
Nom : Homme Fred
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Professeur des Ecoles
Secteur : Enseignement

Informations forums :
Inscription : mai 2009
Messages : 503
Points : 701
Points : 701
Je persiste.
Quelque part dans b_control_formulare.php,
tu dois faire ceci :
et, dans ce cas, $message n'est pas vide :
il contient un élément vide (ce qui n'est pas pareil).

D'où la ligne html dans le code source :
Code :
<p align="center"><span style="color:red"></span></p>
sans espace (je fais une concession) entre les balises <span>.
Si $message était réellement vide, cette ligne n'existerait pas.

Me trompe-je ?
micetf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 22h01   #14
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Tu veux dire que je dois traiter ce code autrement ?
Code :
1
2
3
4
5
6
7
if (!empty($_POST['nbre_pieces'])) {
	$chaine = $_POST['nbre_pieces'];
	if (tout_numerique($chaine))
		$message[] = "";
	else
		$message[] = "Le nombre de pièces n'est pas valide.";
}
Je n'ai pas d'espace entre <span> et </span>
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 22h07   #15
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tout simplement :
Code :
1
2
3
if (isset($_POST['nbre_pieces']) && !tout_numerique($_POST['nbre_pieces'])) {
	$message[] = "Le nombre de pièces n'est pas valide.";
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 22h08   #16
Membre chevronné
 
Avatar de micetf
 
Homme Fred
Professeur des Ecoles
Inscription : mai 2009
Messages : 503
Détails du profil
Informations personnelles :
Nom : Homme Fred
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Professeur des Ecoles
Secteur : Enseignement

Informations forums :
Inscription : mai 2009
Messages : 503
Points : 701
Points : 701
Effectivement,
en remplaçant :
Code :
1
2
3
4
	if (tout_numerique($chaine))
		$message[] = "";
	else
		$message[] = "Le nombre de pièces n'est pas valide.";
par
Code :
1
2
	if (!tout_numerique($chaine))
		$message[] = "Le nombre de pièces n'est pas valide.";
Lorsqu'il n'y a pas de message, tu devrais voir ton id_proprio s'afficher.
Fred
micetf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 22h10   #17
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Merci à vous Sabotage et Micetf, c'est bien $message= "" qui m'ennuie.

Je viens de corriger et ça marche
philippef 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 10h55.


 
 
 
 
Partenaires

Hébergement Web