ajax parse error

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 18:41

tu me montrele PHP la, montre le HTML final celui lu parle navigateur (afficher la source)

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 18:42

et t'as toujours pas mis tes options...
echo '<option value="'.$row["nompays"].'"> </option>';

Eléphant du PHP | 51 Messages

25 sept. 2010, 23:40

maintenant la liste des pays s'affiche (seulement avec phpedit et non sur le navigateu)r mais quand je selectionne un pays ca bloque dans le fichier ville.php à la ligne2 :if(isset($_POST["nompays"])){
le fichier html final n'est autre que le fichier pays.php mais en html :oops: ,voici la source:
<html>
    <head>
        <title>Page pays ville</title>
        <script type='text/javascript'>

            function getXhr(){
                                var xhr = null;
                if(window.XMLHttpRequest) // Firefox et autres
                   xhr = new XMLHttpRequest();
                else if(window.ActiveXObject){ // Internet Explorer
                   try {
                            xhr = new ActiveXObject("Msxml2.XMLHTTP");
                        } catch (e) {
                            xhr = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                }
                else { // XMLHttpRequest non supporté par le navigateur
                   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                   xhr = false;
                }
                                return xhr;
            }

            /**
            * Méthode qui sera appelée sur le click du bouton
            */
            function go(){
                var xhr = getXhr();
                // On défini ce qu'on va faire quand on aura la réponse
                xhr.onreadystatechange = function(){
                    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
                    if(xhr.readyState == 4 && xhr.status == 200){
                        leselect = xhr.responseText;
                        // On se sert de innerHTML pour rajouter les options a la liste
                        document.getElementById('ville').innerHTML = leselect;

                    }
                }

                // Ici on va voir comment faire du post
                xhr.open("POST","ville.php",true);
                // ne pas oublier ça pour le post
                xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                // ne pas oublier de poster les arguments
                // ici, l'id du pays
                sel = document.getElementById('pays');
                idpays = sel.options[sel.selectedIndex].value;
                xhr.send("idpays="+idpays);
            }
        </script>
    </head>
    <body>
        <form>
            <fieldset style="width: 400px">

                <legend>Liste liées</legend>
                <label>Pays</label>
                <select name='pays' id='pays' onchange='go()'>
                    <option value='-1'>Choisir un pays</option>
                    <?php
                    mysql_connect("localhost","root","");
                    mysql_select_db("base1");
                    $res = mysql_query("SELECT nompays FROM pays ORDER BY nompays");
                    while($row = mysql_fetch_assoc($res)){
                        echo '<option value="'.$row["nompays"].'">'.$row["nompays"].' </option>';
                    }
                    ?>
                </select>
                <label>Villes</label>

                <select name='ville' id='ville'>
                    <option value='-1'>Choisir une ville</option>
                </select>
                </div>
            </fieldset>
        </form>
    </body>
</html>

ViPHP
ViPHP | 5462 Messages

26 sept. 2010, 01:55

ton name s'appelle "pays" et pas "nompays" :wink:

Eléphant du PHP | 51 Messages

26 sept. 2010, 02:12

si j'ai bien compris je dois remplacer dans le fichier ville.php $_POST["nompays"] par $_POST["pays"] mais ca plante toujours 8-|

ViPHP
ViPHP | 5462 Messages

26 sept. 2010, 02:22

si j'ai bien compris je dois remplacer dans le fichier ville.php $_POST["nompays"] par $_POST["pays"] mais ca plante toujours 8-|
a quelle niveau, test ton autre script

remplace le POST par un GET, et fais http://tonserveur/ville.php?ville=truc

tu vas bien voir ce que rend la page, (si il affiche rien regarde dans la source html)

EDIT : en regardant bien ta ni mis "nompays" ni "pays" mais "idpays" dans ta requete ... :shock:

faut prendre l'habitude de vérifier les variables en entrée, sinon tu code a l'aveuglette
et quand tu fais un "if" met toujours un "else" au moins pour dire "variable non trouvé"

Eléphant du PHP | 51 Messages

26 sept. 2010, 02:39

toujours blocage à la ligne if (isset...
j'ai essayé http://127.0.0.1/ville.php?ville=paris
rien ne s'affiche et rien dans le fichier source

ViPHP
ViPHP | 5462 Messages

26 sept. 2010, 02:51

toujours blocage à la ligne if (isset...
j'ai essayé http://127.0.0.1/ville.php?ville=paris
rien ne s'affiche et rien dans le fichier source
fais
var_dump($_POST);
au debut de ton code de ville.php et tu comprendra

Eléphant du PHP | 51 Messages

26 sept. 2010, 02:54

si j'ai bien compris je dois remplacer dans le fichier ville.php $_POST["nompays"] par $_POST["pays"] mais ca plante toujours 8-|
a quelle niveau, test ton autre script

remplace le POST par un GET, et fais http://tonserveur/ville.php?ville=truc

tu vas bien voir ce que rend la page, (si il affiche rien regarde dans la source html)

EDIT : en regardant bien ta ni mis "nompays" ni "pays" mais "idpays" dans ta requete ... :shock:

faut prendre l'habitude de vérifier les variables en entrée, sinon tu code a l'aveuglette
et quand tu fais un "if" met toujours un "else" au moins pour dire "variable non trouvé"
excusez moi mais la je suis perdu :roll: de quelle requete parlez vous et quelle variable d'entrée

ViPHP
ViPHP | 5462 Messages

26 sept. 2010, 02:57

dans ta base ca s'appelle : nompays
ton select s'appelle : pays
la variable que tu envoie s'appelle : idpays
la variable que tu va cherche dans ville.php s'appelle : nompays

c'est pour ca que t'es perdu

Eléphant du PHP | 51 Messages

26 sept. 2010, 03:02

j'ai mis un $_post au lieu de $_POST :) mais mnt j'ai un Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in F:\php\ville.php on line 7

ViPHP
ViPHP | 5462 Messages

26 sept. 2010, 03:07

j'ai mis un $_post au lieu de $_POST :) mais mnt j'ai un Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in F:\php\ville.php on line 7
c'est ta requete qui n'est pas bonne, faut activer les erreur pour mysql
montre ton code pour cette partie la

Eléphant du PHP | 51 Messages

26 sept. 2010, 03:12

<?php
if(isset($_POST["nompays"])){
    mysql_connect("localhost","root","");
    mysql_select_db("base1");
    $res = mysql_query("SELECT nomville FROM ville
            WHERE nompays='".$_POST["nompays"]."' ORDER BY nomville");
    while($row = mysql_fetch_assoc($res)){
        echo '<option value="'.$row["nomville"].'">'.$row["nomville"].' </option>';
    }
}
?>

ViPHP
ViPHP | 5462 Messages

26 sept. 2010, 03:13

ta pas fais le var_dump($_POST)

tu verra que "$_POST["nompays"]" n'existe pas, puisque dans ton javascript ta fais xhr.send("idpays="+idpays);

Eléphant du PHP | 51 Messages

26 sept. 2010, 03:28

si je l'ai mis mais je l'ai enlevé et le "idpays" je l'ai remplacé par "nompays" mais j'obtiens le warning