Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1296 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  prob de classement de champ

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prob de classement de champ

n°1438270
sil20
Posté le 07-09-2006 à 13:21:24  profilanswer
 

Bon, je me décide enfin à faire appel à vous !
Voilou mon problème :
 
J'ai une BDD qui s'appelle "mediatheque"
Avec des champs : titre, auteur, editeur , etc
 
J'ai créé une 1ère page contenant ce script avec un menu déroulant:
 
<form method="post" action="mediatheque1.php"> (médiatheque 1 étant la cible)
<p>Classer par
<select name="choix">
  <option value="choix1">Titre</option>
    <option value="choix2">Thème</option>
    <option value="choix3">Auteur</option>
    <option value="choix5">Support</option>
    <option value="choix6">Editeur</option>
    <option value="choix7">Année</option>
</select>
<input type="submit" value="Valider" />
</p>  
</form>
 
jusque là tout va bien  :)  
 
Ce que je voudrais, c'est qu'à partir de mon menu déroulant le visiteur puisse choisir le classement alphabétique par titre, auteur , etc ;)  
J'ai essayé plein de script différent à base de if/else et de switch mais rien ne marche
 
page mediatheque1 :
 
<?php
$choix = $_POST['choix'];
{
echo $choix;
}
?>
 :)  pour transmettre et vérifier le transfère (jusque là ça marche)
 
if ($choix == "choix1" )
<?php
mysql_connect("URL", "Login", "pwd" );
mysql_select_db("login" );
$reponse = mysql_query("SELECT * FROM mediatheque ORDER BY titre" );
while ($donnees = mysql_fetch_array ($reponse));
?>
{
echo $donnees['titre'];
echo $donnees['auteur'];
echo $donnees['theme'];
echo $donnees['editeur'];
echo $donnees['annee'];
}
<?php
mysql_close();
?>
 
elseif ($choix == "choix2" )
<?php
mysql_connect("URL", "Login", "pwd" );
mysql_select_db("Login" );
$reponse = mysql_query("SELECT * FROM mediatheque ORDER BY auteur" );
while ($donnees = mysql_fetch_array ($reponse));
?>
{
echo $donnees['titre'];
echo $donnees['auteur'];
echo $donnees['theme'];
echo $donnees['editeur'];
echo $donnees['annee'];
}
<?php
mysql_close();
?>
 
etc, jusqu'à la fin des choix  :)  
ceci est un des nombreux scripts que j'ai testé et qui bien évidement ne fonctionne pas :(  
Il y a certainement des choses qui vont vous sauter aux yeux et vous horrifier
Mais là je sèche
 
Par avance merci
 
 
 

mood
Publicité
Posté le 07-09-2006 à 13:21:24  profilanswer
 

n°1438298
mrbebert
Posté le 07-09-2006 à 13:56:52  profilanswer
 

Bon, là, deja, y a un truc qui me choque :D  
while ($donnees = mysql_fetch_array ($reponse));  
?>  
{  
echo $donnees['titre'];  
echo $donnees['auteur'];  
echo $donnees['theme'];  
echo $donnees['editeur'];  
echo $donnees['annee'];  
}

<?php  
mysql_close();  
?>
Pourquoi tu sors de la section PHP alors que tu fais des appels à une fonction PHP ? C'est toujours du code [:proy]
 
 
Il y a autre chose qui pose problème : le ";" à la fin de la ligne du while. Ca marque la fin de l'instruction donc, le bloc entre {} qui suit n'est pas rattaché au while(). En fait, PHP exécute d'abord while ($donnees = mysql_fetch_array ($reponse));, c'est à dire qu'il lit tous les enregistrements sans rien en faire. Et ensuite seulement il rentre (une seule fois, donc) dans le bloc entre {} :pt1cable:


Message édité par mrbebert le 07-09-2006 à 14:25:31
n°1438340
mrbebert
Posté le 07-09-2006 à 14:22:13  profilanswer
 

Sinon, pour la réception, je verrais plutôt une organisation un peu différente. A part l'ordre de tri, le traitement est le même. Donc, c'est dommage d'avoir plein de lignes de code qui, en fait, font la même chose.

<?php  
 
$choix = $_POST['choix'];  
 
# peut être une petite vérif du paramètre ici
 
 
# connexion
mysql_connect("URL", "Login", "pwd" );  
mysql_select_db("login" );  
 
 
# construction de la requete
$req = "SELECT * FROM mediatheque";
if ($choix == "choix1" ) {
  $req .= " ORDER BY titre ASC";
} elseif ($choix == "choix2" ) {
  $req .= " ORDER BY auteur ASC";
}
# ici, un "case" serait mieux, mais je connais plus la syntaxe
 
 
# execution de la requete et verification
$query = mysql_query($req);
if (! $query) { # erreur d'execution
  die("fouyaya, ca a plante ! : " . mysql_error());
}
 
 
# parcours des enregistrement
# la, va falloir faire un peu de mise en page ...
while ($donnees = mysql_fetch_array ($reponse)) {  
  echo $donnees['titre'];
  echo $donnees['auteur'];
  echo $donnees['theme'];
  echo $donnees['editeur'];
  echo $donnees['annee'];
}  
 
 
# fini
mysql_close();
?>

n°1438691
sil20
Posté le 07-09-2006 à 19:41:00  profilanswer
 

Effectivement ton script est plus simple :)  
je me suis empressé de le tester en rentrant du TAF
Ce qui donne au final ça :
 
<?php
$choix = $_POST['choix'];
{
echo $choix;
}
?>
 
<?php  
$choix = $_POST['choix'];  
mysql_connect("URL", "LOGIN", "PWD" );  
mysql_select_db("LOGIN" );  
 
$req = "SELECT * FROM mediatheque";  
 
if ($choix == "choix1" )
{  
  $req .= " ORDER BY titre ASC";  
}  
 
elseif ($choix == "choix2" )  
{  
  $req .= " ORDER BY auteur ASC";  
}  
 
elseif ($choix == "choix3" )  
{  
  $req .= " ORDER BY theme ASC";  
}  
 
elseif ($choix == "choix4" )  
{  
  $req .= " ORDER BY editeur ASC";  
}  
 
elseif ($choix == "choix5" )  
{  
  $req .= " ORDER BY annee ASC";  
}  
 
$query = mysql_query($req);  
 
if (! $query) { # erreur d'execution  
  die("fouyaya, ca a plante ! : " . mysql_error());  
}  
 
while ($donnees = mysql_fetch_array ($reponse)) {  
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
 
mysql_close();  
?>
 
Bon c'est vrai j'avoue je ne me suis pas foulé, j'ai juste recopié pour tester, je sais, j'ai honte :ange:  
 
Par contre il m'affiche : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/105/ blablabla............ :??:  
Sur la ligne en gras dans le script
 
J'ai essayé en faisant plusieurs modifications mais pas mieux  :(  
 

n°1438700
mrbebert
Posté le 07-09-2006 à 19:56:46  profilanswer
 

$query = mysql_query($req);  
...
 while ($donnees = mysql_fetch_array ($reponse)) {
 
forcément :o


Message édité par mrbebert le 07-09-2006 à 19:56:57
n°1438723
sil20
Posté le 07-09-2006 à 21:20:42  profilanswer
 

pfffffff............... :pfff:  
effectivement
Bon ça ne marche pas mieux :??: , j'essaye avec switch

n°1438724
sil20
Posté le 07-09-2006 à 21:29:30  profilanswer
 

Bon voici le script avec switch :
 
<?php
$choix = $_POST['choix'];
{
echo $choix;
}
?>
 
<?php  
$choix = $_POST['choix'];  
mysql_connect("URL", "Login", "pwd" );  
mysql_select_db("login" );  
 
$req = "SELECT * FROM mediatheque";  
 
switch ($note) {
 
case choix1:
$req .= " ORDER BY titre ASC";
break;
 
case choix2:
$req .= " ORDER BY auteur ASC";  
break;
 
case choix3:
$req .= " ORDER BY theme ASC";  
break;
 
case choix4:
$req .= " ORDER BY editeur ASC";
break;
 
case choix5:
$req .= " ORDER BY annee ASC";
break;
}
 
while ($donnees = mysql_fetch_array ($reponse)) { :heink:  
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
 
mysql_close();  
?>
 
Et toujours ce :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/105/blablabla ........
Toujours sur la même ligne  :heink:  
 
au fait ! excellent ce : $req .= " ORDER BY titre ASC";  :love:  
 

n°1438746
mrbebert
Posté le 07-09-2006 à 22:18:19  profilanswer
 

- il sort d'où le "$note" (dans le switch) :??:  
- elle est exécutée où, au juste, la requête ? :whistle:

n°1438747
betsamee
Asterisk Zeperyl
Posté le 07-09-2006 à 22:19:56  profilanswer
 

ouaips y a pas de mysql_query

n°1438763
sil20
Posté le 07-09-2006 à 23:10:48  profilanswer
 

désolé pour le $note
 
Ok j'avoue !!! vous m'avez démasqué ! Je suis un débutant ! :jap:  
Il y a 1mois  je ne savais même pas taper une ligne de PHP   :)  
 
bon maintenant je sais que je tourne autour de la bonne réponse (enfin j'imagine)
 
<?php
$choix = $_POST['choix'];
{
echo $choix;
}
?>
 
 
<?php
$choix = $_POST['choix'];
{
echo $choix;
}
?>
 
<?php  
$choix = $_POST['choix'];  
mysql_connect("URL", "Login", "pwd" );  
mysql_select_db("login" );
 
$req = "SELECT * FROM mediatheque";  
 
switch ($choix) {
 
case choix1:
$req .= " ORDER BY titre ASC";
$query = mysql_query($req);
while ($donnees = mysql_fetch_array ($reponse)) {
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
break;
 
case choix2:
$req .= " ORDER BY auteur ASC";  
$query = mysql_query($req);
while ($donnees = mysql_fetch_array ($reponse)) {
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
break;
 
case choix3:
$req .= " ORDER BY theme ASC";  
$query = mysql_query($req);
while ($donnees = mysql_fetch_array ($reponse)) {
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
break;
 
case choix4:
$req .= " ORDER BY editeur ASC";
$query = mysql_query($req);
while ($donnees = mysql_fetch_array ($reponse)) {
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
break;
 
case choix5:
$req .= " ORDER BY annee ASC";
$query = mysql_query($req);
while ($donnees = mysql_fetch_array ($reponse)) {
  echo $donnees['titre'];  
  echo $donnees['auteur'];  
  echo $donnees['theme'];  
  echo $donnees['editeur'];  
  echo $donnees['annee'];  
}  
break;
 
}
 
mysql_close();  
?>
 
 
Pitié ! dites moi que je brûle  :(  
Je sais qu'il y a des truc qui ne colle pas (vu que ça ne marche pas)
je vois bien que mon $reponse bug, mais je sèche

mood
Publicité
Posté le 07-09-2006 à 23:10:48  profilanswer
 

n°1438766
mrbebert
Posté le 07-09-2006 à 23:27:49  profilanswer
 

non, là, tu refroidis :D  
 
Pourquoi tu remets des exécutions de requêtes dans chaque case ? C'est pas logique, c'est mieux de construire d'abord la requête (en faisant un switch pour générer la partie ORDER BY), mais ensuite faire un seul traitement pour l'exécution et le parcours des données [:proy]  
 
(et de mettre des echo un peu partout pour vérifier à chaque étape que tu as les bonnes valeurs et débugger au fur et à mesure plutot que d'espérer que tout va fonctionner d'un bloc :pt1cable: )

n°1439378
sil20
Posté le 08-09-2006 à 23:11:55  profilanswer
 

J'ai vraiment du mal !!!   :(

n°1439397
sil20
Posté le 09-09-2006 à 01:34:40  profilanswer
 

que signifi le "." dans "$req .=" ??? c'est pour différencier 2 variable $req ? :heink:  

n°1439398
sil20
Posté le 09-09-2006 à 02:04:48  profilanswer
 

:D  Ca y est !!!! j'ai trouvé  :D  
Après des heures de tests  :pt1cable:  
Il y a certainement une méthode plus simple mais celle là marche   :sol:  
 
<?php
$choix = $_POST['choix'];
{
echo $choix;
}
?>
 
<?php
mysql_connect("url", "login", "pwd" );
mysql_select_db("login" );
 
if ($choix == "choix1" )
{
$reponse = mysql_query ("SELECT * FROM mediatheque ORDER BY titre ASC" );
}
 
elseif ($choix == "choix2" )
{
$reponse = mysql_query ("SELECT * FROM mediatheque ORDER BY theme ASC" );
}
 
elseif ($choix == "choix3" )
{
$reponse = mysql_query ("SELECT * FROM mediatheque ORDER BY auteur ASC" );
}
 
elseif ($choix == "choix5" )
{
$reponse = mysql_query ("SELECT * FROM mediatheque ORDER BY support ASC" );
}
 
elseif ($choix == "choix6" )
{
$reponse = mysql_query ("SELECT * FROM mediatheque ORDER BY editeur ASC" );
}
 
elseif ($choix == "choix7" )
{
$reponse = mysql_query ("SELECT * FROM mediatheque ORDER BY annee ASC" );
}
 
?>
 
<p>
<?php
while ($donnees = mysql_fetch_array($reponse))
{
?>
<?php echo $donnees['titre'];?><br/>
<?php echo $donnees['theme'];?><br/>
<?php echo $donnees['auteur'];?><br/>
<?php echo $donnees['detail'];?><br/>
<?php echo $donnees['support'];?><br/>
<?php echo $donnees['editeur'];?><br/>
<?php echo $donnees['annee'];?><br/>
</p>
 
<?php
}
mysql_close();
?>
 
 
Il ne me reste plus que la mise en page et hop !!!!!!  
je m'attaque aux formulaires !!! :(  
 
Merci pour tout

n°1440098
mrbebert
Posté le 11-09-2006 à 10:47:25  profilanswer
 

sil20 a écrit :

que signifi le "." dans "$req .=" ??? c'est pour différencier 2 variable $req ? :heink:

Non, c'est juste la concaténation.
$a .= "coucou" est équivalent à : $a = $a . "coucou"
sauf qu'avec la 1ère notation, on voit mieux qu'on modifie la variable $a :)  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  prob de classement de champ

 

Sujets relatifs
Problème création champ | Wampserveur[javascript] remplir un champ automatiquement
Batch Prob help me plizzzzPetit problème d'ordre numérique pour classement de fichiers
Champ file vide... contourner script upload...Champ 'file' vide.....
Extraction de champ par awk[Windows Sokets] {résolu} un prob de compilation avec code::blocks
Traitement d'une liste dans un champ de formulairechamp ENUM ou VARCHAR ?
Plus de sujets relatifs à : prob de classement de champ


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR