[RESOLU] php autocompletion query mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] php autocompletion query mysql

Re: php autocompletion query mysql

par xTG » 20 juin 2012, 07:10

Réponse dans l'autre topic.

Re: php autocompletion query mysql

par nico44530 » 19 juin 2012, 21:35

J'ai réussi :-)
Merci beaucoup
Ensuite, si on écrit une lettre et qu'il n'y a pas de résultat pour cette lettre (Qu'il n'y a pas de résultat dans la bbd),
j'aimerais que un message s'affiche dans ce cas là :
echo 'Il n\'y a pas de résultat(s) pour "'.$queryString.'"';
Voici le code changé depuis la dernière fois :
	$db = new mysqli('...', '...', '...', '...');
	
	if(!$db) {
		// Show error if we cannot connect.
		echo 'Erreur : Impossible de se connecter à la base';
	} else {
		// Is there a posted query string?
		if(isset($_POST['queryString'])) {
			$queryString = $db->real_escape_string($_POST['queryString']);
			
			// Is the string length greater than 0?
			if(strlen($queryString) >0) {
				$query = $db->query("SELECT id, prenom, nom FROM wa_communaute WHERE prenom LIKE '" . $queryString . "%' OR nom LIKE '" . $queryString . "%' ORDER BY null LIMIT 8");
				
				if($query) {
					// While there are results loop through them - fetching an Object.
					
					// Store the category id
					while ($result = $query ->fetch_object()) {
					
	         			$prenom = $result->prenom;
						$nom = $result->nom;
						$id = $result->id;
						
	         			if(strlen($prenom) > 35) { 
	         				$prenom = substr($prenom, 0, 35) . "...";
	         			}	
	         			if(strlen($nom) > 35) { 
	         				$nom = substr($nom, 0, 35) . "...";
	         			}
	         			echo '<a href="http://www.web-astronomie.fr/profil.php?id='.$id.'"><span class="searchheading">'.$prenom.' '.$nom.'</span></a>';
	         		}
				}
			}
		}
	}
Merci d'avance :)

Re: php autocompletion query mysql

par xTG » 19 juin 2012, 21:09

L'expression régulière dont je parle concerne l'opérateur SQL like, cela n'a rien à voir avec ton script JS.
C'est ta requête qu'il faut modifier.

Re: php autocompletion query mysql

par nico44530 » 19 juin 2012, 19:06

Merci,

Mais peut tu recoder le petit bout du script jquery ci dessus ? Parce que je ne sais pas ou mettre mavar% :(
Ou me dire ou mettre ce motif dans le script ?

Merci d'avance

Re: php autocompletion query mysql

par xTG » 19 juin 2012, 19:00

Ce sont des expressions régulières disposant de deux caractères de contrôle :

Code : Tout sélectionner

% Remplace n'importe quel nombre de caractères, y compris aucun _ remplace exactement un caractère
Donc il suffit d'utiliser le motif suivant pour ce que tu veux :

Code : Tout sélectionner

maVar%
Ainsi le pattern indique que l'expression doit commencer par le contenu de maVar et peut se terminer par n'importe quoi.

Re: php autocompletion query mysql

par nico44530 » 19 juin 2012, 17:20

Enfaite, j'essaye d'apprendre sur le tas, donc je m'en fou du niveau :mrgreen:

Et j'ai réussi à afficher un profil à partir d'un lien, et d'afficher leurs infos.
Le seul problème que j'ai c'est dans le champs autocomplete : J'aimerais que ce soit la première lettre de mon prénom pour que le résultat s'affiche, alors que si on écrit n'importe quelle lettre de mon prénom, le résultat s'affiche.

J'aimerais que ce soit la première lettre qui soit pris en compte, pas toute les lettres pour que le prénom s'affiche.

Je pense que que le problème est dans le code Jquery ci-dessous :
Que de problème :cry:

Le code :

[javascript]
function lookup(inputString) {
if(inputString.length == 0) {
$('#suggestions').fadeOut(); // Hide the suggestions box
} else {
$.post("../include/search.php", {queryString: ""+inputString+""}, function(data) { // Do an AJAX call
$('#suggestions').fadeIn(); // Show the suggestions box
$('#suggestions').html(data); // Fill the suggestions box
});
}
}
[/javascript]

Re: php autocompletion query mysql

par xTG » 19 juin 2012, 16:44

Balise <a> ?
Cela m'étonne que tu t'attaques à ce genre de chose alors qu'il semble qu'il te manque de grosses bases. :?

Re: php autocompletion query mysql

par nico44530 » 19 juin 2012, 16:37

J'ai un nouveau problème :

J'aimerais faire un lien des résultats au profil des membres avec $id, mais l'id ne s'affiche pas, et je ne suis pas sur que leur profil va s'afficher.
Donc comment faire pour que en cliquant sur le résultat de la recherche ($prenom $nom) on soit dirigé vers le profil du membre.
Toujours avec le code plus haut.

Re: php autocompletion query mysql

par nico44530 » 19 juin 2012, 16:24

Ca fonctionne, merci :D

Re: php autocompletion query mysql

par xTG » 19 juin 2012, 16:12

Il faut peut être travailler la recherche, à savoir la requête. ;)
$query = $db->query("SELECT prenom, nom FROM wa_communaute WHERE prenom LIKE '%" . $queryString . "%' OR nom LIKE '%" . $queryString . "%'  ORDER BY prenom LIMIT 8");

Re: php autocompletion query mysql

par nico44530 » 19 juin 2012, 16:08

Merci,

J'ai fais ça, et ça fonctionne seulement quand j'écris le prénom, voici le code :

J'aimerais que ca fonctionne aussi quand j'écris le nom, le résultat s'affiche aussi (voir code du dessus)

Merci
$prenom = $result->prenom;
                                        if(strlen($prenom) > 35) {
                                                $prenom = substr($prenom, 0, 35) . "...";
                                        }        
$nom = $result->nom;
                                        if(strlen($nom) > 35) {
                                                $nom = substr($nom, 0, 35) . "...";
                                        }                                                  
                                        echo '<span class="searchheading">'.$prenom.' '.$nom.'</span>';

Re: php autocompletion query mysql

par xTG » 19 juin 2012, 16:01

Faut pas chercher bien loin pourtant...
$result->nom ???

php autocompletion query mysql

par nico44530 » 19 juin 2012, 15:56

Bonjour,

J'ai un problème dans un script jquery d'autocompletion, voici le code :

Dans ce code, seul le prénom est appelé, et est affiché dans les résultats. Mais je n'ai pas trouvé comment afficher le nom de famille. :cry:

Si quelqu'un sait comment faire, je ne dit pas non :)

Merci
	// PHP5 Implementation - uses MySQLi.
	// mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
	$db = new mysqli('...', '...', '...', '...');
	
	if(!$db) {
		// Show error if we cannot connect.
		echo 'Erreur : Impossible de se connecter à la base';
	} else {
		// Is there a posted query string?
		if(isset($_POST['queryString'])) {
			$queryString = $db->real_escape_string($_POST['queryString']);
			
			// Is the string length greater than 0?
			if(strlen($queryString) >0) {
				$query = $db->query("SELECT prenom, nom FROM wa_communaute WHERE prenom LIKE '%" . $queryString . "%' ORDER BY prenom LIMIT 8");
				
				if($query) {
					// While there are results loop through them - fetching an Object.
					
					// Store the category id
					$catid = 0;
					while ($result = $query ->fetch_object()) {
					
						if($result->cat_id != $catid) { // check if the category changed
							echo '<span class="category">'.$result->cat_name.'</span>';
							$catid = $result->cat_id;
						}
	         			echo '<a href="'.$result->url.'">';
	         			echo '<img src="search_images/'.$result->img.'" alt="" />';
	         			
	         			$prenom = $result->prenom;
	         			if(strlen($prenom) > 35) { 
	         				$prenom = substr($prenom, 0, 35) . "...";
	         			}						
	         			echo '<span class="searchheading">'.$prenom.' </span>';
	         			
	         			$description = $result->desc;
	         			if(strlen($description) > 80) { 
	         				$description = substr($description, 0, 80) . "...";
	         			}
	         			
	         			echo '<span>'.$description.'</span></a>';
	         		}
	         		echo '<span class="seperator"><a href="http://www.marcofolio.net/sitemap.html" title="Sitemap">Nothing interesting here? Try the sitemap.</a></span><br class="break" />';
				} else {
					echo 'ERROR: There was a problem with the query.';
				}
			} else {
				// Dont do anything.
			} // There is a queryString.
		} else {
			echo 'There should be no direct access to this script!';
		}
	}