tri sur colonnes : à améliorer

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 juin 2009, 09:42

Sérieusement, lis ceci avant

http://www.siteduzero.com/tutoriel-3-14 ... #ss_part_4

Tu te lances dans quelque chose que tu ne comprends pas du tout. Les bases avant tout.

Eléphant du PHP | 65 Messages

10 juin 2009, 11:16

Bonjour,

En effet,
grâce à http://www.siteduzero.com/ et ses cours Site Web,
voilà ce que je crois avoir compris
et qui je pense te bloque pour aller plus loin.

Lorsque tu appelles le script ville.php, deux cas de figure sont à envisager :
  • Tu veux toutes les villes et toutes les activités, le script a été appelé sous la forme ville.php, c'est ce que tu as déjà fait.
  • Tu as cliqué sur une ville (<a href="ville.php?ville=5">nom ville</a>), tu ne veux donc que les activités de la ville 5, le script a été rappelé sous la forme ville.php?ville=5. Tu le sais grâce à la variable $_GET['ville'] qui existe et est égale à 5, et c'est cette variable que tu dois utiliser pour aller chercher les données de la ville dans ta base.
Attention, dans ce que j'ai écrit ci-dessus, tu dois parfaitement avoir compris que c'est toi qui construit le lien :

Code : Tout sélectionner

<a href="ville.php?ville=5">nom ville</a>
Et dans ton code tu n'as pas forcément ?ville=5.
Tu as peut être choisi de mettre ?id=5 ou ?idVille=5 ou que sais-je encore,
sachant que le 5, c'est PHP qui le crée quand tu écris echo $row['ville'].
De même lorsque tu vas vouloir filtrer par activité, tu vas avoir des ?activite=sport ou ?idActivite=sport ou ?cequetuveux=le contenu de $row['activite'].

Voilà, si ça te permet d'avancer dans ton projet.
Mais que ça ne t'empêche surtout pas de suivre le conseil de charabia,
en tout cas moi, j'ai commencé par les deux cours du SdZ
et ça m'a évité pas mal de prises de tête.

Courage,
Fred

Eléphant du PHP | 440 Messages

10 juin 2009, 13:26

je suis arrivé à récupérer le nom de la ville avec
$_GET['ville']
mais je ne comprends pas comment faire pour que les données du tableau correspondent à la ville.

J'ai essayé une condition
if ($_GET['ville'])
qui ne donne rien.
Et WHERE .... je ne sais toujours pas quoi mettre derrière !
<?php  
    $table = "jos_acajoom_subscribers";  
	$i = 0;
    $sql = "SELECT * FROM " . $table." ORDER BY activite" ;
    $res = mysql_query($sql);  
	$nbr_req = mysql_num_rows($res); // récupère le nombre de résultats de la requête 
	echo '<div align="left"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#666666">'.$_GET['ville'].'</font></b></div>' ;
	if ($_GET['ville'])
	{
	echo "      <table> 
        <tr width=\"70%\" valign=\"top\"> 
          <td width=\"28%\" bgcolor=\"#FF9900\" valign=\"top\"> 
            <div align=\"center\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color=\"#666666\">Secteurs d'activité </font></b></div> 
          </td> 
         <td width=\"27%\" bgcolor=\"#FF9900\"> 
            <div align=\"center\"><b><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\" color=\"#666666\">Enseignes</font></b></div>
          </td>
        </tr> 
        <tr width=\"70%\" valign=\"top\">\n"; 
		while ($i < $nbr_req) {
        echo '<td valign="top"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#666666" align="center" >'.mysql_result($res, $i, "activite").'<br /></font></td>';  
        echo '<td valign="top"><font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#666666" align="left" ><a href="http://'.mysql_result($res,$i,"site").'" target="_blank">'.mysql_result($res, $i, "Enseigne").'</a><br /></font></td>';  
        echo "</tr>\n";  
		$i++; 
		}
    echo "      </table>\n"; 
	}
?>
Débutant complet en php/mysql. Merci pour votre aide.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 juin 2009, 14:31

Le WHERE se met dans ta requête.

La logique est : afficher tous les enregistrements dont ville est xxx. Voilà la requête que tu dois mettre en place.

Pour l'instant ta requête se résume à prendre la totalité de ta table jos_acajoom_subscribers et de les trier. Tu n'as pas mis le critère : WHERE.

Donc ta requête doit ressembler à quoi si tu ajoutes cette clause ?

On te donne aussi des conseils que tu n'appliques pas, genre les CSS, allez voir les tutos de base avant...Etc Si tu avais lu un tant soit peu tous les liens fournis, tu verrais que tes questions n'ont pas lieu d'être.

Eléphant du PHP | 440 Messages

10 juin 2009, 14:48

    $sql = "SELECT * FROM " . $table." WHERE $_GET['ville'] ORDER BY activite" ;
Où, je sais. C'est le quoi qui me pose problème. Cette requête ne va pas. Qu'est-ce qui manque ??
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 65 Messages

10 juin 2009, 15:07

$sql = "SELECT * FROM " . $table." WHERE $_GET['ville'] ORDER BY activite" ;
Si tu traduis ta requête, en admettant que $_GET['ville'] contienne 5, cela donne à peu près :
sélectionne les lignes de ta table où 5, triées par activité, ce qui ne veut pas dire grand chose.

Tu dois écrire quelque chose qui dit :
sélectionne les lignes de ta table où le champ ville égale 5, triées par activité.

Voilà pour trouver le quoi.
Fred

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 juin 2009, 15:16

Diantre ! On parle dans le vide complet #-o

http://www.siteduzero.com/tutoriel-3-14 ... #ss_part_3

Eléphant du PHP | 440 Messages

10 juin 2009, 15:49

j'ai écrit ça aussi
$sql = "SELECT * FROM " . $table." WHERE ville = $_GET['ville'] ORDER BY activite" ; 
qui ne va pas non plus.

Ce que je retiens du tuto est qu'il faut écrire WHERE ville = '$_GET['ville']'

mais ça me retourne aussi un message d'erreur !
Débutant complet en php/mysql. Merci pour votre aide.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 juin 2009, 16:05

Tu concatènes bien pour $table alors pourquoi ne pas le faire avec $_GET['ville'] ?

Ensuite après la concaténation si tu n'as rien, vérifie que $_GET['ville'] donne un résultat.

Eléphant du PHP | 440 Messages

10 juin 2009, 16:16

WHERE ville .$_GET['ville']. 
comme ça ?
WHERE 'ville' .$_GET['ville']. 
comme ça ?
rien ne va.
Débutant complet en php/mysql. Merci pour votre aide.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 juin 2009, 16:24

Bon écoute, à voir les réponses que tu donnes :
- tes bases sont inexistants et tu n'as apparemment pas le désir de chercher et comprendre.
- tu testes n'importe comment sans même savoir ce que tu écris.

Pour moi c'est clair, tu attends la réponse sur un plateau.

Désolé, sans effort de ta part, il n'y en aura pas de la mienne |(X

Eléphant du PHP | 65 Messages

10 juin 2009, 17:37

Allez un petit pas en avant.
Je crois qu'il faut essayer ça.
$sql = "SELECT * FROM " . $table . " WHERE ville = '" . $_GET['ville'] . "' ORDER BY activite" ; 
Fred

Eléphant du PHP | 440 Messages

10 juin 2009, 17:57

Merci pour ce coup de main.
Le problème se déplace plus loin.
    $sql = "SELECT * FROM " . $table." WHERE ville '" . $_GET['ville'] . "' ORDER BY activite" ;
    $res = mysql_query($sql);  
	$nbr_req = mysql_num_rows($res); // récupère le nombre de résultats de la requête 
sur la dernière ligne. Pourquoi, puisque le 3e ligne se réfère à la 2e qui se réfère à la 1ère ?
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 65 Messages

10 juin 2009, 19:26

Tu as oublié le égal ! Bon sang de bonsoir !
WHERE ville = '" . $_GET['ville']
Fred

Eléphant du PHP | 440 Messages

10 juin 2009, 20:03

comment c'est possible !!

Avec = ça marche, merci à tous
C'est résolu !
Débutant complet en php/mysql. Merci pour votre aide.