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 19/12/2010, 18h22   #1
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Par défaut transmission d'une chaine vide à partir d'une fonction

Bonjour
Si vous trouvez un meilleur titre, n'hésitez pas ...

page formulaire :

Code :
1
2
3
$formulaire =  array("jour" => "validation_date_rencontre","mois"=>"validation_date_rencontre");
$from = "rempli";
VerifremplissageChamps($formulaire,$from);

page fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function VerifremplissageChamps($formulaire,$from)
{
	foreach ($formulaire as $champ =>$validation)
			{	
				if( (!isset($_POST[$champ]) || empty($_POST[$champ])) && $from == "rempli" )
				{
					global $erreur;
					array_push($erreur, "<script type=\"text/javascript\">document.getElementById('".$validation."').innerHTML += 'champ à remplir'</script>");
				}
				else
				{
					global $field;
					global $$champ;
					array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
					$$champ = addcslashes(mysql_real_escape_string(ucwords(strtolower ($_POST[$champ]))),'%_');
				}
			}
}
Explications : j'ai recensé les champs de mon formulaire dans un array ($formulaire) pour vérifier s'ils sont vides ou pas, grâce à ma fonction. S'il y a en a un qui l'est, un message d'erreur est transmis, sinon le champ saisi est conservé dans un tableau $field.
La fonction ... fonctionne sauf qu'il transmet en plus des erreurs et des champs remplis, une chaine vide supplémentaire à la fin.

Je site le validateur :
Citation:
Avertissement*: Une chaîne vide a été transmise à getElementById().
Erreur*: document.getElementById("") is null
Même si cela ne perturbe pas le fonctionnement de la fonction, j'aimerai savoir pourquoi cette chaîne vide apparaît.

Ps: quand je mets la fonction dans la page du formulaire aucune chaîne vide n'est transmise.

Merci beaucoup pour votre réponse
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 08h35   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 24

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Salut,

Essaye de définir ta variable $$champ globale après le array_push.

Par contre je ne vois pas tout le projet mais je peux te dire de manière plus ou moins sûre que ta façon d'utiliser des variables globales n'est pas correct. Normalement c'est vraiment un mot-clé à éviter... Y a d'autres manières bien plus propres.

Bonne journée !
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h03   #3
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par Yoteco Voir le message
Salut,

Essaye de définir ta variable $$champ globale après le array_push.

Par contre je ne vois pas tout le projet mais je peux te dire de manière plus ou moins sûre que ta façon d'utiliser des variables globales n'est pas correct. Normalement c'est vraiment un mot-clé à éviter... Y a d'autres manières bien plus propres.

Bonne journée !
Normalement, on devrait pouvoir retourner les différentes variables créées grâce à return, mais je n'ai jamais réussi à le faire fonctionner. Pourquoi? je ne sais pas. je retourne des variables pour pouvoir les tester après (pour qu'elles répondent à différents critères) Pour le mot-clef, tu as entièrement raison, désolé.
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h25   #4
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 24

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Euh ton histoire de return est effectivement bizarre... Car il n'y a pas plus simple !

Code :
1
2
3
4
5
6
function maFonction()
{
    return 'Salut';
}
 
echo maFonction();
Par contre est-ce que sa fonctionne si tu fais le changement que je t'ai demandé de faire ?
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 16h07   #5
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
oui, j'ai bien essayé, mais il me rajoute une toujours une chaine vide en plus ...
Pour le return, je n'y arrive vraiment pas.
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 16h16   #6
Membre habitué
 
Avatar de elvan49
 
Laurent
Développeur Web
Inscription : octobre 2006
Messages : 226
Détails du profil
Informations personnelles :
Nom : Laurent
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 226
Points : 141
Points : 141
Envoyer un message via Skype™ à elvan49
Par défaut for plutôt que foreach

Bonjour,

