8797 sujets

Développement web côté serveur, CMS

BOnjour

Je developpe en ce moment un moyen de renseigner son formulaire a partir de son mail grace a ajax, php et xml. Pour la partie ajax je n'ai pas de soucis, mais suis par contre confronté à un soucis au niveau du php.

En gros je crée un fichier xml grâce a php, et celui ci est interrogé par ajax pour renseigné mon formulaire

Pour le php voici mon code

<
?php
if ($Mail!="")
{
include "connexion.php";

$var.= '<?xml version="1.0"?>'; 
$var.= '<infosuser>';

$req = "select Societe,Civ,Nom,from client where Mail='$Mail'";
$rep = mysql_query($req, $cnx);
$tab=mysql_fetch_row($rep);
$var.='<Societe>'.$tab[0].'</Societe>';


header('Content-Type: text/xml'); 
//cette page retourne les infos de la table sous format xml


$var.='</infosuser>';
echo $var;

?>


Et je ne peux pas recuperer ma societe la par exemple, alors qu'en remplaçant le $tab[0] par exemple_societe ça marche.
Je sais pas si je m'explique bien mais en gros si je tape mes infos en dur je peux les recuperer par mon formulaire, par contre si je met mon $tab[0] impossible j'ai un MonNode[MonCurseur-1].ChildNode[0] has no properties



Le xml s'affiche bien, $tab[0] à bien une valeur,.... c'est juste une histoire devariable et la je vois vraiment plus ce que ça peut être... (des headers a rajouter,..??)

Si quelqu'un connait la solution...


merci d'avance
Salut, pourquoi ne pas faire une requete globale ? Pour récuperer toutes tes variables d'un coup, puis tu fais une seule et unique variable du type :

<?php

if ($Mail)
{

include "connexion.php";

$req = "SELECT * FROM client WHERE Mail='".$Mail."'";
$rep = mysql_query($req, $cnx);
$tab=mysql_fetch_assoc($rep);

$var='<?xml version="1.0"?>

<infosuser>

<Societe>'.$tab['societe'].'</Societe>

</infosuser>';

header('Content-Type: text/xml'); 

//cette page retourne les infos de la table sous format xml

echo $var;

?>


Sinon il y avais un problème sur ta requete, tu avais une virgule de trop (Nom,FROM)
Et après il me semble que si tu marque comme ceci dans ta requete :

where Mail='$Mail'";


La variable n'est pas écrite. Il vaut mieux faire :

where Mail='".$Mail."'";

Modifié par Super_baloo8 (16 Apr 2007 - 15:03)
a écrit :

La variable n'est pas écrite. Il vaut mieux faire :
where Mail='".$Mail."'";



On peut faire aussi :


"where Mail='{$Mail}'";


De plus il est vivement recommandé de protéger $Mail avec mysql_real_escape_string() avant de construire la requête si on ne veux s'exposer à une attaque de type injection sql.
Modifié par ilhooq (17 Apr 2007 - 17:35)