Passages de variables pour requete sql

Résolu
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009 - 16 juin 2009 à 11:10
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009 - 17 juin 2009 à 09:35
Bonjour,

Je ne sais pas si je poste au bon endroit
J'ai une page php avec un formulaire contenant une liste avec des employé, une date, une durée, une activité et enfin un commentaire.
J'ai un bouton d'ajout d'activité qui rajoute les infos ci-dessus dans ma base de données ACCESS.
Pour cela j'ai créé un script AJAX qui appelle une 2ème page php pour effectuer la requete sans recharger ma page.
Cepandant, les varaible de mon formulaire ne sont pas transmises par le script, donc tout les champs rajoutés dans ma base de données sont nul.

Ma question est donc comment fair passer les variables d'une page à l'autre via le script ajax.

Merci d'avance.

48 réponses

Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 14:33
Le demandeur viens juste d'arriver au taf
Je suis en train d'essayer pour voir si sa marche la.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
16 juin 2009 à 14:41
14h33 pour arriver au taf ? encore un planqué...
ça se la coule douce de nos jours....
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 14:41
sa ne marche toujours pas.
Voici mon send:
xhr_object.send("empaj="+document.frm.emp.options[document.frm.emp.selectedIndex].value +"dateaj"+document.frm.dateaj.value
                +"dureeaj"+document.frm.duree.value+"actaj"+document.frm.act.value+"comaj"+document.frm.com.value);

et la voici ma page qui receptionne la script:
            $emp = $_POST["empaj"];
            $act = $_POST["actaj"];
            $date1x = $_POST["dateaj"];
            $com = $_POST["comaj"];
            $duree = $_POST["dureeaj"];
            $rs3 = mssql_query("select max(NumCra) as num from Cra");
            $ligne3 = mssql_fetch_array($rs3);
            $code=$ligne3[num]+1;
   
            $ch = "insert into cra (NumCra, NumEmp, NumActivite, DateCra, Duree, Commentaire) values ('$code', '$emp', '$act', '$date1x', '$duree', '$com')";
            $rs4 = mssql_query($ch);
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 14:42
Non je suis juste stagiaire et j'ai pas le badge pour rentrer donc je dois attendre que quelqu'un veuille bien m'ouvrir ^^.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
16 juin 2009 à 14:51
sans respecter la syntaxe, ça ne peut pas baigner !!!!

xhr_object.send(
                        "empaj= "+document.frm.emp.options[document.frm.emp.selectedIndex].value
                      +" & dateaj ="+document.frm.dateaj.value
                      +"&dureeaj= "+document.frm.duree.value
                      +" & actaj ="+document.frm.act.value
                      +"&comaj="+document.frm.com.value );

sans préjuger du reste !
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 14:57
Oui j'avais remarquer les "=" et le "&" j'ai corriger mais toujours rien mon champ reste desespérement vide
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
16 juin 2009 à 15:10
tu as une (des) erreurs quelque part

____ coté javascript fais :
var tmp= "empaj="+document.frm.emp.options[document.frm.emp.selectedIndex].value
                      +" & dateaj ="+document.frm.dateaj.value
                      +"&dureeaj= "+document.frm.duree.value
                      +" & actaj ="+document.frm.act.value
                      +"&comaj="+document.frm.com.value;
alert(tmp);    xhr_object.send(tmp);
pour contrôler les contenus

____  coté php, fait des echo de ce que tu reçois

____ ensuite tu as : xhr_object.open("POST", fichier, true);
donc en asynchrone !
et je ne vois nulle part que tu attends la réponse ?

il faut faire un machin du style :

xhr_object.onreadystatechange = function()
    {    if(xhr_object.readyState == 4)
        { on peut traiter xhr_object.responseText...
          ce que renvoie le php
        }
    }
xhr_object.open("POST"....
xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr_object.send(paramètres);
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
16 juin 2009 à 15:15
 ça peut aider aussi






<table id="aff" border="1" cellpadding="2" cellspacing="2">

----


Navigateurs
|

Quelques Explications
|

----,

Chrome

</td>

contrôler page actuelle / Options pour développeurs
/ Console Javascript
,

----

FireFox

,

Outils / Console d'erreurs
et mieux : télécharger FireBug
,

----

Internet
Explorer

,

activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS
,

----

K-Meleon

,

utils / Cons
,

----

Opera

,

utils / Asole d'erreurs
,

----

Safari

,

Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
----


</td>
</tr>
</tbody>
</table>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
16 juin 2009 à 15:16
zut..  mauvais copié/collé ?
Navigateurs |Quelques Explications |----
Chrome
, contrôler page actuelle / Options pour développeurs
/ Console Javascript, ----
FireFox
, Outils / Console d'erreurs
et mieux : télécharger FireBug, ----
Internet
Explorer
, activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS, ----
K-Meleon
, Outils / Console d'erreurs, ----
Opera
, utils / Asole d'erreurs, ----
Safari
, Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 15:24
____ coté javascript fais :
var tmp= "empaj="+document.frm.emp.options[document.frm.emp.selectedIndex].value
                      +" & dateaj ="+document.frm.dateaj.value
                      +"&dureeaj= "+document.frm.duree.value
                      +" & actaj ="+document.frm.act.value
                      +"&comaj="+document.frm.com.value;
alert(tmp);    xhr_object.send(tmp);
pour contrôler les contenus

Effectivement, après test, il recoit bien toutes les données transmise. donc l'erreur n'est pas la.

Pour les echo je fait :
            echo"$emp = $_POST["empaj"]";
           echo" $act = $_POST["actaj"]";
            echo"$date1x = $_POST["dateaj"]";
           echo" $com = $_POST["comaj"]";
           echo" $duree = $_POST["dureeaj"]";
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
16 juin 2009 à 15:29
var tmp= "empaj="+document.frm.emp.options[document.frm.emp.selectedIndex].value
                      +" & dateaj ="+encodeURIComponent(document.frm.dateaj.value)
                      +"&dureeaj= "+encodeURIComponent(document.frm.duree.value)
                      +" & actaj ="+encodeURIComponent(document.frm.act.value)
                      +"&comaj="+encodeURIComponent(document.frm.com.value);
xhr_object.send(tmp);
alert(xhr_object.responseText);

coté php...

echo ''.var_export($_POST,true).'

';

echo ''.var_export($_GET,true).'

';

Qu'est ce qui s'affiche... .. ?

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 15:38
Qu'est ce qui s'affiche... .. ?

plus rien dans le alert a pars un pop-up vide
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
16 juin 2009 à 15:39
et contrôle coté php :

            $rs3 = mssql_query("select max(NumCra) as num from Cra");
            $ligne3 = mssql_fetch_array($rs3);
            $code=$ligne3[num]+1;   
   
        $ch = "insert into cra (NumCra, NumEmp, NumActivite, DateCra,
Duree, Commentaire)
                        values ('$code', '$emp', '$act', '$date1x',
'$duree', '$com')";
            $rs4 = mssql_query($ch);

affiche mysql_error() après les ordres sql, $rs3,$ligne3....
pas sûr de max(NumCra)...
de plus, on n'a pas ta base de données,
et moi je suis trop petit pour voir sans tester

si tu es sûr que tout est correctement transmis....
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 15:52
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 16:13
____ ensuite tu as : xhr_object.open("POST", fichier, true);
donc en asynchrone !
et je ne vois nulle part que tu attends la réponse ?

il faut faire un machin du style :

xhr_object.onreadystatechange = function()
    {    if(xhr_object.readyState == 4)
        { on peut traiter xhr_object.responseText...
          ce que renvoie le php
        }
    }
xhr_object.open("POST"....
xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr_object.send(paramètres);

Par contre je ne comprend pas très bien cette partie (un peu comme le reste )
Peut-être que mon erreur viens de là car effectivement, les valeurs "viennent" bien dans le scripts, mais je n'arrive pas à les "redonner" a ma 2ème page php.
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
16 juin 2009 à 16:43
Ok c'est parce que tu est en asynchrone que l'alert() ne donne rien refait le même test que je t'ai donné mais met le alert() dans ton onreadystatechange... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 16:53
Je n'est pas de onreadystatechange dans ma page de script.
Le problème vient peut-être de là.
0
Evony Messages postés 32 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 17:00
Et en méthode GET c'est pas plus facile?
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
16 juin 2009 à 17:34
get/post c'est du pareil au même... pour le onready faudrait savoir tu en a un dans les premiers code que tu donne.. .. .

essaye ça...

function sendRequest(url,params) {
    if(!url) {
        throw new Error('Invalid url');
    }
    if(!params) {
        params = null;
    }
    var reqObj;
    if(window.ActiveXObject) {
        var ieXHR = [
            "Msxml2.XMLHTTP","Microsoft.XMLHTTP",
            "Msxml2.XMLHTTP.7.0","Msxml2.XMLHTTP.6.0",
            "Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0",
            "Msxml2.XMLHTTP.3.0"
        ];
        for (var i=0; i uniquement et rien d'autre dans un premier temps)...

echo '$_POST = ';
var_export($_POST);
echo "\n\n$_GET = ";
var_export($_GET);

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
16 juin 2009 à 17:36
oups...

echo "\n\n$_GET = ";

à remplacer par...

echo "\n\n".'$_GET = ';

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
Rejoignez-nous