Listes déroulantes liées et en plus...

lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004 - 6 janv. 2004 à 01:13
cs_waouh Messages postés 1 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 7 avril 2004 - 7 avril 2004 à 22:18
Je cherche des personnes qui pourrai m'aider pour faire un script php/mysql. 2 listes déroulante lié avec à la sélection d'un item > affichage d'une images et d'une description.
Comme celui-ci http://www.lsteam.com/test/test.html mais avec une description en plus et le tout venant d'une base MYSQL. Merci.

La page c'est juste pour vous montrer le fonctionnement. (Merci au webmaster qui l'a développé quand même)

14 réponses

floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
6 janv. 2004 à 01:24
le code est bon à part une petite erreur qui fait toute la différence :

$res = mysql_query( 'SELECT * FROM marque ORDER BY nom' );
while ($row = mysql_fetch_array( $res ))
{
echo ' oMarque = new oMarque( ' . $row['id'] . ', ' . $row['nom'] . ', ' . $row['image'] . ' );\\n';
$res2 mysql_query( 'SELECT * FROM modele WHERE marque ' . $row['id'] );
while ($row2 = mysql_fetch_array( $res2))

echo ' oMarque.AjouterModele( ' . $row2['id'] . ', ' . $row2['nom'] . ', ' . $row2['image'] . ' );\\n';
echo ' oMarques.push( oMarque );\\n\\n' );
}
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
6 janv. 2004 à 11:43
Même avec le changement le script ne fonctionne pas mais de toute façon il n'est pas au point. En plus des fonction qu'il a en ce moment il faudrait qu'il puisse afficher une description du modèle choisis ainsi qu'une image qui pourrait s'agrandir en cliquant dessus. Qq1 peut m'aider SVP?
0
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
6 janv. 2004 à 11:56
pour moi le script est bon !!!
il faut juste adapter les tables et les requetes !

donne nous la stucture des tables et le script complet et on corrigera les petits détails
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
6 janv. 2004 à 12:51
<SCRIPT language=javascript>
var oMarques = new Array();

function Marque( id, nom, image )
{
this.id = id;
this.nom = nom;
this.image = image;
this.modeles = new Array();
}

Marque.prototype['Identificateur'] = function() { return this.id; }
Marque.prototype['Nom'] = function() { return this.nom; }
Marque.prototype['Image'] = function() { return this.image; }
Marque.prototype['Modeles'] = function() { return this.modeles; }
Marque.prototype['AjouterModele'] = function( id, nom, image ) { this.modeles.push( new Modele(id,nom,image) ); }

function Modele( id, nom, image )
{
this.id = id;
this.nom = nom;
this.image = image;
}

Modele.prototype['Identificateur'] = function() { return this.id; }
Modele.prototype['Nom'] = function() { return this.nom; }
Modele.prototype['Image'] = function() { return this.image; }

function onSelect_Marque()
{
var id = oListeMarque.options[oListeMarque.selectedIndex].value;
var count, count2;

while (oListeModele.options.length > 0)
oListeModele.removeChild( oListeModele.options[0] );

for (count in oMarques)
if (oMarques[count].Identificateur() == id)
{
for (count2 in oMarques[count].Modeles())
{
var oModele = oMarques[count].Modeles()[count2];
var oOption = document.createElement( 'option' );

oOption.value = oModele.Identificateur();
oOption.text = oModele.Nom();

oListeModele.add( oOption );
}

oListeModele.selectedIndex = 0;
oImageMarque.src = oMarques[count].Image();
onSelect_Modele();

return;
}
}

function onSelect_Modele()
{
var idMarque = oListeMarque.options[oListeMarque.selectedIndex].value;
var idModele = oListeModele.options[oListeModele.selectedIndex].value;
var count, count2;

for (count in oMarques)
if (oMarques[count].Identificateur() == idMarque)
for (count2 in oMarques[count].Modeles())
if (oMarques[count].Modeles()[count2].Identificateur() == idModele)
{
var oModele = oMarques[count].Modeles()[count2];
oImageModele.src = oModele.Image();
return;
}
}

function onLoad()
{
var oMarque;
var count;

$db = mysql_connect(localhost, root);
mysql_select_db(lsteam, $db);

$res = mysql_query( 'SELECT * FROM marque ORDER BY nom' );
while ($row = mysql_fetch_array( $res ))
{
echo ' oMarque = new oMarque( ' . $row['id'] . ', ' . $row['nom'] . ', ' . $row['image'] . ' );\\\\n';
$res2 mysql_query( 'SELECT * FROM modele WHERE marque ' . $row['id'] );
while ($row2 = mysql_fetch_array( $res2))

echo ' oMarque.AjouterModele( ' . $row2['id'] . ', ' . $row2['nom'] . ', ' . $row2['image'] . ' );\\\\n';
echo ' oMarques.push( oMarque );\\\\n\\\\n' );

for (count in oMarques)
{
var oOption = document.createElement( 'option' );
oOption.value = oMarques[count].Identificateur();
oOption.text = oMarques[count].Nom();
oListeMarque.add( oOption );
}

onSelect_Marque();
}

