Posez votre question Signaler

Ajax

icecream 38Messages postés 4 novembre 2007Date d'inscription - Dernière réponse le 15 mai 2008 à 03:22
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"
Lire la suite 

Ajax »

5 réponses
Réponse
+0
moins plus
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 :
http://www.php.net/mysql_real_escape_string
Ajouter un commentaire
Réponse
+0
moins plus
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...???
Ajouter un commentaire
Réponse
+0
moins plus
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é.
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « ajax » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook