Page 1 sur 2

Choix dans l'affichage

Posté : 06 mai 2006, 20:49
par alexdarcy
Voilà, bonjour à tous, j'ai un petit souci de rien du tout dans l'affichage de mon répértoire photos. Actuellement l'affichage est mixte féminin-masculin, aussi je souhaiterai partager l'affichage en deux sections, masculin et féminin.
Je pense que tout se passera dans l'url ?!
Dans ma table j'ai un champ "genre" dont la valeur est soit M (masculin) ou F (féminin).
Voici une partie du code (je ne mets que ce qui nous occupe ici) :
<?
include_once("../config/conf.inc.php");

if (!isset($debut)) $debut = 0;
$cfg_nbres_ppage = 10;

$sql  = "SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp  FROM membres WHERE id_photo_choisie != '0' ORDER BY prenom ASC"; 
$sql .= ' LIMIT '.$debut.','.$cfg_nbres_ppage;

$base = new class_db($sql);

if ($base->next_record()){
	//requete permettant de recup les infos dans la base de données.
	$id = $base->Record[id];
	$prenom = $base->Record[prenom];
	$ville = $base->Record[ville];
	$cp = $base->Record[cp];
                $agent = $base->Record[agent];
	
	$id_photo_choisie = $base->Record[id_photo_choisie];
		$sql2 = "SELECT extension FROM photo WHERE id_user='$id' AND id ='$id_photo_choisie'";
	$base2 = new class_db($sql2);
	$base2->next_record();
	$type = $base2->Record[extension];

	$base2->free();
	
	$photo1 =  "<a href='../loge/fiche.php?fiche_id=$id' target='blank'>$prenom, $cp<br><br><img src='../loge/photo/$id_photo_choisie.$type' height='150' width='120' border='0'>
</a><br></b>Artiste représenté par :<b><br> $agent";
}
$base->query("SELECT id FROM membres WHERE id_photo_choisie != '0'");
$nbe = $base->num_rows();

$suite = $debut + $cfg_nbres_ppage;
if ($nbe > $suite){
	$suivant = "<a href='photos_comediens.php?debut=$suite'>Page suivante</a>";
}
$prec = $debut - $cfg_nbres_ppage; 
if ($nbe > 0){
	$precedent = "<a href='photos_comediens.php?debut=$prec'>Page précédente</a>";
}
$base->free();

$tablo_asso = array(	"<autre_experience>" => stripslashes($base->Record[autre_experience]),
			"<erreur>" => stripslashes($erreur),
			"<photo1>" => $photo1,
			"<photo2>" => $photo2,
			"<photo3>" => $photo3,
			"<photo4>" => $photo4,
			"<photo5>" => $photo5,
			"<photo6>" => $photo6,
			"<photo7>" => $photo7,
			"<photo8>" => $photo8,
			"<photo9>" => $photo9,
		                "<photo10>" => $photo10,
		                "<suivant>" => $suivant,
	                                "<precedent>" => $precedent
			);
//Appel a la fonction de remplacements.
afficher($tablo_asso,"rep.html");
?>
Merci pour vos solutions
:roll:

Posté : 06 mai 2006, 21:46
par Mouet
Bonjour ! :D

Tu envois M ou F à la page. Enssuite, dans cette page tu ajoute (au niveau de la requete) la sélection du sexe.
//Si pas spécifié, on met M par défaut.
if (!$_request["genre"]) { $genre = "M"; }
else { $genre = $_request["genre"]; }
//Dans la requete:

"... WHERE genre='$genre'...;"

Posté : 06 mai 2006, 21:50
par Mouet
J'ai une question par la même occasion. Y a-t-il un élement pour retourner la valeur dans le if ? Par exemple
$pwet = "Hu";
if ($Pwet) { echo ifvalue(); }

// et ca me fasse un echo Hu

Posté : 06 mai 2006, 21:53
par alexdarcy
non voici le message d'erreur que g reçois :
Erreur Base de donnée : Invalid SQL: SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp FROM membres WHERE id_photo_choisie != '0' ORDER BY genre LIMIT M,0,10 (1064 You have an error in your SQL syntax near 'M,0,10' at line 1)
.


C'est pour cela qu'il fo bien regardé le code que j'ai donné !!

:oops: :cry:

