ajax parse error

ViPHP
ViPHP | 5462 Messages

24 sept. 2010, 23:34

toujours rien,aucun élément ne se charge ni dans la liste des pays ni celle des villes :?
t'as firebug ?

EDIt : y'a plusieur chose qui vont pas

deja les balise php c'est <?php ?> et plus <? ?>

ensuite
echo "<option value=".$row["nomville"]."</option>";
ici c'est pas bon il va rien mettre dans l'option, et les quote sont pas bon (regarde ta source HTML)
echo '<option value="'.$row["firstname"].'">' .$row["firstname"] . '</option>';

ensuite dans ton autre fichier la requête n'est pas bonne
"SELECT nomville FROM ville
                        WHERE nompays=".$_POST["nompays"]." ORDER BY nomville"
il faut mettre des quote pour les valeur

"SELECT nomville FROM ville
WHERE nompays='".$_POST["nompays"]."' ORDER BY nomville"


je te conseil de mettre ton niveau d'erreur au max, et t'activer le trace_mode de mysql

Invité
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 01:38

j'ai une erreur dans le fichier ville.php dans la ligne 2 :if(isset($_POST["nompays"]))

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 01:39

j'ai une erreur dans le fichier ville.php dans la ligne 2 :if(isset($_POST["nompays"]))
quelle erreur ?

Invité
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 01:43

le listing des pays a été activé mais la liste est vide,c'est déjà un progrès.

Invité
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 01:44

j'ai une erreur dans le fichier ville.php dans la ligne 2 :if(isset($_POST["nompays"]))
quelle erreur ?
le débogeur de phphedit s'arrete à cet endroit

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 01:45

j'ai une erreur dans le fichier ville.php dans la ligne 2 :if(isset($_POST["nompays"]))
quelle erreur ?
le débogeur de phphedit s'arrete à cet endroit
il dis quelle chose de particulier dans le débugger log ?
si tu lance en normale dans ton navigateur c'est bon ?

Invité
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 01:56

le debugger ne dit plus rien et ca ne marche pas non plus sur le navigateur,voici les deux fichiers après les modifs.
<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"].'"> </option>';
					}
					?>
				</select>
				<label>Villes</label>
				<div id='ville' style='display:inline'>
				<select name='ville'>
					<option value='-1'>Choisir une ville</option>
				</select>
				</div>
			</fieldset>
		</form>
	</body>
</html>
<?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>';
	}
}
?>
merci pour votre patience

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 02:15

au lieu de faire
<div id='ville' style='display:inline'>
    <select name='ville'>
        <option value='-1'>Choisir une ville</option>
    </select>
</div>
fais
<select name="ville" id="ville">
    <option value='-1'>Choisir une ville</option>
</select>

mais le nom des pays aussi comme pour les ville dans tes option

Eléphant du PHP | 51 Messages

25 sept. 2010, 10:38

bonjour et merci pour vos efforts.
j'ai effectué le changement que vous m'avez demandez mais le pb persiste cad que le listing des pays est activé(avec le nombre de cases égal exactement au nombre des enregistrements que j'ai dans ma table pays cad 13)mais aucun nom de pays n'apparait dans le listing.

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 16:37

bonjour et merci pour vos efforts.
j'ai effectué le changement que vous m'avez demandez mais le pb persiste cad que le listing des pays est activé(avec le nombre de cases égal exactement au nombre des enregistrements que j'ai dans ma table pays cad 13)mais aucun nom de pays n'apparait dans le listing.
verfie les donnée qui arrive avec firebug, chez moi j'ai tester ton code avec les ajustement que je t'ai dis et ca marche :wink:

Invité
Invité n'ayant pas de compte PHPfrance

25 sept. 2010, 17:36

firebug ne signale rien(si je l'ai correctement utilisé) je ne comprends pas pourquoi ca ne marche pas.avec phpedit quand je lance mon fichier pays.php j'ai au moins un listing des pays(quoique vide) mais quand je lance le meme fichier avec firefox je n'ai meme pas le listing

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 17:55

firebug ne signale rien(si je l'ai correctement utilisé) je ne comprends pas pourquoi ca ne marche pas.avec phpedit quand je lance mon fichier pays.php j'ai au moins un listing des pays(quoique vide) mais quand je lance le meme fichier avec firefox je n'ai meme pas le listing
ta la console firebug, met toi sur l'onglet réseau, et rafraichie ta page, en suite sélectionne une options, tu devrais voir ta requêtes, et aussi son contenu

Eléphant du PHP | 51 Messages

25 sept. 2010, 18:21

ya aucune requete,pas de données 0kB 0ms,qu'est ce que cela veut dire?

ViPHP
ViPHP | 5462 Messages

25 sept. 2010, 18:27

ya aucune requete,pas de données 0kB 0ms,qu'est ce que cela veut dire?
montre ta source HTML final

Eléphant du PHP | 51 Messages

25 sept. 2010, 18:31

je suis toujours sur les deux fichiers pays.php et ville.php
<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"].'"> </option>';
                    }
                    ?>
                </select>
                <label>Villes</label>

                <select name='ville' id='ville'>
                    <option value='-1'>Choisir une ville</option>
                </select>
                </div>
            </fieldset>
        </form>
    </body>
</html>
<?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"].'"> </option>';
    }
}
?>