voici quelques semaines que je galère sur ce problème, alors avant de jeter mon ordinateur et tout ce qu'il va avec pourriez-vous m'aider s'il vous plait...
Afin de mieux comprendre mon problème voici l'adresse de test:
http://test.allwebsite.free.fr
identifiant: jDupont
mot de passe : 123
Mon problème est le suivant :
Lorsque j'utilise le champs de recherche autocomplete en haut à droite de cette page : http://test.allwebsite.free.fr/indexPag ... ER_CLIENTS, le résultat commence à s'afficher lorsque je tape au moins une lettre et s'affine lorsque je tape d'autres lettres...
Jusqu'ici tout va bien...
Maintenant lorsque je vais sur cette page : http://test.allwebsite.free.fr/indexPag ... ER_CLIENTS
et que je fais la même expérience le champs ne fonctionne pas et même pire car sur IE lorsque je saisie une lettre et que je tape sur entrée il efface tous les contacts de la base...
Quelqu'un a t'il une idée ???
Merci beaucoup par avance.
Page générale d'affichage des contacts:
<?php
#new Debug($_POST);
#
# PREPARATION DES PERSONNES CONTACTS DE L'UTILISATEUR CONNECTE
#
$pageretour = str_replace('&', '|', $_SERVER['QUERY_STRING']);
$listePersonnes = "";
$utilisateursDuContact = array();
if (is_array($uContacts))
foreach($uContacts as $p)
{
if (isset($ID_PERS)&&$ID_PERS==$p->ID_PERS)
{
$utilisateursDuContact = $p->listerUtilisateurs();
$styleSelection = "selection";
}
else $styleSelection = "";
#
$commandes = "<a href=\"?codepage=EDITER_PERSONNE&action=afficher&pseudo=$pseudo&ID_PERS=".$p->ID_PERS."&motcle=$motcle&pageretour=$pageretour\" title=\"Sélectionner\"><img src=\"images/btn_editer.png\" class=\"commande\" style=\"margin-right:15px;\"/></a>";
$commandes .= "<a href=\"?codepage=EDITER_PERSONNE&action=supprimer&pseudo=$pseudo&ID_PERS=".$p->ID_PERS."&motcle=$motcle&pageretour=$pageretour\" title=\"Supprimer\"><img src=\"images/btn_supprimer.png\" class=\"commande\" style=\"margin-right:15px;\"/></a>";
$listePersonnes .= "<tr class=\"$styleSelection\"><th class=\"col1\"><input type=\"checkbox\" name=\"uContacts[]\" value=\"".$p->ID_PERS."\"/></th><th class=\"col2\">$commandes</th><td class=\"col3\">".$p->prenom." ".$p->nom."</td></tr>";
}
#
$listeUtilisateursDuContact = "";
if (is_array($utilisateursDuContact))
foreach($utilisateursDuContact as $uc)
{
#
$commandes = "<a href=\"?codepage=EDITER_CLIENT&action=afficher&pseudo=".$uc->pseudo."&pageretour=$pageretour\" title=\"Sélectionner\"><img src=\"images/btn_editer.png\" class=\"commande\" style=\"margin-right:15px;\"/></a>";
$listeUtilisateursDuContact .= "<tr><th class=\"col1\"><input type=\"checkbox\" name=\"cUtilisateurs[]\" value=\"".$uc->pseudo."\"/></th><th class=\"col2\">$commandes</th><td class=\"col3\">".$uc->prenom." ".$uc->nom."</td></tr>";
}
?>
<?php
if ($utilisateurEdite->type!='0') #Admin
{
?>
<h1>Contacts - <?php echo is_array($uContacts)?count($uContacts):0;?> -</h1>
<?php
}
else #Utilisateur
{
?>
<h1>Contacts <font size="4">de : <?php echo $utilisateurEdite->prenom.' '. $utilisateurEdite->nom; ?></font> - <?php echo is_array($uContacts)?count($uContacts):0;?> -</h1>
<?php
}
?>
<?php include ('champ_autocomplete_Personne.php'); ?><br/><br/>
<form name="f1" method="POST">
<input type="hidden" name="codepage" value="EDITER_PERSONNE" />
<input type="hidden" name="modeEdition" value="<?php echo isset($modeEdition)?$modeEdition:'nouveau'; ?>" />
<input type="hidden" name="pseudo" value="<?php echo isset($pseudo)?$pseudo:''; ?>" />
<h4>
<input type="checkbox" onclick="selectTout(this,'uContacts[]');" /> Sélectionner tout
<input type="submit" name="action" value="Supprimer Selection" />
<img id="btn_liste1" style="width:15px;height:15px;cursor:pointer;float:right;" src="images/fleche_haut3.png" title="Fermer" alt="Fermer" onclick="OuvrirFermerListe('liste1');" />
</h4>
<div id="liste1" class="liste">
<table border="0" cellspacing="0" cellpadding="0">
<?php echo isset($listePersonnes)?$listePersonnes:"";?>
</table>
</div>
<h2>Utilisateurs concernés - <?php echo is_array($utilisateursDuContact)?count($utilisateursDuContact):0;?> -</h2>
<h4><input type="checkbox" onclick="selectTout(this,'cUtilisateurs[]');" /> Sélectionner tout
<img id="btn_liste2" style="width:15px;height:15px;cursor:pointer;float:right;" src="images/fleche_haut3.png" title="Fermer" alt="Fermer" onclick="OuvrirFermerListe('liste2');" />
</h4>
<div id="liste2" class="liste" style="height:40px">
<table border="0" cellspacing="0" cellpadding="0">
<?php echo isset($listeUtilisateursDuContact)?$listeUtilisateursDuContact:"";?>
</table>
</div>
<?php
if (isset($modeEdition) && ($modeEdition=="nouveau"))
{
?>
<h2>Nouvelle fiche Contact</h2>
<?php
}
else
{
?>
<h2>Editer fiche Contact</h2>
<?php
}
?>
<table class="paragraphe" style="width:100%;height:400px" align="center" border="0" cellspacing="3" cellpadding="3">
<tr>
<td valign="top" >
<h4>Civilité</h4>
<select class="tailleUnique" id="civilite" name="civilite" value="<?php echo isset($personneEdite->civilite)?$personneEdite->civilite:''; ?>" >
<option value=""></option>
<option value="Mademoiselle" <?php echo isset($personneEdite->civilite)&&$personneEdite->civilite=='Mademoiselle'?' selected="selected" ':''; ?>>Mademoiselle</option>
<option value="Madame" <?php echo isset($personneEdite->civilite)&&$personneEdite->civilite=='Madame'?' selected="selected" ':''; ?>>Madame</option>
<option value="Monsieur" <?php echo isset($personneEdite->civilite)&&$personneEdite->civilite=='Monsieur'?' selected="selected" ':''; ?>>Monsieur</option>
</select>
</td>
<td valign="top" >
<h4>Nom</h4>
<input class="tailleUnique" type="text" id="nom" name="nom" value="<?php echo isset($personneEdite->nom)?$personneEdite->nom:''; ?>" />
</td>
<td valign="top" >
<h4>Prénom</h4>
<input class="tailleUnique" type="text" id="prenom" name="prenom" value="<?php echo isset($personneEdite->prenom)?$personneEdite->prenom:''; ?>" />
</td>
</tr>
<tr>
<td valign="top" >
<h4>Email</h4>
<input class="tailleUnique" type="text" id="email" name="email" value="<?php echo isset($personneEdite->email)?$personneEdite->email:''; ?>" />
</td>
<td valign="top" colspan="3">
<h4>Nom Société</h4>
<input class="tailleUnique" type="text" id="nomSociete" name="nomSociete" value="<?php echo isset($personneEdite->nomSociete)?$personneEdite->nomSociete:''; ?>" />
</td>
</tr>
<tr>
<td valign="top" >
<h4>Tél. fixe</h4>
<input class="tailleUnique" type="text" id="telFixe" name="telFixe" value="<?php echo isset($personneEdite->telFixe)?$personneEdite->telFixe:''; ?>" />
</td>
<td valign="top" >
<h4>Tél. mobile</h4>
<input class="tailleUnique" type="text" id="telPortable" name="telPortable" value="<?php echo isset($personneEdite->telPortable)?$personneEdite->telPortable:''; ?>" />
</td>
<td valign="top" >
<h4>Fax</h4>
<input class="tailleUnique" type="text" id="fax" name="fax" value="<?php echo isset($personneEdite->fax)?$personneEdite->fax:''; ?>" />
</td>
</tr>
<tr>
<td valign="top" colspan="3">
<h4>Adresse</h4><input class="tailleUnique" type="text" id="adresse" name="adresse" value="<?php echo isset($personneEdite->adresse)?$personneEdite->adresse:''; ?>" />
</td>
</tr>
<tr>
<td valign="top" >
<h4>CP</h4>
<input class="tailleUnique" type="text" id="cp" name="cp" value="<?php echo isset($personneEdite->cp)?$personneEdite->cp:''; ?>" />
</td>
<td valign="top" >
<h4>Ville</h4><input class="tailleUnique" type="text" id="ville" name="ville" value="<?php echo isset($personneEdite->ville)?$personneEdite->ville:''; ?>" />
</td>
<td valign="top" >
<h4>Pays</h4>
<input class="tailleUnique" type="text" id="pays" name="pays" value="<?php echo isset($personneEdite->pays)?$personneEdite->pays:''; ?>" />
</td>
</tr>
<tr>
<td valign="top" colspan="3">
<?php
if (isset($modeEdition) && ($modeEdition=="nouveau"))
{
?>
<input type="submit" id="action_ajouter" name="action" value="Ajouter" />
<?php
}
else
{
?>
<input type="submit" id="action_modifier" name="action" value="Modifier" />
<input type="submit" id="action_supprimer" name="action" value="Supprimer" />
<input type="submit" id="action_nouveau" name="action" value="Nouveau" />
<?php
}
?>
<input type="submit" name="action" value="Annuler" />
</td>
</tr>
</table>
</form>
<div id="message" class="message"><?php echo isset($message)?$message:''; ?></div>
<script>var msg="<?php echo isset($message)?$message:''; ?>"; if (msg!="") { alert(msg); }</script>
<script>
// ouvrir ou fermer la liste
<?php
if (is_array($uContacts)&&count($uContacts)>0)
{
echo "OuvrirListe('liste1');";
}
else
{
echo "FermerListe('liste1');";
}
?>
// ouvrir ou fermer la liste 2
<?php
if (is_array($utilisateursDuContact)&&count($utilisateursDuContact)>0)
{
echo "OuvrirListe('liste2');";
}
else
{
echo "FermerListe('liste2');";
}
?>
//
function OuvrirListe(id)
{
var liste = document.getElementById(id);
var boutonListe = document.getElementById('btn_'+id);
liste.style.display = 'block';
boutonListe.src = 'images/fleche_haut3.png';
boutonListe.alt = 'Fermer';
boutonListe.title = 'Fermer';
}
function FermerListe(id)
{
var liste = document.getElementById(id);
var boutonListe = document.getElementById('btn_'+id);
liste.style.display = 'none';
boutonListe.src = 'images/fleche_bas3.png';
boutonListe.alt = 'Ouvrir';
boutonListe.title = 'Ouvrir';
}
function OuvrirFermerListe(id)
{
if (document.getElementById(id).style.display == 'none')
{
OuvrirListe(id);
}
else
{
FermerListe(id);
}
}
function selectTout(origine, nomListeCheckbox)
{
var x = document.getElementsByName(nomListeCheckbox);
for(var i= 0; i < x.length; i++)
{
if (origine.checked) x[i].checked = true; else x[i].checked = false;
}
}
</script>
Cette page pour affiche le champs de recherche autocomplete dans le formulaire général:
<!-- MODULE RECHERCHE PERSONNE CONTACT POUR AUTOCOMPLETE -->
<script type="text/javascript">
// PARAMETRES GLOBAUX A MODIFIER EN CAS DE BESOIN
var pseudoUtilisateur = '<?php echo isset($pseudo)?$pseudo:(isset($_GET['pseudo'])?$_GET['pseudo']:''); ?>'; // contact connecté
/////////////////////////
var contact = new Array;
// lookup
function lookup(inputString) {
$.get("rpc_autocomplete_Personne.php", {pseudoUtilisateur: ""+pseudoUtilisateur+"", queryString: ""+inputString+""}, function(data){
if(data.length >0) {
contact = new Array();
var retour = JSON.parse(data);
console.log(retour);
contact = retour.contact;
$('#autoSuggestionsList').html(retour.liste);
if (inputString.length>0) $('#suggestions').show();
}
});
}
// autolookup on load
$(document).ready(function(){
lookup($('#inputString').val());
});
// fill
function fill(index, selectedValue) {
$('#inputString').val(selectedValue);
setTimeout("$('#suggestions').hide()", 200);
//
document.forms['f1'].action='?action=rechercher&motcle='+selectedValue;
document.forms['f1'].submit();
}
//
function OuvrirCadre(id)
{
var Cadre = document.getElementById(id);
var boutonCadre = document.getElementById('btn_'+id);
Cadre.style.display = 'block';
boutonCadre.src = 'images/fleche_haut3.png';
boutonCadre.alt = 'Fermer';
boutonCadre.title = 'Fermer';
}
function FermerCadre(id)
{
var Cadre = document.getElementById(id);
var boutonCadre = document.getElementById('btn_'+id);
Cadre.style.display = 'none';
boutonCadre.src = 'images/fleche_bas3.png';
boutonCadre.alt = 'Ouvrir';
boutonCadre.title = 'Ouvrir';
}
function OuvrirFermerCadre(id)
{
if (document.getElementById(id).style.display == 'none')
{
OuvrirCadre(id);
}
else
{
FermerCadre(id);
}
}
</script>
<style type="text/css">
.suggestionsBox {
position: relative;
left: 30px;
margin: 10px 0px 0px 0px;
width: 200px;
background-color: #212427;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 2px solid #000;
color: #fff;
z-index: 100;
}
.suggestionList {
margin: 0px;
padding-left: 7px;
z-index: 1000;
text-align: left;
}
.suggestionList li {
margin: 0px 0px 3px 0px;
padding-left: 7px;
cursor: pointer;
list-style-type: none;
}
.suggestionList li:hover {
background-color: #659CD8;
}
.suggestionList li marquee {
font-size: 0.8em;
color: yellow;
}
.tailleUnique {
width:94%;
}
.table,.div {
border-collapse:collapse;
table-layout:fixed;
width: 100%;
}
input, select, textarea, button {
margin: 0px 0px 0px 0px;
padding: 4px 4px 4px 5px;
overflow:auto;
background-color: #fff;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 1px groove #000;
color: #212427;
}
img {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
background-color: transparent;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
/*border: 1px groove #000;*/
color: #212427;
}
.element {
margin: 0px 0px 0px 0px;
padding: 4px 4px 4px 5px;
/*background-color: #fff;*/
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 1px groove #000;
color: #212427;
}
.Cadre {
margin: 0px 0px 0px 0px;
padding: 4px 4px 4px 5px;
width: 99%;
overflow:auto;
background-color: #fff;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 1px groove #000;
color: #212427;
}
.Cadre tr:hover {
background: silver;
}
.Cadre td,th {
padding-left:5px;
}
.Cadre td,th {
padding-left:5px;
}
</style>
<form name="f_rech_pers">
<div style="width:200px;height:20px;margin:0px;padding:0px;float:right;">
<input type="hidden" name="codepage" value="EDITER_PERSONNE" />
<input style="width:138px;height:20px;font-size:8pt;float:right;text-align:center;" type="text" name="motcle" id="inputString"
value="<?php echo isset($motcle)?$motcle:''; ?>" title="Zone de Recherche"
onkeyup="lookup(this.value);"
onblur="" onclick="this.value='';"/>
<br/>
<div class="suggestionsBox" id="suggestions" style="width:200px;display: none;float:right;">
<img id="btn_suggestions" src="images/fleche_haut3.png" style="position: relative; top: -12px; left: 30px;"
title="Fermer" alt="Fermer" onclick="OuvrirFermerCadre('suggestions');" />
<div class="suggestionList" id="autoSuggestionsList"></div>
</div>
</div>
</form>
<!-- FIN MODULE RECHERCHE PERSONNE CONTACT POUR AUTOCOMPLETE -->
Et enfin cette page qui actionne le mécanisme de recherche autocomplete:
<?php
#echo json_encode(array("liste"=>"<li>Exemple</li>", "contact"=>array("key1"=>"Exemple 1","key2"=>"Exemple 2")));
#exit;
#
require_once "classes/classes.php";
$base = new Base();
if(isset($_GET['pseudoUtilisateur']))
{
$u = new Utilisateur();
if ($u->trouver($pseudoUtilisateur=$_GET['pseudoUtilisateur'])==false) { echo ""; exit(); }
#
$queryString = trim(addslashes(isset($_GET['queryString'])?$_GET['queryString']:''));
if ($u->type!='0') # code 1 = admin => tous les contacts
{
$SQL = "SELECT * FROM personne ORDER BY prenom, nom";
}
else
{
$SQL = "SELECT * FROM personne JOIN contacts ON personne.ID_PERS=contacts.ID_PERS
WHERE contacts.pseudo='$pseudoUtilisateur' ORDER BY prenom, nom";
}
$resultat = $base->exec($SQL);
#
$liste = "";
$contact = array();
#
if(is_array($resultat))
foreach ($resultat as $ligne)
{
$index = $ligne->ID_PERS;
$valeur = $ligne->prenom." ".$ligne->nom;
$contenu = $ligne->civilite." ".$ligne->prenom." ".$ligne->nom
." - ".$ligne->telFixe." - ".$ligne->telPortable." - ".$ligne->email
." - ".$ligne->adresse." - ".$ligne->cp." - ".$ligne->ville
." - ".$ligne->pays;
#
if (!empty($queryString) && strstr(strtolower($valeur),strtolower($queryString))!=false)
{
$liste .= '<li onClick="fill(\''.$index.'\',\''.$valeur.'\');">'
.$valeur.'<marquee>'.$contenu.'</marquee></li>';
}
#
$contact[$index] = $ligne;
}
echo json_encode(array("liste"=>$liste, "contact"=>$contact));
}
?>
Je tiens à préciser que sur firefox ou safari je n'ai pas de problème... il doit y avoir un bug que IE détecte et empêche le bon fonctionnement du script mais je ne suis pas assez calé pour comprendre et trouver...Merci bcp!