</SCRIPT>
---------------------------------------------------------------------
<SELECT id=oListeMarque
style="FONT-SIZE: 10px; WIDTH: 200px; FONT-FAMILY: Verdana"
onchange=onSelect_Marque()></SELECT>

<SELECT id=oListeModele
style="FONT-SIZE: 10px; WIDTH: 200px; FONT-FAMILY: Verdana"
onchange=onSelect_Modele()></SELECT>

---------------------------------------------------------------------
Ma base de donnée s'appelle "lsteam" et mes deux table sont :

CREATE TABLE marque(
id INT(11) NOT NULL AUTO_INCREMENT,
nom VARCHAR(255) NOT NULL,
image VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
)

CREATE TABLE modele(
id INT(11) NOT NULL AUTO_INCREMENT,
nom VARCHAR(255) NOT NULL,
image VARCHAR(255) NOT NULL,
marque INT(11) NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(marque) REFERENCES marque(id)
)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
6 janv. 2004 à 12:55
Il faudrait d'une descripttion s'affiche à la sélection du modèle, et il faufrait que l'iage du modèle soit cliquable pour agrandir cette même image. Merci de votre aide.
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
6 janv. 2004 à 13:05
Re: Il faudrait qu'une description s'affiche à la sélection du modèle, et il faufrait que l'image du modèle soit cliquable pour agrandir cette même image. Merci de votre aide.
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 13:24
Quelqu'un peut m'aider? SVP
0
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
7 janv. 2004 à 13:35
l'erreur venait tout simplement du fait que dans tu faisais oMarque = new oMarque à la place de oMarque = new Marque !!!

je te file quand mon script que j'ai légèrement modifié par rapport au tien!

$db = mysql_connect("localhost", "root", "");
mysql_select_db(lsteam, $db);

$res = mysql_query( 'SELECT * FROM marque ORDER BY nom ASC' );
while ($row = mysql_fetch_array( $res ))
{
echo ' oMarque = new Marque( ' . $row['id'] . ', "' . $row['nom'] . '", "' . $row['image'] . '" );';
$res2 mysql_query( 'SELECT * FROM modele WHERE marque ' . $row['id'] .' order by nom ASC');
while ($row2 = mysql_fetch_array( $res2))

echo ' oMarque.AjouterModele(' . $row2['id'] . ', "' . $row2['nom'] . '", "' . $row2['image'] . '" );';
echo ' oMarques.push( oMarque );' ;
}
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 13:46
Je suis vraiment désolé mais le script ne fonctionne toujours pas. Si quelqu'un à le temps de regarder de plus près et aussi de me dire comment fair epour rajouter une description du modèle ça serait super sympa. Ca fait une semaine que je suis dessus et je n'avance pas. Merci d'avance @+
0
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
7 janv. 2004 à 15:19
tu rigoles !!! ca marche chez moi !!!
n'oublie de faire la page html autour parce que le script tout seul ne marche pas !

et surtout de ne pas oublier le !!!

je te file le script complet avec les bases de données :

<html>
<head>
<title>Exemple pour lsteamgeo</title>

<SCRIPT language="javascript">
var oMarques = new Array();

function Marque( id, nom, image )
{
this.id = id;
this.nom = nom;
this.image = image;
this.modeles = new Array();
}

Marque.prototype['Identificateur'] = function() { return this.id; }
Marque.prototype['Nom'] = function() { return this.nom; }
Marque.prototype['Image'] = function() { return this.image; }
Marque.prototype['Modeles'] = function() { return this.modeles; }
Marque.prototype['AjouterModele'] = function( id, nom, image ) { this.modeles.push( new Modele(id,nom,image) ); }

function Modele( id, nom, image )
{
this.id = id;
this.nom = nom;
this.image = image;
}

Modele.prototype['Identificateur'] = function() { return this.id; }
Modele.prototype['Nom'] = function() { return this.nom; }
Modele.prototype['Image'] = function() { return this.image; }

function onSelect_Marque()
{
var id = oListeMarque.options[oListeMarque.selectedIndex].value;
var count, count2;

while (oListeModele.options.length > 0)
oListeModele.removeChild( oListeModele.options[0] );

for (count in oMarques)
if (oMarques[count].Identificateur() == id)
{
for (count2 in oMarques[count].Modeles())
{
var oModele = oMarques[count].Modeles()[count2];
var oOption = document.createElement( 'option' );

oOption.value = oModele.Identificateur();
oOption.text = oModele.Nom();

oListeModele.add( oOption );
}

oListeModele.selectedIndex = 0;
oImageMarque.src = oMarques[count].Image();
onSelect_Modele();

return;
}
}

