Page 1 sur 1

trie et liste déroulante

Posté : 05 août 2005, 11:00
par hervé
boujour, je débute en php et ça fait plusieurs jours que je galére, quelque'un peut t il m'aider à resoudre mon problème:
mon but est de trier une base de donnée en passant par plusieur page pour sélectionner les critère de trie.
Pour cela j'essaye de mettre les variables dans une session.
mon problème principal le trie successif, ensuite mettre les variable en session. pour les sessions je comprend pas bien si on peut mettre plusieurs variables provenant de page différentes ?
Je pense aussi qu'il y a d'autres erreur dans le code des pages ?
merci par avance pour votre aide.
TABLE:

#
# Structure de la table `marque_tbl`
#

CREATE TABLE `marque_tbl` (
  `id_marque` int(11) NOT NULL auto_increment,
  `marque` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id_marque`),
  UNIQUE KEY `marque` (`marque`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;

#
# Contenu de la table `marque_tbl`
#

INSERT INTO `marque_tbl` VALUES (1, 'marque 1');
INSERT INTO `marque_tbl` VALUES (2, 'marque 2');
INSERT INTO `marque_tbl` VALUES (4, 'marque 3');

#
# Structure de la table `model_tbl`
#

CREATE TABLE `model_tbl` (
  `id_model` int(11) NOT NULL auto_increment,
  `marque` varchar(50) NOT NULL default '0',
  `model` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id_model`),
  UNIQUE KEY `id_model` (`id_model`),
  UNIQUE KEY `model` (`model`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;

#
# Contenu de la table `model_tbl`
#

INSERT INTO `model_tbl` VALUES (4, 'marque 1', 'RR');
INSERT INTO `model_tbl` VALUES (2, 'marque 2', 'RR 1');
INSERT INTO `model_tbl` VALUES (3, 'marque 2', 'TR 2');





#
# Structure de la table `annee_tbl`
#

CREATE TABLE `annee_tbl` (
  `marque` varchar(50) NOT NULL default '0',
  `id_annee` int(4) NOT NULL default '0',
  `model` varchar(50) NOT NULL default '0',
  `annee` varchar(50) NOT NULL default '',
  UNIQUE KEY `id_annee` (`id_annee`),
  UNIQUE KEY `annee` (`annee`)
) TYPE=MyISAM;

#
# Contenu de la table `annee_tbl`
#

INSERT INTO `annee_tbl` VALUES ('marque 1', 0, 'RR', '2005');

_______________________________________________________

FICHIER MARQUE:

<?php require_once('Connections/pyb.php'); ?>
<?php
mysql_select_db($database_pyb, $pyb);
$query_liste_marque = "SELECT * FROM marque_tbl";
$liste_marque = mysql_query($query_liste_marque, $pyb) or die(mysql_error());
$row_liste_marque = mysql_fetch_assoc($liste_marque);
$totalRows_liste_marque = mysql_num_rows($liste_marque);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<h3>Moto</h3> 
<form name="marque" id="marque" method="post" action="model.php">
<select name="marque">
<?php
$result = mysql_query("SELECT id_marque, marque FROM marque_tbl");
while (list($id_marque,$marque )= mysql_fetch_row ($result))
 {
 echo ("<OPTION NAME=marque VALUE=$marque >$marque ");
  }
  ?>
</select>
<input type="submit" name="Submit" value="Envoyer" /> 
</form>
 </body>
</html>


______________________________________________________


FICHIER MODEL:

<?PHP session_start(); ?>
<?php require_once('Connections/pyb.php'); ?>
<?php
$marque = $_POST['marque'];
$_SESSION['marque'] = $marque ;
?>
<?php
mysql_select_db($database_pyb, $pyb);
$query_liste_model = "SELECT * FROM model_tbl WHERE '$marque'=marque";
$liste_model = mysql_query($query_liste_model, $pyb) or die(mysql_error());
$row_liste_model = mysql_fetch_assoc($liste_model);
$totalRows_liste_model = mysql_num_rows($liste_model);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sélection Model</title>
</head>

<body>
<h3>Marque</h3> 
<?php
print ("$marque");
?>
<h3>Model</h3> 
<form name="model" id="model" method="post" action="annee.php">
<select name="model">
<?php
$result = mysql_query("SELECT id_model, model FROM model_tbl");
while (list($id_model,$model )= mysql_fetch_row ($result))
 {
 echo ("<OPTION NAME=model VALUE=$model >$model ");
  }
  ?>
</select>
<input type="submit" name="Submit" value="Envoyer" /> 
</form>
</body>
</html>

____________________________________________________________________

FICHIER ANNEE:

<?PHP session_start(); ?>
<?php require_once('Connections/pyb.php'); ?>
<?php
mysql_select_db($database_pyb, $pyb);
$query_liste_annee = "SELECT * FROM annee_tbl WHERE '$model'";
$liste_annee = mysql_query($query_liste_annee, $pyb) or die(mysql_error());
$row_liste_annee = mysql_fetch_assoc($liste_annee);
$totalRows_liste_annee = mysql_num_rows($liste_annee);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>sélection Année</title>
</head>

<body>
<?php
$model = $_POST['model'];
$_SESSION['model'] = $model ;
?>
<?php
print ("$marque"); 
print ("$model");
?>

<h3>Année</h3> 
<form name="annee" id="annee" method="post" action="resultat.php">
<select name="annee">
<?php
$result = mysql_query("SELECT id_annee, marque FROM annee_tbl");
while (list($id_annee,$annee )= mysql_fetch_row ($result))
 {
 echo ("<OPTION NAME=annee VALUE=$annee >$annee ");
  }
  ?>
</select>
<input type="submit" name="Submit" value="Envoyer" /> 
</form>
</body>
</html>
:shock:

Posté : 05 août 2005, 11:16
par Cyrano
Ton fichier MARQUE devrait commencer lui aussi par session_start(). en ne le mettant pas, tu perds ta session au passage par cette page.

Essaye déjà de corriger ça et reviens en précisant ce qui ne fonctionne pas en pointant au besoin l'endroit du code qui te semble suspect.

Posté : 05 août 2005, 11:23
par hervé
voila, j'ai modifié la page marque, et l'erreur quant je vais à la page model:

"Champ 'marque 1' inconnu dans where clause"

Sur la page model je veut retenir de la table model que les enregistrements correspondant à la marque sélectionner.
merci pour ton aide.[/b]

Posté : 05 août 2005, 11:26
par Cyrano
Tu as inversé les arguments dans ta clause WHERE :
$query_liste_model = "SELECT * FROM model_tbl WHERE marque = '". $marque ."'"; 

Posté : 05 août 2005, 11:30
par hervé
ok, ça va mieux mais rien n'est trier, il me met toute la table model !

Posté : 05 août 2005, 11:59
par hervé
pourtant dans ma table model aprés trie seule 2 éléments devrait appraitre.
:cry:

Posté : 05 août 2005, 12:42
par Cyrano
Si tu exécutes ta requête directement, obtiens-tu le résultat souhaité ? Sinon, c'est au niveau de tes clauses de tri qu'il manque quelque chose.

hervé

Posté : 05 août 2005, 17:47
par hervé
pour simplifier ma requete et faire un test j'ai mis:
$query_liste_model = "SELECT * FROM model_tbl WHERE  marque LIKE 'marque 1'";
ça me donne le meme résultat, pourtant cette meme requete marche quant je la teste dans phpmyadmin.
le probleme vient il me semble dedu where qui n'est pas effectué. pourquoi ?
grande question. :?

Posté : 05 août 2005, 17:56
par hervé
j'ai trouvé mon erreur, en déut de la page model il y avait une partie de code en trop, il y avait deux requete sur la page. :oops:

Posté : 05 août 2005, 18:02
par Cyrano
Alors [Résolu] :?:

Posté : 05 août 2005, 19:38
par hevé
presque, mainteant j'ai un soucis avec mes variable de sessions, j'ai 3 pages
et sur ces 3 pages je renseigne " variable de session, mes recheches me conduise vers la construction d'un tableau, suis je sur la bonne voix ?
<?PHP session_start();
$_SESSION['selection'] = array();
$_SESSION['selection']['marque'] = array();
$_SESSION['selection']['model'] = array();
$_SESSION['selection']['annee'] = array();
?>
et dans mes page par ex:
<?php
$model = $_POST['model'];
$select['model'] = '$model';
array_push($_SESSION['selection']['model'],$select['model']); 
?>
:( , je suis là dessus depuis ce matin et je fatigue !!!