PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 26-04-2012 06:08:02

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Fonction regex avec Json et PHP

Bonjour!

Je cree une fonction regex, qui va s'appliquer sur tous les champs (nom, prenom,..) en utilisant Json:

<script type="text/javascript">
 
/* je cree une fonction du retour du champs */
function verifierRegex(champs)
{
// je verifie si le message retourne par JSON est Regex
        if(response.champs+'_verif' == 'Regex')
        {            
// j'affiche l'erreur dans la zone concernee
                $('#'+champs).text('Regex mal construite').show();
        }
       
}
 

// DOM
$(document).ready(function(){
 
// au focus sur le nom
        $('.nom').focus(function(){
 
// serlializer les donnees
                var dataString = $('form').serialize();
 
        $.ajax({
        type: 'POST',
        url: 'verif.php',
        data: dataString,
        dataType: 'json',
        success: function(response) {
 
// appeller la fonction
                verifierRegex('nom'));
 
        }
        })
        });
        });
 
</script>

verif.php

<?php
// poster le nom
$nom    = $_POST['nom'];

// j'ai mis par defaut Regex afin de tester
$nom_verif = 'Regex';

// je recupere le retour
$retour['nom_verif'] = $nom_verif;

// je l encode en JSON
echo json_encode($retour);
?>

merci a vous

Dernière modification par rimie (27-04-2012 05:47:28)

Hors ligne

#2 26-04-2012 06:23:22

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Fonction regex avec Json et PHP

Saluton,
Et alors ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 26-04-2012 07:09:14

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Fonction regex avec Json et PHP

Et alors ? !!!!!!!!!!!!!!!


ZORO est arriiiiivvvvéééééééééééééééééhhéééééééééééhhhhééééééééééééééééééé
sans s'pressééééééééééééééééééééhhééééééééééééhhhéééééééééééééééééééé


à vrai dire, j'ai pas bien compris non plus  big_smile:D

a++

Hors ligne

#4 26-04-2012 08:27:50

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

ca me retourne undefined, est ce que la methode d'inclure une fonction dans une autre est correcte

Hors ligne

#5 26-04-2012 11:51:48

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Fonction regex avec Json et PHP

>>est ce que la methode d'inclure une fonction dans une autre est correcte

oui.

montre un peut ton code si tu veux qu'on t'aide.

a++

Hors ligne

#6 26-04-2012 13:00:42

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

c'est la fonction verifierRegex() qui est aus ein de document

Hors ligne

#7 26-04-2012 16:27:03

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Fonction regex avec Json et PHP

tu ne parse pas ton JSON wink

a++

Hors ligne

#8 26-04-2012 21:54:06

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Fonction regex avec Json et PHP

Bonsoir,

Moi perso, je n'ai qu'une seule chose à dire : Pierrot a visiblement retrouvé la forme big_smile


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 27-04-2012 02:46:53

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

je ne sais pas comment le parser, voila le code en entier pour mieux comprendre:

<head>
<script type="text/javascript" src="../../jquery.js"></script>

<script type="text/javascript">

// fonction de verification de la longueur des caracteres
function Chars(data, field)
{  
  if(data.field+'_check' == 'caracteres')
  {            
    $('.'+field+'Error').html('<B>Le champs X contient plus de 40 caracteres ou moins de 5 caracteres</B>').show(1000);
  }
  else
  {
    $('.'+field+'Error').html('<B>OK</B>').show(1000);
  }
}

$(document).ready(function(){

  $('.pseudo').keyup(function(){
   
          var dataString = $('form').serialize();
     
        $.ajax({
        type: "POST",
        url: "verif.php",
        data: dataString,
        dataType: "json",
        success: function(data) {
         
          alert(Chars('data', 'pseudo'));

 
  }
  });
  });
  });

</script>

</head>


<form name="advanced" class="advanced" method="POST" accept="<?php $_SERVER['PHP_SELF']; ?>">
Pseudo: <input type="text" name="pseudo" class="pseudo" /><span class="pseudoError"></span><br />
E-mail: <input type="text" name="email" class="email" /><span class="emailError"></span><br />
</form>

verif.php:

<?php
$pseudo = Isset($_POST['pseudo']) ? $_POST['pseudo']  : $pseudo = Null;

$pseudo_check = 'caracteres';

    $return["pseudo_check"] = $pseudo_check;
    $obj = json_encode($return);
    echo $obj;
    //$obj->return;
    //print_r($obj);
?>

merci a vous

Dernière modification par rimie (27-04-2012 05:48:21)

Hors ligne

#10 27-04-2012 04:42:55

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Fonction regex avec Json et PHP