Et tu ne préférerais pas utiliser la boucle for plutôt que foreach ?
J'ai toujours eu le sentiment qu'on maîtrisait mieux ce qui se passait dans la boucle...
__________________
"n'imprimez ces messages que si nécessaire... Préservez notre planète"
elvan49 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/12/2010, 07h36   #7
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
On m'a toujours conseiller d'utiliser foreach, car elle était plus rapide ...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
foreach ($formulaire as $champ =>$validation)
			{	
				if( (!isset($_POST[$champ]) || empty($_POST[$champ])) && $from == "rempli" )
				{
					array_push($erreur, "<script type=\"text/javascript\">document.getElementById('".$validation."').innerHTML += 'champ à remplir'</script>");
					return $erreur;//j'essaye de retourner mon array
				}
				else
				{
					global $field;
					global $$champ;
					array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
					$$champ = addcslashes(mysql_real_escape_string(ucwords(strtolower ($_POST[$champ]))),'%_');
				}
			}
C'est bien comme ça que l'on utilise return? J'ai tout essayer, je n'ai pas réussi
Merci d'avance
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 09h06   #8
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
essaye avec

Code :
1
2
 
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
plutôt que array_push() pour voir. Sinon oui oui, c'est bien comme ça qu'on utilise return.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 13h00   #9
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Merci pour le bout de code que tu m'as donné radicaldreamer, c'est vrai que c'est mieux comme ça.
Par contre je ne comprend pas pourquoi mon array est vide suite à la fonction.

Page formulaire
Code :
1
2
3
4
5
$formulaire =  array("jour" => "validation_date_rencontre","mois"=>"validation_date_rencontre");
$from = "rempli";
VerifremplissageChamps($formulaire,$from);

print_r($erreur); //est vide
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 13h38   #10
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Ca n'est pas vide..
C'est juste que tu affiches ce qu'il y a dans ton tableau... Et vu que c'est du JS, bah c'est pas affiché mais interprété en JS.

Alors ça serait plutot du genre:

Code :
$erreur[] = htmlentities("<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
Et en version plus "propre":
Code :
$erreur[] = htmlentities('<script type="text/javascript">document.getElementById("'.$champ.'").value = "'.$_POST[$champ].'"</script>');
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 16h50   #11
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par radicaldreamer Voir le message
Ca n'est pas vide..
C'est juste que tu affiches ce qu'il y a dans ton tableau... Et vu que c'est du JS, bah c'est pas affiché mais interprété en JS.
Si c'est interpréter pourquoi cela ne change pas les div? J'utilise pourtant foreach couplé à un echo pour faire afficher le javascript.

Par contre
Code :
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
me renvoi toujours une chaine vide à a fin ...
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 20h26   #12
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
J'ai testé exactement le code

Code :
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
Et ça fonctionne. certes c'est "vide" comme tu dis. Mais ça ne l'est pas... c'est pas "vide" c'est "non affiché"... Affiche la source de ta page après le print_r($erreur); tu verras...

Maintenant, si ça ne te change pas les div c'est que peut-être pour changer le contenu d'une div il faut utiliser ".innerHtml" et non ".value". Le ".value" étant pour les champs input si j'me souviens bien.

Cordialement, Guillaume.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 20h40   #13
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 700
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 700
Points : 3 269
Points : 3 269
Salut

Une suggestion comme ça.
Au lieu de crée un code Javascript généré en Php qui une fois interprété par le navigateur aura pour but de modifier le contenu d'une DIV, pourquoi ne pas modifier directement le contenu en Php, tout court ?

Si lors d'une vérif faite en Php on a détecté une erreur, alors on sait à l'avance qu'il y a erreur.
De plus, si selon l'erreur on a une autre proposition de valur à proposer, là aussi on sait à l'avance la nouvelle valeur.
Donc tout ça avant de s'occuper de la partie cliente (HTML,Javascript).
Autant générer le HTML avec une valeur plus adéquat en cas d'erreur, ou tout simplement remettre la même valeur erronée en rajoutant un message invitant l'utilisateur à la corriger.


Franchement, il y a aucun intérêt de le faire en JS, ce n'est qu'une sur-couche supplémentaire dans un cas comme celui-ci, sans compter que c'est se compliquer la vie.


Au niveau Javascript et en se qui concerne les vérifications de formulaire, le principal intérêt c'est lorsque les vérifs sont effectuées sans qu'il y ait un rechargement de page, donc $_POST, ne peu pas intervenir dans ce cas là, car $_POST sera connu après validation et une fois arrivée sur le serveur.

Donc tout l'art est de créer des vérifs qui pourront être prévues sans avoir à interroger sa Bdd par exemple.
Si ce n'est pas possible, Javascript ne peu pas intervenir (sauf genre Ajax, et encore que là ça se discute).


Mise à par ça, la façon qui me semble la plus simple lorsqu'il faut agir sur des éléments dans un formulaire en Javascript, c'est justement exploiter le formulaire plutôt que getElementById().
En gros :
Un formulaire doit avoir un nom unique, donc faire référence à son nom.
Puis chaque nom des éléments (genre INPUT, SELECT, etc ...) dans un formulaire doivent être uniques aussi.
Du coup, on peu faire comme ceci :
Code :
1
2
 
document.forms['form_nom'].elements['element_nom'].value = 'Une valeur';
Par contre, si le but est de modifier le contenu d'une DIV, il faudrait plutôt faire comme ceci :
Code :
1
2
 
document.getElementById('UnID').innerHTML = 'Contenu de la DIV';
En somme, ...blablabla.value recherche l'attribut VALUE de l'élément que l'on tente d'atteindre et de changer sa valeur, et non le contenu entre la balise.

En gros, ne pas confondre ceci :
Code :
<input type="text" name="un_nom" value"Une valeur" />
et ça :
Code :
<div id="UnID">Contenu de la DIV</div>
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 12h17   #14
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par RunCodePhp Voir le message
Salut

Une suggestion comme ça.
Au lieu de crée un code Javascript généré en Php qui une fois interprété par le navigateur aura pour but de modifier le contenu d'une DIV, pourquoi ne pas modifier directement le contenu en Php, tout court ?

Si lors d'une vérif faite en Php on a détecté une erreur, alors on sait à l'avance qu'il y a erreur.
De plus, si selon l'erreur on a une autre proposition de valur à proposer, là aussi on sait à l'avance la nouvelle valeur.
Donc tout ça avant de s'occuper de la partie cliente (HTML,Javascript).
Je serai très heureux d'apprendre comment changer le contenu d'une div en passant uniquement par php, sans JavaScript. J'ai cherché (surement mal), mais je n'ai pas trouvé)

Citation:
Envoyé par RunCodePhp Voir le message
Au niveau Javascript et en se qui concerne les vérifications de formulaire, le principal intérêt c'est lorsque les vérifs sont effectuées sans qu'il y ait un rechargement de page, donc $_POST, ne peu pas intervenir dans ce cas là, car $_POST sera connu après validation et une fois arrivée sur le serveur.

Donc tout l'art est de créer des vérifs qui pourront être prévues sans avoir à interroger sa Bdd par exemple.
Si ce n'est pas possible, Javascript ne peu pas intervenir (sauf genre Ajax, et encore que là ça se discute).
Quand je passe par le serveur, je vérifie tout d'un coup, la forme et le fond ( donc interrogation de la BDD) Je ne fais pas de vérification
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 19h51   #15
Membre Expert
 
Inscription : septembre 2010
Messages : 1 234
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 234
Points : 1 554
Points : 1 554
Citation:
Envoyé par ledisciple Voir le message
1/ Je serai très heureux d'apprendre comment changer le contenu d'une div en passant uniquement par php, sans JavaScript. J'ai cherché (surement mal), mais je n'ai pas trouvé)

2/ Quand je passe par le serveur, je vérifie tout d'un coup, la forme et le fond ( donc interrogation de la BDD) Je ne fais pas de vérification
1/ ??? ça sert à quoi php sinon de faire afficher finalement du contenu dans des div ?

2/ Ben ... ta fonction "VerifremplissageChamps" on dirait bien une fonction de vérification en php, et php passe nécessairement par le serveur...

Si tu fais afficher des messages d'erreurs php par javascript le visiteur n'aura aucune information de retour si js est désactivé... alors qu'il est facile de faire autrement.

On fait normalement tout le script complet en php (avec renvoi des messages d'erreurs) et ensuite pour le confort du visiteur et diminuer un peu la charge du serveur, on double par un contrôle javascript indépendant qui sera fait avant la requête au serveur (comme déjà expliqué par RunCodePhp).

De cette façon ton script fonctionne avec ou sans js activé et est optimisé si js est activé.

Concernant les fonctions php, le return ne peut retourner qu'une variable, pas plusieurs, mais cette variable peut être un tableau.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 21h31   #16
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par ABCIWEB Voir le message
1/ ??? ça sert à quoi php sinon de faire afficher finalement du contenu dans des div ?
Je vais peut-être passer pour un sot, mais comment demandes-tu au serveur, d'écrire par exemple "voila" dans la div a plutôt que dans la div b ?
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 08h44   #17
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 700
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 700
Points : 3 269
Points : 3 269
Citation:
Envoyé par ledisciple
Je vais peut-être passer pour un sot, mais comment demandes-tu au serveur, d'écrire par exemple "voila" dans la div a plutôt que dans la div b ?
Comment fait tu alors pour distinguer un lien plutôt qu'un autre ?
De même que quand tu crée ton formulaire, tu crée bien 2 champs INPUT de type TEXT avec un nom genre "login" et "mot_de_passe", non ?
En tout cas, le serveur n'écrit rien, c'est toi et ton code qui va permettre de généré un contenu HTML (voir Javascript, c'est pareil), au bout, ce contenu sera renvoyé vers le client.
Donc tout ce qu'on génère est connu d'avance.


A mon avis, c'est comment les choses se déroulent qui n'est pas très clair de ton coté, tu ne visualise pas bien.

Mais encore une fois : Si la personne valide le formulaire (submit), une requête HTTP est envoyée vers le serveur avec le contenu du formulaire, c'est ce qu'il y a dans le $_POST.
Ces données sont connues dès la 1ère ligne de code dans sa page, ce qui veut dire qu'on a tout le loisir de générer un contenu HTML en réponse adapté selon la situation.

Donc si on souhaite remettre le même contenu, même erroné comme un mauvais mot de passe, on peu le faire, il n'y a pas besoin de JS pour ça.


Exemple simple : (page identification.php)
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
 
<?php
// PARTIE TRAITEMENTS (vérif formulaire)
// On initialise les données nécessaires
$login = '';
$pass = '';
$erreur = FALSE;
$msg_erreur = array();
 
if (isset($_POST['envoyer'], $_POST['login'], $_POST['pass'])) {
    $login = $_POST['login'];
    $pass = $_POST['pass'];
 
    // On vérififie que la personne existe dans la BDD table "users"
    // SELECT COUNT(*) AS total, login, pass FROM users WHERE login= $login && pass = $pass
    $user = mysql_fetch_array($rs_user);
 
    if ((int)$user['total'] > 0) {
        // OK, le user existe : Partie identification
        // ... etc ...
    }
    else {
        $erreur = TRUE;
        $msg_erreur[] = 'Veuillez saisir une identification valide.';
    }
}
 
 
 
// PARTIE HTML (message d'erreurs / formulaire)
// On ré-insert les données en cas d'erreur
?>
<!DOCTYPE ...etc...>
<html>
<head>
    <title>IDENTIFICATION</title>
</head>
<body>
<?php
if ($erreur === TRUE && !empty($msg_erreur)) {
    echo '--- ERREUR ---<br />';
    foreach ($msg_erreur as $msg) {
        echo $msg.'<br />';
    }
}
?>
 
<form name="form_login" action="indentification.php" method="post">
    <input type="text" name="login" value="<?php echo $login ?>" /><br />
    <input type="text" name="pass" value="<?php echo $pass ?>" /><br />
    <input type="submit" name="sub" value="envoyer" />
</form>
 
</body>
</html>
Tout ceci n'est qu'un exemple (pas testé), mais malgré tout, toutes les vérifications ce font coté serveur.
Il alors possible de ré-insérer les données saisies par l'utilisateur, même erroné, de même que générer un message d'erreur dans le contenu de la page.
Donc le contenu de la page s'adapte bien selon la situation et sans avoir besoin de désigner quoi que ce soit, non ?
Tout ça, sans l'ombre d'un bout de code Javascript.


Maintenant, il est pratique de prévoir, donc faire quelques vérifications en Javascript simples, comme par exemple vérifier que les champs login/pass ne sont pas vide, où/et qu'il y a eu un certain nombre minimum de caractères de saisies.
Si ce n'est pas le cas, on afficher une boite d'alert avec un message qui va bien, et surtout le formulaire ne sera pas validé (soumis) tant que ce minima est invalide.
Mais ici, on reste totalement coté client, et il ne sera pas possible de récupérer une donnée dans $_POST par exemple vu qu'on est pas coté serveur, c'est là la grosse différence.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 16h37   #18
Membre éclairé
 
Avatar de ledisciple
 
Homme François
observateur de nuage niveau 2.3
Inscription : août 2008
Messages : 546
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 27
Localisation : France

Informations professionnelles :
Activité : observateur de nuage niveau 2.3

Informations forums :
Inscription : août 2008
Messages : 546
Points : 313
Points : 313
Citation:
Envoyé par RunCodePhp Voir le message
A mon avis, c'est comment les choses se déroulent qui n'est pas très clair de ton coté, tu ne visualise pas bien.

ah sisi t'inquiète pas, je vois très bien ce qu'il se passe, sauf que tu ne réponds pas à ma question : J'aurai eu envie q'un message s'affiche dans une div indépendante(en cas d'erreur), après la validation du formulaire, bref que php ( je fais un raccourci : je sais que c'est nous qui programmons ) génère un message d'erreur dans une div situer à côté du input sans passé par javascript.

Code :
1
2
3
4
5
6
<div class ="contenaire_form">
		<div class="champ_area">
			Numéro : <input name="numrencontresaisie" id="numrencontresaisie" onchange="VerifNumRencontre()"  size="8" type="text" value="" maxlength="8" />
		</div>
		<div class="validation_form_javascript" id="validation_num_rencontre">message d'erreur éventuel</div>
	</div>
Je sais maintenant que c'est impossible
Pour return, j'ai abandonné, je n'arrive pas à le faire fonctionner.
Sinon pour mon problème de chaine vide, cela venant d'une autre fonction qui doublait cette commande :
Code :
array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
En tout cas merci beacoup à tous
__________________
_____________________________________________
Tours Football Club - Turonorum Civitas Libera
ledisciple est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 16h47   #19
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
ledisciple, je te répète que ton return fonctionne mais qu'il interprète la valeur en tant que JAVASCRIPT, donc il l'affiche pas sur la page mais regarde correctement ton code source...

Pour preuve, fait une page test.php et fous-y

Code :
1
2
3
4
5
 
<?php
  $erreur[] = '<script type="text/javascript">alert("lol");</script>';
  print_r($erreur);
?>
Maintenant pour ta ligne $erreur[], met celle ci et fait un return de erreur[]

Code :
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').innerHTML = '".$_POST[$champ]."'</script>";
Et test pour voir.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 16h50   #20
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Preuve encore plus flagrante que ça marche:

Code :
1
2
3
4
5
6
7
8
9
 
 <div id="lol">
 TRUCMUCHE
 </div>
 
<?php
  $erreur[] = '<script type="text/javascript">window.document.getElementById("lol").innerHTML = "lol";</script>';
  echo $erreur[0];
?>
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer 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 09h07.


 
 
 
 
Partenaires

Hébergement Web