problème choisir par catégorie en php

Eléphanteau du PHP | 40 Messages

24 avr. 2012, 19:44

Bonjour tout le monde,

en fait je veux regler mon problème si c'est possible je veux qu'on je clique sur un type de categorie il doit m'afficher juste le contenu qui appartient a ce type de catgorie que j'ai deja choisir en départ
je pense je dois utiliser la fonction IF mais je ne sais pas comment faire

ViPHP
xTG
ViPHP | 7331 Messages

24 avr. 2012, 21:37

Il faut inclure cette condition dans ta requête SQL (clause WHERE) c'est encore le mieux.
Quand à te diriger, sans plus d'informations et de code cela va être difficile...

Invité
Invité n'ayant pas de compte PHPfrance

25 avr. 2012, 01:18

vous pouvez me donné un exemple comme sa je pourrai trouver une solution
ou bien voila mes tables :
table = categorie ( qui stock les types( regions ) de categorie )
table = fiche ( qui stock les informations de l'enregistrement par exemple le nom le prenom et la region cette region est choisi parmi les region de la table categorie sous forme de liste déroulante )
donc mon code sql c'est : select titre from fiche order by titre;

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 07:13

Voilà ce que cela peut donner :
$sql = 'SELECT mesChamps FROM maTable WHERE monChamp = ' . mysql_real_escape_string($_POST['monChamp']);

Eléphanteau du PHP | 40 Messages

25 avr. 2012, 19:41

en fait j'ai pas bien compris regardé ce que j'ai fais mais sa marche pas

Code : Tout sélectionner

$demande = "SELECT DISTINCT Titre FROM fiche WHERE region = `". mysql_real_escape_string($_POST['region'])."`";


voila mon code complet

Code : Tout sélectionner

<?php $demande = "SELECT DISTINCT Titre FROM fiche WHERE region = `". mysql_real_escape_string($_POST['region'])."`"; //$demande = "SELECT Titre FROM fiche WHERE fiche.region = categorie.region "; $result = mysql_query($demande); while($data = mysql_fetch_assoc($result)) { $nb_fiche_fini="SELECT COUNT(*) AS compteur2 FROM `".htmlspecialchars($data['Titre'])."`"; $req_nb_fiche_fini=mysql_query($nb_fiche_fini) ; $row2 = mysql_result($req_nb_fiche_fini,0) ; $nb3 = $row2["compteur2"]; //on affiche les informations de l'enregistrement en cours $region = " select region from fiche "; $region1 = " select region from categorie "; if($nb3 == 0){} //if($region == $region1){ //return (TRUE); else{ echo '<p> <a href="./categorie.php?f='.$data['Titre'].'">'.preg_replace('/_/',' ',htmlspecialchars($data['Titre'])).'('.$nb3.')</a><br></p>'; //} } } ?>

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2012, 20:33

Il y a quelque chose dans $_POST['region'] ?

Eléphanteau du PHP | 40 Messages

26 avr. 2012, 01:04

bien sur oui, juste pour me comprendre bien voila une explication :


j'ai une table Fiche qui s'appelle :

id---- Titre------- region
1 -----alvaro -----Cinéma & TV
2 -----carboni-----annuaire
3 -----simo -------Cinéma & TV
4 -----moha ------sport
5 -----molay ------sport
6 -----rachi------- annuaire


voila donc je veux afficher la region te quand je clique sur une region il faut qu'il me donne le titre qui appartient ( merci )
par exemple je choisi sport il faut qu'il m'affiche ( moha et molay )

ViPHP
xTG
ViPHP | 7331 Messages

26 avr. 2012, 08:46

Hum j'avais trop vite parcouru ton script, il doit générer une erreur SQL.
Tu utilises des ` au lieu de ' pour entourer une chaîne de caractères dans ton where.

Eléphanteau du PHP | 40 Messages

26 avr. 2012, 16:55

oui j'ai changé maintenant mais le meme probléme il m'affiche tout les champs en meme temps il m'affiches pas juste le contenu d'une catégorie :( :(

<?php 
	
$demande = "SELECT  Titre FROM fiche  WHERE  region =  '".mysql_real_escape_string($_POST['region'])."'";
			$result = mysql_query($demande);
			while($data = mysql_fetch_assoc($result)) 
			{
			$nb_fiche_fini="SELECT COUNT(*) AS compteur2 FROM `".htmlspecialchars($data['Titre'])."`";
			$req_nb_fiche_fini=mysql_query($nb_fiche_fini) ; 
			$row2 = mysql_result($req_nb_fiche_fini,0) ;
			$nb3 = $row2["compteur2"];			
		
			
			if($nb3 == 0){}
			
			else{
             
			 echo '<p> <a href="./categorie.php?f='.$data['Titre'].'">'.preg_replace('/_/',' ',htmlspecialchars($data['Titre'])).'('.$nb3.')</a><br></p>';  
			  
			}
			} 
			?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 avr. 2012, 18:25

Salut,

Qu'entend tu par "affiche tout" ?
As tu affiché la réalité SQL pour la rester dans un client SQL ? (phpmyadmin ou équivalent).

À quoi sert la requête à dans le while ?
Tu as fait une table par "titre" ?
Si oui stop tout c'est une très très mauvaise idée.
Le compteur doit être dans la 1ère table. S'il y a plusieurs compteurs alors une table "compteur" peux être préférable (jointure).

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 40 Messages

26 avr. 2012, 19:25

en fait le compteur c'est juste pour compter combien de fiche dans un Titre
en fait Titre est un champ dans la talbe fiche

en fait si c'est possible tu peux m'aider pour changer cette méthode et travaillé avec une liste déroulante par exemple :

Code : Tout sélectionner

<form action="fiche.php" method="post"> <select id="data_region"> <option value="annuaire">annuaire</option> <option value="Cinéma & TV">Cinéma & TV</option> <option value="sport">sport</option> </select> <input type="submit"> </form>
quand je choisi une categorie il vas me dirigé vers les titres qui appartient a cette categorie !!

Eléphanteau du PHP | 40 Messages

27 avr. 2012, 17:08

vous etes la ???

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 avr. 2012, 17:35

en fait des fois oui des fois non.


on ne va ta faire ton script.

dit nous ce que tu ne sais pas faire et on pourra t'expliquer ou t'orienter vers un tuto ;)

une liste déroulante s'utilise comme le autres champs html (enfin sans le type file mais c'est une autre histoire).
=> http://www.lephpfacile.com/cours/8-recu ... ormulaires

coté validation du formulaire c'est une simpleConcaténation pour créer la requete SQL
http://www.lephpfacile.com/cours/13-aff ... votre-base

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 40 Messages

28 avr. 2012, 19:35

voila j'ai fais un code regardé mon erreur moi je la trouve pas
<?php echo '<a href="../index.php">Accueil</a> => <a href ="/fichit/includes/Type.php">Consulter les fiches</a> => <a href ="/fichit/includes/fiche.php?f='.$titre1.'">'.$titre1.'</a>'; ?>	
	
			</div>
				<h1>Fiches Disponibles</h1>
			<?php 
		
			$demande = "SELECT  Titre  FROM fiche WHERE region = '$titre1' ORDER BY Nom "
			$result = mysql_query($demande);
			while($data = mysql_fetch_assoc($result)) 
			{
             
			 echo '<p> <a href="./categorie.php?f='.$data['Titre'].'">'.preg_replace('/_/',' ',htmlspecialchars($data['Titre'])).'('.$nb3.')</a><br></p>';  
			  
			}
			} 
	
			?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 avr. 2012, 23:50

vu que le code est incomplet je ne peux que dire que

$titre1 et $data3 n'existent pas et qu'il y a une } en trop a la fin.

C'est surement pas vrai avec le code complet, celui ci serait donc assez pratique.

ton preg_replace peux être remplacé par un str_replace (c'est mieux même dans ce cas).

y a t'il un message d'erreur ?

y a t'il des symptome ? que fait le script, qu'est ce qu'il ne fait pas etc etc


@+
Il en faut peu pour être heureux ......