$('.pseudo').keyup(function(){
   
        var dataString = $('form').serialize();
        $.ajax({
        type: "POST",
        url: "verif.php",
        data: dataString,
        dataType: "json",
        success: function(data) {
          ret=JSON.Parse(data);
          alert(ret.pseudo_check);
 
}
 

a++

Hors ligne

#11 27-04-2012 05:52:24

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

voila la reponse:

JSON.Parse is not a function
ret=JSON.Parse(data);

Hors ligne

#12 27-04-2012 06:24:40

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Fonction regex avec Json et PHP

scuze :
c'est: JSON.parse(data)

a++

Hors ligne

#13 27-04-2012 06:26:51

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

ret = JSON.parse(data);
          alert(ret);


voila:

JSON.parse: unexpected character

ret = JSON.parse(data);

voila les donnees json:

{"pseudo_check":"caracteres"}

Dernière modification par rimie (27-04-2012 06:27:14)

Hors ligne

#14 27-04-2012 08:17:40

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

on n'oublie pas que je devais utiliser la fonction function Chars(data, field)

Hors ligne

#15 27-04-2012 11:24:44

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Fonction regex avec Json et PHP

Juste pour info, JSON.parse est instable sous IE8 tout comme JSON.stringify et parfois (très rarement) avec d'autres navigateurs. Pour le stringify on est obligé de faire avec et utiliser des solutions maison pour le stabiliser. Je te recommande fortement pour tout ce qui est JSON et autre que stringify en méthode, vu que tu utilises JQUERY, d'utiliser les méthodes JSON jquery à chaque fois que cela t'es possible. Sinon pour ton parse, pour les mêmes raisons, utilises plutôt jQuery.parseJSON()

Ensuite au niveau de ton code, pourquoi mets-tu des guillemets à caractères? A mon avis ton problème viens de là.

++

EDIT: Sinon un conseil, active ton debuggeur, place un point d'arrêt sur la ligne de ton parse et vérifie à l'éxécution du bon format de ret, il se peut que si tu as un message d'erreur qui est retourné en même temps que ta variable JSON, ou un caractère parasite qui a été généré par une erreur dans ton code, cela soit la raison de ton problème car le parseur ne peut parser qu'une chaîne JSON valide.

Dernière modification par Jc (27-04-2012 12:17:17)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 28-04-2012 01:40:17

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

j'utilise firefox 11
je veux bien integrer une la fonction Chars au sein de la methode document

Hors ligne

#17 28-04-2012 10:37:46

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 191

Re : Fonction regex avec Json et PHP

elle doit faire quoi ta fonction ?
a++

Hors ligne

#18 29-04-2012 13:13:24

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

Pierrot a écrit :

elle doit faire quoi ta fonction ?
a++

je cree une fonction pour verifier la regex des champs, par exemple, j'ai 3 formulaires dans mon site, et chaque formulaire a 2 champs, donc un total de 6 verifications regex, au lieu de mettre:


document.ready
{
// verification champs 1 formulaire 1
// verification champs 2 formulaire 1
// verification champs 3 formulaire 1

// etc

// verification champs x formulaire n

}
 

je mets comme ca:


$(id_champs_a_verifier).keyup(fonctionRegex);
 

et fonctionRegex aura tous les parametres necessaires: la regex, la class du champs, la place ou l'erreur va s'afficher,...

j'aurais 6 lignes (6 champs a verifier) au lieu de mettre document.ready + la verification de chaque champs

Hors ligne

#19 29-04-2012 21:53:46

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Fonction regex avec Json et PHP

Bonsoir,

Ce que tu souhaites faire, c'est chouette sur le papier, mais faudra que tu m'expliques comment tu fais pour

1) Appliquer un pattern qui fonctionne pour tous les champs d'un même formulaire.
2) Faire matcher une expression au fil de l'eau.

Merci pour tes réponses.

Dernière modification par Jc (29-04-2012 21:57:55)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#20 30-04-2012 03:02:33

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

Jc a écrit :

1) Appliquer un pattern qui fonctionne pour tous les champs d'un même formulaire.

le pattern, ou bien une expression reguliere, serait differente d'un cas a un autre, par exemple:
nom: a-z
password: a-zA-Z

avec une fonction PHP:


function checkRegex($regex, $field)
    {
        if(preg_match($regex, $field))
        {
            return TRUE;
        }
            return FALSE;
    }
 

alors avec cette fonction, je vais mettre:

nom:


checkRegex('a-z', $nom)
{
$nom_check = 'Match';
}
{
$nom_check = 'NotMatch';
}
 

password:


checkRegex('a-zA-Z', $password)
{
$pass_check = 'Match';
}
{
$pass_check = 'NotMatch';
}
 

a la fin du document je vais encoder les resultats:


$ret["verif_nom"] = $verif_nom;
$ret["verif_pass"] = $verif_pass;

echo json_encode($ret);
 

cote JS au retour des encode json::


function Chars(data, field)
{  
  if(data.field+'_check' == 'caracteres')
  {            
    $('.'+field+'Error').html('<B>Le champs X contient plus de 40 caracteres ou moins de 5 caracteres</B>').show(1000);
  }
  else
  {
    $('.'+field+'Error').html('<B>OK</B>').show(1000);
  }
}
 

c'est la partie que j'ai pose en demande d'explication, comment integrer cette fonction avec celle du DOM

la partie field est le nom du champs, et field_check, c'est le nom du champs + check

Jc a écrit :

2) Faire matcher une expression au fil de l'eau.

cette partie je ne l'ai pas retenue smile

Dernière modification par rimie (30-04-2012 03:04:42)

Hors ligne

#21 30-04-2012 03:43:43

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Fonction regex avec Json et PHP

Bonsoir,

Si tu n'a pas retenu ma deuxième question, c'est pourtant exactement ce que tu essayes de faire avec ton


$(id_champs_a_verifier).keyup(fonctionRegex);
 

En effet, tu requêtes ton serveur (via ajax pour répondre à ton problème d'intégration posé) à chaque caractère saisi dans chaque input de ton formulaire. Non seulement cela ne sert à rien dans ton cas (cela ne sert que pour faire de l'autocomplétion) mais c'est très coûteux en termes de ressources.

Ensuite, si tu souhaites rester efficace, il ne faut pas oublier que utiliser internet c'est avant tout penser client serveur. Il est donc plus opportun de tester tous tes champs à la fin en une seule fois ou champ par champ (sur un onblur par exemple) et de le faire localement c'est à dire ne pas requêter ton serveur PHP pour quelque chose qui peut être fait localement.

Un exemple serait d'inclure ton environnement d'erreur au chargement de la page comme ceci (je détaille les css inline pour l'exemple)


<div>
   <div style="float:left;width:200px"><input type="text" size="10" id="champ_1" onblur="check_field(1)" /><div>
   <div class="Error_class" style="float:left;width:400px;visibility:hidden" id="err_champ_1"></div>
</div>
 

Ensuite en javascript un truc du genre


function check_field(index){
   var $champ=$("#champ_"+index).val();
   if (index===1){
     var patt=new RegExp("[^a-zA-Z@.-_]",'gi');
     // définition dynamique du message d'erreur selon le type d'erreur (length=0, length>maxlength, not match, ...)
     var msg="....";
   }
   // ici la façon de gérer ton erreur à adapter
   if($champ.length>0){$("#err_champ_"+index).html("<span class='ui-icon ui-icon-alert' style='float:left'>"+msg+"</span>").css("visibility","visible");$("#champ_"+index).focus();return false;}else{$("#err_champ_"+index).html("").css("visibility","hidden");}

}
 

++

Dernière modification par Jc (30-04-2012 03:50:47)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#22 01-05-2012 00:24:18

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

oui je suis d'accord avec toi, on peut effectuer ces operations sans charger le serveur, cote JS seulement, maintenant on a une fonction:


function check_field(index){

// traitement de donnees

}
 

si on veut mettre 2 ou plusieurs evenements sur cette fonction, tu as mis onblur:

onblur="check_field(1)"

je veux la mettre de cette maniere:


$("#champ_"+index).focus(check_field(index));
$("#champ_"+index).blur(check_field(index));
$("#champ_"+index).keyup(check_field(index));
 

est ce que c'est une bonne methode?

ma question est TOUJOURS: pourquoi au retour des donnees, alert donne UNDEFINED, c'est quoi l'erreur exactement

Dernière modification par rimie (01-05-2012 00:35:40)

Hors ligne

#23 01-05-2012 08:47:50

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Fonction regex avec Json et PHP

Bonjour,

Concernant ton undefined, je t'ai déjà donné une méthode pour comprendre d'où viens ton problème. Cependant après relecture, tu n'as visiblement toujours pas compris comment fonctionne json du côté php. Quand tu passes une variable JSON du côté php, il te faut d'abord la décoder avec un json_decode() pour pouvoir y appliquer des traitements php, mais cela n'est pas suffisant dans ton cas. En effet, tu traites ta variable json comme si c'était un tableau associatif en php. Or une fois décodé, ton objet json est toujours considéré comme un objet en l'occurence un objet stdClass. Tu dois donc revoir l'ensemble de tes traitements php, parce lorsque tu les renvoie à javascript, à cause de cela, tu te retrouves avec quelque chose qui est tout sauf un objet JSON correctement formé.

Pour le reste et pour pouvoir te répondre pourquoi as-tu besoin de faire un traitement sur .focus, .blur, et .keyup ????

++

Dernière modification par Jc (01-05-2012 08:49:14)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#24 01-05-2012 08:53:10

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Fonction regex avec Json et PHP

Jc a écrit :

Concernant ton undefined,

le resultat cote json est:

{"pseudo_check":"caracteres"}


Jc a écrit :

Pour le reste et pour pouvoir te répondre pourquoi as-tu besoin de faire un traitement sur .focus, .blur, et .keyup ????

c'est juste pour appliquer plusieurs evenements sur un seul champs, apprendre c'est tout

Hors ligne

#25 01-05-2012 08:59:16

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Fonction regex avec Json et PHP

Alors non ce n'est pas la bonne méthode dans le contexte qu'est celui exposé plus haut. Maintenant si c'est pour apprendre, le contexte n'est pas idéal non plus car les problèmes de stopPropagation en jquery ne seront pas/peu perceptibles.

Pour ton undefined, je te laisse relire tout ce que j'ai pu écrire dans ce post, car visiblement tu es passé à côté de certaines choses..

++

Dernière modification par Jc (01-05-2012 09:00:21)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums