Utilisation SELECT, LIKE + variable

Résolu/Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 29 sept. 2011 à 15:02
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 2 oct. 2011 à 10:04
Bonjour,

Je cherche à afficher un tableau en y insérant les noms de la base mysql commençant par A, ou B, ou C, ......, + le total des même noms.

Voilà ce que j'ai écrit :

$lettre = $_GET['lettre']; 
$rechlettre = ' ' . $lettre . '%';

$select = 'SELECT nom,COUNT(*) AS nb FROM ville WHERE nom LIKE "$rechlettre" GROUP BY nom ORDER BY nom ASC';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

    while ($row = mysql_fetch_array($result))
    {
        echo '<tr>';
        echo '<td>'.$row['nom'].'</td>';
        echo '<td align="center">'.$row['nb'].'</td>';
        echo '</tr>';
	}


Si je fais un "echo" de $rechlettre, cela correspond à la demande. C'est à dire A%, ou B%, .....
Mais aucune donnée ne s'affiche !?
POurquoi ?
Merci.

9 réponses

t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
Modifié par t671 le 30/09/2011 à 18:11
OK !!!!!
Avec AND date_naissance != "", si pour un nom A j'ai une ou plusieurs "date" existantes, et une ou plusieurs "date" vides, j'affiche du vide, au lieu d'afficher la dernière "date" minimum existante.
Si pour un nom B je n'ai pas de "date" existante, mais uniquement une ou plusieurs "date" vides, je n'ai pas d'affichage du tout ......

C'est un peu tordu, non ? ;o)
1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
30 sept. 2011 à 19:03
Tu peux utiliser mysql_num_rows() pour compter le nombre de résultat commençant par la lettre souhaité et dont le champ data_naissance n'est pas vide (ce qui est le but de ta requête).

Ainsi par exemple:
$sql = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date FROM ville WHERE nom LIKE "'.mysql_real_escape_string($lettre).'%" AND date_naissance != "" GROUP BY nom ORDER BY nom ASC';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

// Si pas de résultat
if($nb==0) echo'<p>Aucun résultat trouvé.</p>';

// Si un ou plusieurs résultats
else{
	echo'<p><strong>'.$nb.'</strong> résultats trouvés:</p>';
	while($data = mysql_fetch_array($req))
		{
		echo'<p><strong>'.$data['nom'].'</strong> ('.$data['date_naissance'].')</p>';
		}
	}
0