Ajax
Fermé
icecream
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
Manita Moez -
Manita Moez -
Bonjour,
salut
j'ai une application qui sert a afficher une liste des fournisseur le principe est de taper la premier lettre et tous les fournisseurs stoché dans la base seront afficher en utilisnat ajax
voici le code de l'exemple:
<?php
if(isset($_POST['chef'])){
header('Content-type: text/html; charset=iso-8859-1');
// on inclut la connexion
mysql_connect('localhost', 'root', '');
mysql_select_db('bdd');
// on fait la requête
$sql = "SELECT `nom`, `prenom`, `id`
FROM `personne`
WHERE `nom` LIKE '".$_POST['chef']."%'";
$req = mysql_query($sql);
$i = 0;
echo '<ul class="contacts">';
// on boucle sur tous les éléments
while($autoCompletion = mysql_fetch_assoc($req)){
echo '
<li class="contact"><div class="image"><img src="personne/'.$autoCompletion['id'].'-mini.jpg"/></div><div class="nom">'.$autoCompletion['nom'].'</div>
<div class="prenom">
<span class="informal">'.$autoCompletion['prenom'].'</span>
</div>
</li>';
// on s'arrête s’il y en a trop
if (++$i >= 10)
die('<li>...</li></ul>');
}
echo '</ul>';
echo '<br>isi<br>';
die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Une autocompletion avancée en AJAX</title>
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="lib/scriptaculous.js"></script>
<script type="text/javascript" src="lib/autocompletion.js"></script>
<style type="text/css">
body{
font-family: Verdana, Arial, Helvetica, sans-serif;
text-align: justify;
font-size: 12px;
color: #565656;
}
img {
border: none;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
/* Autocompletion */
.update{
position:absolute;
width:250px;
background-color:white;
border:1px solid #888;
margin:0px;
padding:0px;
}
ul.contacts {
list-style-type: none;
margin:0px;
padding:0px;
text-align: left;
}
ul.contacts li.selected { background-color: #ffb; cursor: pointer; }
li.contact {
list-style-type: none;
display:block;
margin:0;
padding:2px;
height:32px;
}
li.contact div.image {
float:left;
width:32px;
height:32px;
margin-right:8px;
}
li.contact div.nom {
font-weight:bold;
font-size:12px;
line-height:1.2em;
}
</style>
</head>
<body>
Liste des personnes présentes dans la base :<br/>
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('bdd');
// on fait la requête
$sql = "SELECT `nom`, `prenom`, `id`
FROM `personne`
WHERE `nom` LIKE '".$_POST['chef']."%'";
$req = mysql_query($sql);
while($autoCompletion = mysql_fetch_assoc($req)){
echo '<u>'.$autoCompletion['id'].'.</u> '.$autoCompletion['nom'].'<br/>';
}
?>
<br/>
<form action="?" method="post" onsubmit="return false;">
<label for="chef">Chef : </label>
<input type="input" name="chef" id="chef" value="" />
<div class="update" id="chef_update"></div>
<input type="hidden" name="chef_id" id="chef_id" value="" />
</form>
<br/>
Numéro de la personne avec son nom : <span id="chef_log"></span>
<script type="text/javascript">
new Ajax.Autocompleter ('chef',
'chef_update',
'autocompletion.php',
{
method: 'post',
paramName: 'chef',
afterUpdateElement: ac_return
});
</script>
</body>
</html>
le problème l'orsque je integre ma base facturations au lieu de bdd et je transforme la requete avec les champs situant dans ma base
notant que je n'est pas besoins d'afficher les images elle ne fonctionne pas .
aidez moi s'il vous plais j'ai passer beaucoup de temps pour le changer mais il ne fonctionne pas .
base facturations table fournisseur:"num_fac", "num_four"
salut
j'ai une application qui sert a afficher une liste des fournisseur le principe est de taper la premier lettre et tous les fournisseurs stoché dans la base seront afficher en utilisnat ajax
voici le code de l'exemple:
<?php
if(isset($_POST['chef'])){
header('Content-type: text/html; charset=iso-8859-1');
// on inclut la connexion
mysql_connect('localhost', 'root', '');
mysql_select_db('bdd');
// on fait la requête
$sql = "SELECT `nom`, `prenom`, `id`
FROM `personne`
WHERE `nom` LIKE '".$_POST['chef']."%'";
$req = mysql_query($sql);
$i = 0;
echo '<ul class="contacts">';
// on boucle sur tous les éléments
while($autoCompletion = mysql_fetch_assoc($req)){
echo '
<li class="contact"><div class="image"><img src="personne/'.$autoCompletion['id'].'-mini.jpg"/></div><div class="nom">'.$autoCompletion['nom'].'</div>
<div class="prenom">
<span class="informal">'.$autoCompletion['prenom'].'</span>
</div>
</li>';
// on s'arrête s’il y en a trop
if (++$i >= 10)
die('<li>...</li></ul>');
}
echo '</ul>';
echo '<br>isi<br>';
die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Une autocompletion avancée en AJAX</title>
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="lib/scriptaculous.js"></script>
<script type="text/javascript" src="lib/autocompletion.js"></script>
<style type="text/css">
body{
font-family: Verdana, Arial, Helvetica, sans-serif;
text-align: justify;
font-size: 12px;
color: #565656;
}
img {
border: none;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
/* Autocompletion */
.update{
position:absolute;
width:250px;
background-color:white;
border:1px solid #888;
margin:0px;
padding:0px;
}
ul.contacts {
list-style-type: none;
margin:0px;
padding:0px;
text-align: left;
}
ul.contacts li.selected { background-color: #ffb; cursor: pointer; }
li.contact {
list-style-type: none;
display:block;
margin:0;
padding:2px;
height:32px;
}
li.contact div.image {
float:left;
width:32px;
height:32px;
margin-right:8px;
}
li.contact div.nom {
font-weight:bold;
font-size:12px;
line-height:1.2em;
}
</style>
</head>
<body>
Liste des personnes présentes dans la base :<br/>
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('bdd');
// on fait la requête
$sql = "SELECT `nom`, `prenom`, `id`
FROM `personne`
WHERE `nom` LIKE '".$_POST['chef']."%'";
$req = mysql_query($sql);
while($autoCompletion = mysql_fetch_assoc($req)){
echo '<u>'.$autoCompletion['id'].'.</u> '.$autoCompletion['nom'].'<br/>';
}
?>
<br/>
<form action="?" method="post" onsubmit="return false;">
<label for="chef">Chef : </label>
<input type="input" name="chef" id="chef" value="" />
<div class="update" id="chef_update"></div>
<input type="hidden" name="chef_id" id="chef_id" value="" />
</form>
<br/>
Numéro de la personne avec son nom : <span id="chef_log"></span>
<script type="text/javascript">
new Ajax.Autocompleter ('chef',
'chef_update',
'autocompletion.php',
{
method: 'post',
paramName: 'chef',
afterUpdateElement: ac_return
});
</script>
</body>
</html>
le problème l'orsque je integre ma base facturations au lieu de bdd et je transforme la requete avec les champs situant dans ma base
notant que je n'est pas besoins d'afficher les images elle ne fonctionne pas .
aidez moi s'il vous plais j'ai passer beaucoup de temps pour le changer mais il ne fonctionne pas .
base facturations table fournisseur:"num_fac", "num_four"
5 réponses
Quand tu dis "il ne fonctionne pas", tu peux être plus précis ? C'est loin d'être suffisant pour identifier le problème :)
As-tu un message d'erreur ? Le reste de la page s'affiche correctement ?
As-tu bien nommé ton fichier "autocompletion.php" ?
As tu adapté correctement la requête SQL et les variables utilisées ?
Un peu de sécurité sur $_POST['chef'] ne ferait pas de mal :
https://www.php.net/mysql_real_escape_string
As-tu un message d'erreur ? Le reste de la page s'affiche correctement ?
As-tu bien nommé ton fichier "autocompletion.php" ?
As tu adapté correctement la requête SQL et les variables utilisées ?
Un peu de sécurité sur $_POST['chef'] ne ferait pas de mal :
https://www.php.net/mysql_real_escape_string
il ne s'affiche aucun message d'erreur juste la page s'affiche et lorsque je tape une lettre normalement la liste des nom des fournisseurs s'affiche au dessus du zone texte . j'ai intégré ma base au lieu de la base de cet exemple ensuite j'ai changer la requête comme ça:
<?php.....
//inclusion de ma base et la connexion
include("connexion.php");
$sql = "SELECT `num_four`, `nom_four`
FROM `facturations`.`fournisseur`
WHERE `nom_four` LIKE '".$_POST['chef']."%'";
$req = mysql_query($sql);
......
?>
ensuite se qui reste de fichier autocompletion
si il était un problème de requête le message d'erreur de non connexion à la base ou invalidation de la requête sera afficher mais aucun message d'erreur et la liste ne liste pas mes fournisseur qui commence par exemple par a ou b notant que les fournisseur sont insérer dans ma base
....
ou se peut situer le problème???? je ne vois pas !!!! Comment faire...???
<?php.....
//inclusion de ma base et la connexion
include("connexion.php");
$sql = "SELECT `num_four`, `nom_four`
FROM `facturations`.`fournisseur`
WHERE `nom_four` LIKE '".$_POST['chef']."%'";
$req = mysql_query($sql);
......
?>
ensuite se qui reste de fichier autocompletion
si il était un problème de requête le message d'erreur de non connexion à la base ou invalidation de la requête sera afficher mais aucun message d'erreur et la liste ne liste pas mes fournisseur qui commence par exemple par a ou b notant que les fournisseur sont insérer dans ma base
....
ou se peut situer le problème???? je ne vois pas !!!! Comment faire...???
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="lib/scriptaculous.js"></script>
<script type="text/javascript" src="lib/autocompletion.js"></script>
il faut faire une petit mise ajour dans l'insertion des fichier prototype.js et scriptaculous.js et autocompletion.js."src"mettre ici le nouveau emplacement qui vous avez créer
<script type="text/javascript" src="lib/scriptaculous.js"></script>
<script type="text/javascript" src="lib/autocompletion.js"></script>
il faut faire une petit mise ajour dans l'insertion des fichier prototype.js et scriptaculous.js et autocompletion.js."src"mettre ici le nouveau emplacement qui vous avez créer
La méthode de debug d'un script consiste à afficher des variables à différents endroit pour en vérifier le contenu.
Avant le $req = mysql_query($sql);
Ajoute un : echo $sql;
Tu pourra voir si ta requête est syntaxiquement correcte.
Dans la boucle while,
Ajoute un : var_dump($autoCompletion);
Tu pourra voir si ta requête renvois des résultats corrects et leur structure.
As-tu bien remplacé
$autoCompletion['id'] par $autoCompletion['num_four']
et
$autoCompletion['nom'] par $autoCompletion['nom_four']
?
Tes noms de colonnes changent, donc tes noms de variables changent aussi.
Si ta requête SQL ne s'affiche pas avec le echo, c'est que ton script n'est pas appelé par Ajax, il faut donc vérifier ton appel Ajax.
Le fait de ne pas avoir d'erreur n'est pas tout à fait une preuve de la bonne connection. Certains hébergeur désactivent les messages d'erreur pour des raisons de sécurité.
Avant le $req = mysql_query($sql);
Ajoute un : echo $sql;
Tu pourra voir si ta requête est syntaxiquement correcte.
Dans la boucle while,
Ajoute un : var_dump($autoCompletion);
Tu pourra voir si ta requête renvois des résultats corrects et leur structure.
As-tu bien remplacé
$autoCompletion['id'] par $autoCompletion['num_four']
et
$autoCompletion['nom'] par $autoCompletion['nom_four']
?
Tes noms de colonnes changent, donc tes noms de variables changent aussi.
Si ta requête SQL ne s'affiche pas avec le echo, c'est que ton script n'est pas appelé par Ajax, il faut donc vérifier ton appel Ajax.
Le fait de ne pas avoir d'erreur n'est pas tout à fait une preuve de la bonne connection. Certains hébergeur désactivent les messages d'erreur pour des raisons de sécurité.
merci xil de ton aide
j'ai tester par une autre requête
$sql = "SELECT `num_four`, `nom_four`
FROM `facturations`.`fournisseur`
WHERE `nom_four` LIKE '".$_POST['chef']."%'";
qui s'est exécuter avec les même attribut "nom_four" et "num_four" dans un autre fichier de ma base et l'application fonctionne maintenant correctement j'étais stupéfier car juste le remplacement de la premier par la dernière a fonctionné l'application pourtant les deux sont identique
Merci booouuuucoup :)
j'ai tester par une autre requête
$sql = "SELECT `num_four`, `nom_four`
FROM `facturations`.`fournisseur`
WHERE `nom_four` LIKE '".$_POST['chef']."%'";
qui s'est exécuter avec les même attribut "nom_four" et "num_four" dans un autre fichier de ma base et l'application fonctionne maintenant correctement j'étais stupéfier car juste le remplacement de la premier par la dernière a fonctionné l'application pourtant les deux sont identique
Merci booouuuucoup :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Slt, je suis abroutie ds la programmation, mais j'ai un projet qui me demande de faire l'autocompletion sur un champs de textre qui m'affichera une liste.
Voici le problème qui me hante, je ne sais pas par où me tenir pour placer mes liens sur ce qui sera affiché par l'autocompletion.
Aidez -moi svp.Je suis nuuuul et ça paralise tout mon projet.
Merci pour votre aide
Voici le problème qui me hante, je ne sais pas par où me tenir pour placer mes liens sur ce qui sera affiché par l'autocompletion.
Aidez -moi svp.Je suis nuuuul et ça paralise tout mon projet.
Merci pour votre aide