[RESOLU] Autocompletion php, plusieurs where ??

Eléphant du PHP | 386 Messages

18 juin 2012, 21:22

Bonjour,

j'ai un script d'autocomplétion,
Dès que je commence à écrire les premières lettres du prénom du membre dans le champs, le résultat s'affiche. Mais je souhaiterais faire pareil avec les noms :
J'ai déjà essayé de mettre "WHERE prenom OR nom" ça ne fonctionne pas :cry:

le voici (source du script : http://www.j0k3r.net/article/ajax-une-a ... ee-en-ajax):
	if(isset($_POST['chef'])){
		header('Content-type: text/html; charset=iso-8859-1');
		// on inclut la connexion
		mysql_connect('******', '******', '*******');
		mysql_select_db('*******');
		// on fait la requête
		$sql = "SELECT nom, prenom, id FROM wa_communaute WHERE prenom 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>';
		die();
	}
Comment je dois faire ?
Merci

Mammouth du PHP | 661 Messages

18 juin 2012, 22:00

1. edit ton message et masques les identifiants de ton serveur si tu peux !

2. testes ceci :
$sql = "SELECT nom, prenom, id FROM wa_communaute WHERE prenom LIKE '".$_POST['chef']."%' OR nom LIKE '".$_POST['chef']."%'";
3. par ailleurs, jetes un oeil à mysql_real_escape_string, un peu de sécurité, ça ne fait pas de mal !...

@++

Eléphant du PHP | 386 Messages

18 juin 2012, 23:38

Merci de ta réponse,

J'ai un problème avec ce script, il utilise les librairies scriptaculous, prototype, et moi j'utilise jquery.
Et évidemment il y a un conflit avec mes autres scripts qui ne s'affiche plus.

Il y aurait pas un moyen d'utiliser ce script à l'adresse : http://www.j0k3r.net/article/ajax-une-a ... ee-en-ajax en Jquery ??

Merci

Mammouth du PHP | 661 Messages

19 juin 2012, 00:13

En fait, Prototype utilises des Classes propre il a été développer pour rubyfier le javascript à la base en rangeant de façon cohérentes les rôles et attributions de chaque types d'éléments, malheureusement, il n'a pas eu les moyens attribués à jQuery et est en parfaite pertes de vitesse ...
A contrario, jQuery est un objet unique qui s'adapte au contexte, d'ou son attrait pour les non-développeurs :twisted: ...
mais pour faire simple, il y a un objet jQuery qui fait tout sauf le café ! face à une organisation rédactionnelle archaïque ...

Donc, non, il n'est pas possible de l'utiliser dans l'état, par contre à l'époque, il me semble qu'il était possible de faire cohabiter les libs en déclarant à jQuery de respecter les autres libs et en utilisant l'objet jQuery à la place de $ (utilisé par prototype) http://docs.jquery.com/Using_jQuery_wit ... _Libraries

sinon, à recoder, ce n'est pas non plus un exploit ^^ ... :D tout dépends de ton niveau ;)

Eléphant du PHP | 386 Messages

19 juin 2012, 00:28

A recoder alors, mais mon niveau #-o est débutant, mais il y a juste cette partie à recoder si tu regarde le script en entier sur cette page :

http://www.j0k3r.net/article/ajax-une-a ... ee-en-ajax

Ca c'est bien du scriptaculous, prototype ? :

Code : Tout sélectionner

function ac_return(field, item){ // on met en place l'expression régulière var regex = new RegExp('[0123456789]*-mini', 'i'); // on l'applique au contenu var nomimage = regex.exec($(item).innerHTML); //on récupère l'id id = nomimage[0].replace('-mini', ''); // et on l'affecte au champ caché $(field.name+'_id').value = id; }
Il y a aussi le script en ajax mais ce n'est que de l'ajax :

Code : Tout sélectionner

new Ajax.Autocompleter ('chef', 'chef_update', 'autocompletion.php', { method: 'post', paramName: 'chef', afterUpdateElement: ac_return });
Pouvez-vous me recoder ces petits bouts de codes ?
Merci beaucoup d'avance

Mammouth du PHP | 661 Messages

19 juin 2012, 01:24

ce ne sont pas de petits bout de code !...

la classe Ajax.Autocompleter doit faire 300 lignes et s'appuie sur une bonne partie de la lib prototype qui dois peser 7/8000 lignes ... le tout certainement avec des effets de scriptaculous ~ 3/4000 lignes ...

donc, à recoder, tu vas aller à l'essentiel, te restreindre au strict minimum, et tu pourras ainsi t'en sortir avec une centaine de lignes ... mais il faut le faire !...

sinon, il doit bien y avoir un équivalent en jQuery ... ! non ?

Eléphant du PHP | 386 Messages

19 juin 2012, 03:55

Au lieu de me prendre la tête, je pense que je vais adapter mon site à cette librairie.

Merci quand même :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juin 2012, 21:24

Modération :
J'ai édité ton message d'origine afin de supprimer les informations de connexion que tu avais laissé.
Cependant, celles-ci ayant été publiées pendant un certain temps, je te recommande fortement de les modifier.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 386 Messages

19 juin 2012, 21:45

Merci, je m'en souviendrais de celle là ! :mrgreen: