tri + liens + requetes

Eléphant du PHP | 299 Messages

19 sept. 2009, 23:33

Bonjour a tous!!!

Je me posais une question, mais la sur le coup je vois pas trop comment faire, pourtant je suis sur que c' est hyper simple.


J' ai ma page annonces.php qui liste toutes les annonces par ordre décroissant, j' aimerai y ajouter des liens du genre (liste deroulante: trier par -> prix, date, etc), sauriez vous comment je peux faire?


Dois je absolument utiliser un switch sachant que je dois faire une requete par mode de tri?


Merci d' avance de m' eclairer :/

Mammouth du PHP | 686 Messages

20 sept. 2009, 00:37

Et bien peut etre en faisant passer le parmaetre par ton url page.php?order=prix

Ensuite tu fait ta requete si le tri est effectué, ca me parait assez simple

Eléphant du PHP | 299 Messages

20 sept. 2009, 00:56

C' est bien ce que je pensais, donc le mieux serait un switch?

Mammouth du PHP | 686 Messages

20 sept. 2009, 10:01

exact :wink:

Eléphant du PHP | 299 Messages

20 sept. 2009, 11:52

je pensais a un truc tout simple, genre:

					    switch($tri) {
        case 'croissant': 
            $annonces1 = mysql_query('SELECT * FROM annonces ORDER BY id ASC');
			while ($annonces = mysql_fetch_array($annonces1))
            break;
        case 'decroissant':
			$annonces1 = mysql_query('SELECT * FROM annonces ORDER BY id DESC');
			while ($annonces = mysql_fetch_array($annonces1))
            break;

    }
Mais visiblement il aime pas :s, un conseil?

Mammouth du PHP | 686 Messages

20 sept. 2009, 12:36

Il faut que tu sorte ton while de ton swich
En gros ton swhich pose les condition
et après tu récupère les données dans ta boucle while
Si tu as du mal avec les swich sert toi plus de if et else if
  switch($tri) {
        case 'croissant': 
            $annonces1 = mysql_query('SELECT * FROM annonces ORDER BY id ASC');
           break;
        case 'decroissant':
                        $annonces1 = mysql_query('SELECT * FROM annonces ORDER BY id DESC');
            break;
    }
while ($annonces = mysql_fetch_array($annonces1)){
///// traitement des données
}
J'ajouterai même quelque chose concernant l'optimisation de ton script, il est deconseillé de mettre SELECT * car il il a une perte de performance. Renseigne tous les champs SELECT champ1,champ2 ... FROM annonces ORDER BY id DESC

Eléphant du PHP | 299 Messages

20 sept. 2009, 13:23

bizarre j' aurai juré avoir testé ca!!!!


En tout ca marci a toi!

J' ai un ultime souci a te demander, celui la est plus urgent vu que ma page est indisponible, voici le probleme:
                    <?php
					
											  
			$id = $_GET['id'];
			$pseudo = $_GET['pseudo'];
				
											  
			$sql = 'SELECT annonces.id,annonces.auteur,annonces.titre,annonces.cat,annonces.type,annonces.prix,annonces.date,annonces.texte,annonces.photo1,connexion.pseudo,connexion.avatar,connexion.siren FROM annonces'
			$sql. = ' LEFT OUTER JOIN connexion ON annonces.auteur = connexion.pseudo';
			$sql.= ' WHERE annonces.id="'. $id .'"';
			$annonces = mysql_fetch_array($sql)



			    
						
			?>
Je m' explique, j' ai ma table principale pour cette page 'annonces'

Cette requete simple fonctionne tres bien, hélas j' aurai voulu afficher l' avatar du posteur, celui ci se trouve dans la table pricnipale qui donne les infos des membres 'connexion', je me retrouve avec ceci:

Parse error: syntax error, unexpected T_VARIABLE in /home/villedeb/www/annonces/annonces_read.php on line 97


Eveideement ca vient de la requete, mais alors que est le souci?

Mammouth du PHP | 985 Messages

20 sept. 2009, 13:43

Salut,
C'est un problème de simples et doubles guillemets.
Rassemble ta requête en une seule ligne pour simplifier la lisibilité.
Ensuite repère le ou les erreurs sans oublier les guillemets de $_GET...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 299 Messages

20 sept. 2009, 15:05

ce coup-ci j' ai accés a la page, mais j' ai toujours une erreur:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/villedeb/www/annonces/annonces_read.php on line 97
<?php
                                       
                                                                                         
                        $id = $_GET['id'];
                        $pseudo = $_GET['pseudo'];
                               
                                                                                         
                        $sql = 'SELECT annonces.id,annonces.auteur,annonces.titre,annonces.cat,annonces.type,annonces.prix,annonces.date,annonces.texte,annonces.photo1,connexion.pseudo,connexion.avatar,connexion.siren FROM annonces LEFT OUTER JOIN connexion ON annonces.auteur = connexion.pseudo WHERE annonces.id='. $id .'';
                        $annonces = mysql_fetch_array($sql)



                           
                                               
                        ?>

Mammouth du PHP | 985 Messages

20 sept. 2009, 15:16

<?php                                                                            
                        $id = $_GET['id'];
                        $pseudo = $_GET['pseudo'];
                                                                                         
                        $sql = 'SELECT annonces.id, annonces.auteur, annonces.titre, annonces.cat, annonces.type, annonces.prix, annonces.date, annonces.texte, annonces.photo1, connexion.pseudo, connexion.avatar, connexion.siren FROM annonces';
                        $sql .= ' LEFT OUTER JOIN connexion ON annonces.auteur = connexion.pseudo';
                        $sql .= ' WHERE annonces.id="'. $id .'"';

                        $annonces = mysql_fetch_array($sql);
?>
En fait c'était surtout un problème d'absence de: ;
Comme ça?
Puis, la variable $pseudo ici est définie mais non utilisée mais surement réutilisée ensuite...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 299 Messages

20 sept. 2009, 15:57

alors merci de ton aide, mais helas:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/villedeb/www/annonces/annonces_read.php on line 100


Sinon oui cette variable est reutilisée juste aprés

Mammouth du PHP | 985 Messages

20 sept. 2009, 16:01

Perso je ne sais plus, je laisse la place aux autres.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 686 Messages

20 sept. 2009, 16:04

C'est ce que tu nous donne comme script qu'il y a à la ligne 100 ?
Donne nous ce qu'il ya a à la ligne 100 et ce qu'il y a avant aussi

Eléphant du PHP | 299 Messages

20 sept. 2009, 16:12

Desolé j' ai oublié de preciser, la ligne 100 est celle-ci:

$annonces = mysql_fetch_array($sql);


donc le probleme est encore et toujours cette maudite requete :s

Mammouth du PHP | 686 Messages

20 sept. 2009, 16:25

Et pourquoi tu ne reunit pas tout dans ta requete ?
<?php                                                                            
                        $id = $_GET['id'];
                        $pseudo = $_GET['pseudo'];
                                                                                         
                        $sql = "SELECT annonces.id, annonces.auteur, annonces.titre, annonces.cat, annonces.type, annonces.prix, annonces.date, annonces.texte, annonces.photo1, connexion.pseudo, connexion.avatar, connexion.siren FROM annonces
LEFT OUTER JOIN connexion ON annonces.auteur = connexion.pseudo
WHERE annonces.id='$id'";

                        $annonces = mysql_fetch_array($sql);
?>