Eviter rechargement page requet sql php

Fermé
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 - 3 sept. 2015 à 18:31
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 - 7 sept. 2015 à 18:18
Salut,

Je viens de créer une liste déroulante dynamique en php. Mon problème à chaque fois quand je clic sur un choix de la liste toute la page se charge se qui n'est pas vraiment pratique car ma liste deroulante se situe tout en bas de la page. Je sais que ça existe une solution en javascript ou AJAX mais je sais par ou je dois commencer.

Merci d'avance pour votre aide :)

Ci dessous le code de ma liste déroulante :

<?php
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "*****";
$admin = "*****";
$mdp = "******";
$base = "*******";
$connexion = mysql_pconnect($serveur, $admin, $mdp) or die('Probèlme connexion au serveur '.mysql_error());
$choixbase = mysql_select_db($base, $connexion) or die('Probèlme sélection base '.mysql_error());


if(isset($_POST['ok'])){
//le bouton ok du formulaire a été cliqué
$ville=isset($_POST['ville']) ? $_POST['ville'] : "";
$sql3 = "SELECT lien, ville FROM liens_villes WHERE id_ville='".$ville."'";
$rech_lien= mysql_query($sql3) or die('Pb requette lien '.mysql_error());
$ligne=mysql_fetch_assoc($rech_lien);
$lien=$ligne['lien'];
//on redirige directement vers la page du lien
header('Location:'.$lien.'');
}
///
echo("\n");


$idr = isset($_POST['departement'])?$_POST['departement']:null;
?>




<?php


$idr = isset($_POST['departement'])?$_POST['departement']:null;

?>



<?php
//recupération des selections éventuelles sinon init à vide

$departement=isset($_POST['departement']) ? $_POST['departement'] : "";
$ville=isset($_POST['ville']) ? $_POST['ville'] : "";


?>
<form action="<?php echo($_SERVER['HTML_SELF']); ?>" method="post" id="chgdept">

<div class="body-list">

<p style="text-align:center;">

<select style="width:200px" name="departement" id="departement" onchange="submit();">
<option value="-1">- - - Choisissez un departement - - -</option>

<?php
$sql1 = "SELECT id_departement, departement FROM departement ORDER BY departement"; //par orde alpa des noms c'est qd mêm mieux !


$rech_departements = mysql_query($sql1) or die('<p style="color: #FF0000; text-align:center; font-size: 12px;">Problème requette series </p>'.mysql_error());
while($ligne = mysql_fetch_assoc($rech_departements)){

$option= '<option value="'.$ligne['id_departement'].'" ';
if($departement==$ligne['id_departement']){$option.= ' selected="selected"';}
$option.=' >'.$ligne['departement'].'</option>';

echo $option;
}
mysql_free_result($rech_departements);
?>
</select>
<?php

//liste villes
if(isset($_POST['departement'])){
if($_POST['departement']==-1){
echo '<p style="color: #FF0000; text-align:center; font-size: 12px;">Vous devez chosir un departement</p>';
}else{
?></br>
<select style="width:200px" name="ville" id="ville" onchange="submit();">
<option value="-1">- - - Choisissez une ville - - -</option>
<?php

$sql2 = "SELECT id_ville, ville FROM ville WHERE id_departement='".$departement."' ORDER BY ville";
$rech_ville = mysql_query($sql2) or die('<p style="color: #FF0000; text-align:center; font-size: 12px;">Problème requette ville</p> '.mysql_error());
while($ligne = mysql_fetch_assoc($rech_ville)){

//generation de la ligne option
$option= '<option value="'.$ligne['id_ville'].'" ';
if($ville==$ligne['id_ville']){$option.= ' selected="selected"';} //ça c'est pour conserver la sélection au réafficage suivant
$option.=' >'.$ligne['ville'].'</option>';
//affichage de la ligne option
echo $option;
}
mysql_free_result($rech_ville);

?>
</select>
<?php
}
}

if(isset($_POST['ville'])){
if($_POST['ville']==-1){
echo '<p style="color: #FF0000; text-align:center; font-size: 12px;">Vous devez choisir un modèle</p>';
}else{
?>
</p>
<p style="text-align:center">
<input type="submit" class="button-list" name="ok" id="ok" value="Valider" />
</p>
<p>
<?php
}
}

?>

</p>
</div>
</form>
<p>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
?></div>



A voir également:

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 3/09/2015 à 19:26
'lut
Je plaide ici coupable le
onchange="submit();"
qui envoie le formulaire dès le changement.
Mais j'ai un gros avertissement pour toi:

L'extension MySQL est obsolète

Vieille, plus mise à jour = dangereuse, induisant de mauvaises pratiques comme ton code le montre (
or die
et une belle possibilité d'injection SQL, ...).
from human import idiocy
del idiocy
0
mad92men Messages postés 130 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 10 novembre 2020 4
7 sept. 2015 à 18:18
Merci pour ta réponse Gravgun mais je trouve toujours pas la solution.

Avez vous une piste SVP c'est vraiment urgent.

Merci d'avance :)
0