Posté : 06 mai 2006, 21:56
par Mouet
Houla, c'est quoi cette limit? Oo, je te réecris ta requete :
if (!$_request["genre"]) { $genre = "M"; } 
else { $genre = $_request["genre"]; } 

$sql  = "SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp  FROM membres WHERE id_photo_choisie != '0', genre ='$genre' ORDER BY prenom ASC";

Posté : 06 mai 2006, 22:01
par alexdarcy
Houla, c'est quoi cette limit? Oo, je te réecris ta requete :
if (!$_request["genre"]) { $genre = "M"; } 
else { $genre = $_request["genre"]; } 

$sql  = "SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp  FROM membres WHERE id_photo_choisie != '0', genre ='$genre' ORDER BY prenom ASC";
toujours po :cry:
voila le message d'erreur :
Erreur Base de donnée : Invalid SQL: SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp FROM membres WHERE id_photo_choisie != '0', genre='M' ORDER BY prenom ASC LIMIT 0,10 (1064 You have an error in your SQL syntax near ' genre='M' ORDER BY prenom ASC LIMIT 0,10' at line 1)
.


Regarde bien le code que j'ai posté au début de mon message, parce que il y a deja une limite par page $debut !

:oops:

Posté : 06 mai 2006, 22:05
par Cyrano
L'erreur n'est plus dans la limite mais dans ta clause WHERE :
au lieu de :

Code : Tout sélectionner

...WHERE id_photo_choisie != '0', genre='M' ...
il faut faire :

Code : Tout sélectionner

...WHERE id_photo_choisie != 0 AND genre='M' ...

Posté : 06 mai 2006, 22:07
par alexdarcy
L'erreur n'est plus dans la limite mais dans ta clause WHERE :
au lieu de :

Code : Tout sélectionner

...WHERE id_photo_choisie != '0', genre='M' ...
il faut faire :

Code : Tout sélectionner

...WHERE id_photo_choisie != 0 AND genre='M' ...
Ok cyrano ça fonctionne :lol:
mais comment afficher maintenant les filles ?

Posté : 06 mai 2006, 22:08
par Mouet
Petite erreur de ma part :(
$sql  = "SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp  FROM membres WHERE id_photo_choisie != '0' && genre='$genre' ORDER BY prenom ASC"; 
essayes et dis moi quoi :)

Posté : 06 mai 2006, 22:10
par alexdarcy
Petite erreur de ma part :(
$sql  = "SELECT id_photo_choisie, id, autre_experience, agent, type, prenom, ville, cp  FROM membres WHERE id_photo_choisie != '0' && genre='$genre' ORDER BY prenom ASC"; 
essayes et dis moi quoi :)
C'est bon mouet ça fonctionne avec AND !!
mais comment afficher maintenant genre: F ????
:cry:

Posté : 06 mai 2006, 22:10
par Mouet
Tu remplace M par F (dans le AND genre='M') :P

Posté : 06 mai 2006, 22:12
par alexdarcy
Tu remplace M par F (dans le AND genre='M') :P
C'est à dire ?? sinon c'est inversé mais le probleme reste !
N'est-ce pas plutot un probleme d'url ?
:cry: :wink:

Posté : 06 mai 2006, 22:13
par Cyrano
C'est un problème d'assignation de valeur à ta variable $genre tout simplement: si tu assignes "F" ou "M" le résultat sera différent en principe : donc comment fais-tu cette assignation ?

Posté : 06 mai 2006, 22:14
par Mouet
Si tu as mis
if (!$_request["genre"]) { $genre = "M"; } 
else { $genre = $_request["genre"]; } 
Il te suffit de metre dans l'url :
*.PHP?genre=m
ou
*.PHP?genre=f

Posté : 06 mai 2006, 22:20
par Cyrano
C'est quoi cette utilisation de $_request :shock:

-1- on utilise le moins possible cette variable en dehors du débuggage;
-2- on écrit cette variable en majuscule
-3- on peut même simplifier le code :
au lieu de
//Si pas spécifié, on met M par défaut.
if (!$_request["genre"]) { $genre = "M"; }
else { $genre = $_request["genre"]; } 
on fait :
//Si pas spécifié, on met M par défaut.
$genre = (isset($_POST['genre'])) ? "F" : "M";
Enfin à condition que ce soit envoyé par méthode post bien sur, sinon remplacer par $_GET, mais à éviter aussi quand il est question d'accès à une base de données, principalement pour éviter tout risque d'attaque par injection SQL.