function onSelect_Modele()
{
var idMarque = oListeMarque.options[oListeMarque.selectedIndex].value;
var idModele = oListeModele.options[oListeModele.selectedIndex].value;
var count, count2;

for (count in oMarques)
if (oMarques[count].Identificateur() == idMarque)
for (count2 in oMarques[count].Modeles())
if (oMarques[count].Modeles()[count2].Identificateur() == idModele)
{
var oModele = oMarques[count].Modeles()[count2];
oImageModele.src = oModele.Image();
return;
}
}

function onLoad()
{
var oMarque;
var count;

<?

$db = mysql_connect("localhost", "root", "Hap4LsLMng");
mysql_select_db(lsteam, $db);

$res = mysql_query( 'SELECT * FROM marque ORDER BY nom ASC' );
while ($row = mysql_fetch_array( $res ))
{
echo ' oMarque = new Marque( ' . $row['id'] . ', "' . $row['nom'] . '", "' . $row['image'] . '" );';
$res2 mysql_query( 'SELECT * FROM modele WHERE marque ' . $row['id'] .' order by nom ASC');
while ($row2 = mysql_fetch_array( $res2))

echo ' oMarque.AjouterModele(' . $row2['id'] . ', "' . $row2['nom'] . '", "' . $row2['image'] . '" );';
echo ' oMarques.push( oMarque );' ;
}

?>

for (count in oMarques)
{
var oOption = document.createElement( 'option' );
oOption.value = oMarques[count].Identificateur();
oOption.text = oMarques[count].Nom();
oListeMarque.add( oOption );
}

onSelect_Marque();
}

</SCRIPT>
</head>

Marque
: <SELECT id=oListeMarque
style="FONT-SIZE: 10px; WIDTH: 200px; FONT-FAMILY: Verdana"
onchange=onSelect_Marque()></SELECT>

Modèle
: <SELECT id=oListeModele
style="FONT-SIZE: 10px; WIDTH: 200px; FONT-FAMILY: Verdana"
onchange=onSelect_Modele()></SELECT>

</HTML>

bdd :

Base de données lsteam sur le serveur localhost
# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# Serveur: localhost
# Généré le : Mercredi 07 Janvier 2004 à 15:17
# Version du serveur: 4.0.15
# Version de PHP: 4.3.3
#
# Base de données: `lsteam`
#

# --------------------------------------------------------

#
# Structure de la table `marque`
#

CREATE TABLE `marque` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL default '',
`image` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

#
# Contenu de la table `marque`
#

INSERT INTO `marque` VALUES (1, 'toto', 'img/titi.jpg');
INSERT INTO `marque` VALUES (2, 'prout', 'img/tata.html');

# --------------------------------------------------------

#
# Structure de la table `modele`
#

CREATE TABLE `modele` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL default '',
`image` varchar(255) NOT NULL default '',
`marque` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM;

#
# Contenu de la table `modele`
#

INSERT INTO `modele` VALUES (1, 'tutu', 'fdsgf', 1);
INSERT INTO `modele` VALUES (2, 'dfgsfdgsf', 'dfsgdfgdf', 2);
INSERT INTO `modele` VALUES (3, 'aaaaaaa', 'bbbbb', 1);
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 18:28
A oui désolé ça fonctionne. Merci beaucoup!! et sans vouloir abuser est ce qu'il est possible d'afficher une description en même temps que l'image du modèle?Et aussi de rendre l'image (modèle) cliquable pour l'agrandir. Ca doit pas être grand chose à faire mais je lutte!!!!!mais je lutte!!!!. +
0
lsteamgeo Messages postés 9 Date d'inscription mercredi 10 décembre 2003 Statut Membre Dernière intervention 7 janvier 2004
7 janv. 2004 à 18:29
A oui désolé ça fonctionne. Merci beaucoup!! et sans vouloir abuser est ce qu'il est possible d'afficher une description en même temps que l'image du modèle?Et aussi de rendre l'image (modèle) cliquable pour l'agrandir. Ca doit pas être grand chose à faire mais je lutte!!!!!mais je lutte!!!!. +
0
floflotz Messages postés 240 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 6 janvier 2006
11 janv. 2004 à 18:23
bien sur que c'est possible !

pour rendre les images cliquables, il suffit de faire une lien et de l'envoyer sur une page qui affiche l'image en grande taille !

et pour afficher une description c'est pareil ! tu crées une div et lorsque tu modifies ton select, tu modifies le texte de ta div avec dic.htmltext ou un truc dans le genre !

ca t'arrive pas, dis le ! on te filera un coup de pouce :)
0
cs_waouh Messages postés 1 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 7 avril 2004
7 avril 2004 à 22:18
floflotz, j'ai reproduit ce code avec la base à l'identique et ça ne marche pas, on dirait qu'il ne veut pas ce connecter à la base, pourtant je lui indique les bons paramètres.
0
Rejoignez-nous