Crée lien sur lettre alpha d'une requet 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 : Crée lien sur lettre alpha d'une requet MYSQL

j'essaie sans bien comprendre se que je fais

par Emancipation » 15 août 2008, 20:23

Alors, je ne sais pas si c'est le fais que je rentre de vacances mais j'ai l'impression de tout oublier tres vite et je comprend encors moins qu'il y a 3 semaines.
J'ai cependant essayée, ne serais ce que la petite parti du lien sur les lettres sans me preocuper de la requete. Chaques chose en son tps!! déjà que je capiche pas :( et la qd j'execute (bête et manchante sans doute)
<?php $alphabet = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';
$lettre = explode(',', $alphabet);

for ($i = 0 ; $i < 26 ; $i++) {  
  $lien_liste_alpha = ''; 
  if (!empty($_GET['lettre']) && $_GET['lettre'] != $lettre[$i]) // ajoute le lien 
    $lien_liste_alpha = '<a href="'; 
	$lien_liste_alpha .= $_SERVER['PHP_SELF'] .'?lettre='.$lettre[$i].'">';    
    $lien_liste_alpha .= strtoupper($lettre[$i]);    
  if (!empty($_GET['lettre']) && $_GET['lettre'] != $lettre[$i]) // ajoute la balise de fin 
    $lien_liste_alpha.= '</a>';    
  echo $lien_liste_alpha;    
} 

voila se que ca m'affiche (apercu html)

/colonne.php?lettre=a">A/colonne.php?lettre=b">B/colonne.php?lettre=c">C/colonne.php?lettre=d">D/colonne.php?lettre=e">E/colonne.php?lettre=f">F/colonne.php?lettre=g">G/colonne.php?lettre=h">H/colonne.ph
p?lettre=i">I/colonne.php?lettre=j">J/colonne.php?lettre=k">K/colonne.php?lettre=l">L/colonne.php?lettre=m">M/colonne.php?lettre=n">N/colonne.php?lettre=o">O/colonne.php?lettre=p">P/colonne.php?lettre=q">Q/colonne.php?lettre=r">R/colonne.php?lettre=s">S/colonne.php?lettre=t">T/colonne.php?lettre=u">U/colonne.php?lettre=v">V/colonne.php?lettre=w">W/colonne.php?lettre=x">X/colonne.php?lettre=y">Y/colonne.php?lettre=z">ZMoteur

la base :
Acma Amour Axis Desires Miracle Malis Glamour Malis Avenes Grachs Blabla Gloche Nina Ricci
///////
au lieu de m'afficher les lettre a,c,d,e,...... et me proposée de cliquer dessu pour afficher uniquement les donnée commencant par tel ou tel lettre. la il maffiche surement ce qui devrait se trouver dans la barre de nav a la suite sans chercher a comprendre et a pres il me balance tte la base
J'ai du mal à m'expliquer je crois. Mais est-ce normal, ai-je fais une betise ????

Merci pour votre aide
[/php]

par Emancipation » 14 août 2008, 00:11

merci pour votre reponse tres rapide,
je vais essayer tt ca...

par Ryle » 13 août 2008, 13:55

Bon déjà il y a un problème dans le code qui te génère l'abcédaire : si la lettre selectionné correspond à la lettre parcouru, alors tu zappe la fermeture de la balise lien, du coup le code html généré ne sera pas correct...
$lien_liste_alpha.= ($_GET['lettre'] == $lettre[$i]) ? '' : '">';

Il y a plusieurs solution à cela, tout dépend de ce que tu veux faire, en voici une qui supprime le lien de la lettre courante :
for ($i = 0 ; $i < 26 ; $i++) { 
  $lien_liste_alpha = '';
  if (!empty($_GET['lettre']) && $_GET['lettre'] != $lettre[$i]) // ajoute le lien
    $lien_liste_alpha = ' <a href=" . $_SERVER['PHP_SELF'] . '?lettre='.$lettre[$i] . '">';   
  $lien_liste_alpha.= strtoupper($lettre[$i]);   
  if (!empty($_GET['lettre']) && $_GET['lettre'] != $lettre[$i]) // ajoute la balise de fin
    $lien_liste_alpha.= '</a>';   
  echo $lien_liste_alpha;   
}
Ceci étant, ton problème vient ensuite de la construction de ta requête. En effet, si tu génères bien la variable $tri_alphabetique avec la partie WHERE de ta requête, ceci n'est pas utilisé (et par ailleurs est fait alors que la requête a déjà été exécutée :))

Il faut revoir le séquencement de ton code :
1. Début du SELECT
2. Ajout du WHERE si nécessaire
3. Ajout du ORDER BY
4. Ajout du LIMIT
5. et seulement alors exécution de la requête :)

par Invité » 13 août 2008, 10:15

le probleme viens d'ici précisement.
Je pense que mon code est completement faux quand je demande dans ma boucle d'appeler la requet sur la recherche sql a l'aide la methode GET.
j'ai compris que c'était comme cela que je pouvais le faire mais j'ai pas trop compris la technique.
la dans mon code quand je clic sur les lettres il me fais rien il me laisse ttes les données de la base sans m'afficher uniquement la requet.
Si vous pourriez m'aider j'en peux plus
je décourage

<?php $alphabet = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z';  
$lettre = explode(',', $alphabet);  


for ($i = 0 ; $i < 26 ; $i++)  
{ $lien_liste_alpha = ' <a href="';  
$lien_liste_alpha.= $_SERVER['PHP_SELF'];  
$lien_liste_alpha.= '?lettre='.$lettre[$i];  
$lien_liste_alpha.= ($_GET['lettre'] == $lettre[$i]) ? '' : '">';  
$lien_liste_alpha.= strtoupper($lettre[$i]);  
$lien_liste_alpha.= '</a>';  
echo $lien_liste_alpha;  
}?>

Re: Crée lien sur lettre alpha d'une requet MYSQL

par ouckileou » 13 août 2008, 10:09

pourriez vous m'aider a savoir quesce qui cloche.
Pour en trouver la cause il faudrait déjà connaître précisément le problème.

Crée lien sur lettre alpha d'une requet MYSQL

par emancipation » 13 août 2008, 10:06

Bonjour,

Je suis debutante et je but sur la mise en place du lien sur mes lettres alpha crée à l'aide d'une boucle for. Ce lien doit faire appel à une requet MYSQL avec le fameux %. Ce qui devrait me permettre d'afficher juste les donnée de ma base commencant pas tel ou tel lettre...

ci joint mon code...
pourriez vous m'aider a savoir quesce qui cloche.
Je vous en remerci par avance

 
<?php include("includes/connexion_plus.php"); 
$connexion = mysql_connect($serveur, $utilisateur, $mot_passe); 
$selection_base = mysql_select_db($base_de_donnees, $connexion); 
// Requête générale de la page 
$prepa_requete = 'SELECT * FROM '.$table_francais. ' LIMIT 60 '; 
$requete = mysql_query($prepa_requete); 

// Préselection de la lettre de tri alphabétique 
$lettre_alphabetique = (empty($_GET['lettre'])) ? '' : $_GET['lettre']; 
// 
// Structure conditionnelle pour la requète SQL : $requete 
if (!empty($_GET['lettre'])) 
{ $tri_alphabetique = "WHERE nom LIKE '".$lettre_alphabetique."%'"; } 
else 
{ $tri_alphabetique = ''; } 
// -------------------------------------------------------------------------------------------------------------------------------- 
$sens = empty($_GET['sens']) ? 'ASC' : $_GET['sens']; 
$sens_du_tri = 'ORDER BY '.$colonne.' '.$sens; 


////////////////////////////////////////////////////////////////// 
$nom = empty($_GET['nom']) ? 0 : $_GET['nom']; 
?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Document sans titre</title> 
</head> 

<body> 
<form method="get" action=""> 
<?php $alphabet = 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z'; 
$lettre = explode(',', $alphabet); 


for ($i = 0 ; $i < 26 ; $i++) 
{ $lien_liste_alpha = ' <a href="'; 
$lien_liste_alpha.= $_SERVER['PHP_SELF']; 
$lien_liste_alpha.= '?lettre='.$lettre[$i]; 
$lien_liste_alpha.= ($_GET['lettre'] == $lettre[$i]) ? '' : '">'; 
$lien_liste_alpha.= strtoupper($lettre[$i]); 
$lien_liste_alpha.= '</a>'; 
echo $lien_liste_alpha; 
}?> 
<table> 
<tr><td> 
<?php 

$nbr_total=mysql_num_rows($requete); 
$compteur=1; 
$compteur_fin=1; 


while($rech_tab=mysql_fetch_array($requete)){ 

if($compteur==16){ 

echo "</td><td>"; 
$compteur=1; 
} 
?> 

<?php echo '<li>' .$rech_tab['nom']. '</li>'; ?><br /> 

<?php 


if($compteur_fin==$nbr_total && $compteur==5){ 
echo "</td></tr>"; 
} 

$compteur++; 
$compteur_fin++; 

} 


?> 

</table> 
</form> 
</body> 
</html>Configuration: Windows XP