SQL et PHP créer un Marque Modele

Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
- - Dernière réponse : psyche699
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
- 10 oct. 2013 à 09:37
Bonjour à tous,

J'aimerais créer un Marque Modele.
Je m'explique :
Dans un (1er) menus déroulant, en JavaScript, j'aimerais avoir toutes les marque de voiture ( par exemple )
Puis un 2eme menus déroulant pour les modèle de la voiture sélectionne précédemment ( Dans le 1er menus ).
et ainsi de suite jusqu'à ce qu'il m'affiche un résultat à chercher dans mon site internet.

J'ai commencé mais après quelque jours, et plusieurs Tuto je sèche et je n'arrive plus... Je ne sais même plus comment démarrer ...

Pour les Infos :

J'ai 1 bases de donnée 'All'
Dans cette bases j'ai plusieurs table :
Marque ; Modele ; Type ; Années ; Resultat 1 ; Resultat 2 ; Resultat 3 ; Resultat 4 .... etc ...

La ou je n'arrive pas :

J'affiche toute la colonne 'Marque' sauf que dans cette colonne j'ai plusieurs fois le mots 'Ford'.
Donc dans mon menus déroulant sir mon site internet j'ai aussi plusieurs fois le mots 'Ford' comme plusieurs fois le mot 'Kia' .. etc


1er Question : Comment je peut faire pour en affiché qu'une seul fois chaque marque présent dans ma colonne ? ( Donc enlever les doublon )



2 Question : Je n'arrive pas, par la suite, à affiché le résultât du premier menus déroulant. Exemple :

Menus 1 => Menus 2
Ford => Focus
Fiesta ... etc

Voila les 2 choses ou je bloque.
J'ai créer le code plus de 10x sans aucun résultat concret...

Code PHP 1er version :

Mon Premier Menus ne marche pas car j'ai commencé à créer une boucle pour qu'il vérifie les données afin de faire un trie ... mais sa na pas marcher je l'ai laisser dans le code.. au cas ou... !


$host = 'xxx';
$username = 'xxx';
$password = 'xxx';
$db_name = 'xxx';

mysql_connect($host, $username, $password)or die("cannot connect"); 
mysql_select_db($db_name)or die("cannot select DB");

if($_GET['marque'] && $_GET['modele'] && $_GET['type']){
	
	$query = "SELECT 'Annees' FROM 'All' Where 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$annees = array();

	while($row = mysql_fetch_array($result))
	{
        $annees[] = array(
        'Annees_id' => $row['Annees'],
        );
	}

	echo json_encode($annees);
}
elseif($_GET['marque'] && $_GET['modele']){
	//$query = "SELECT * FROM 'Type' WHERE Modele = ".$_GET['modele'];
	$query = "SELECT 'Type' FROM 'All' WHERE 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$type = array();

	while($row = mysql_fetch_array($result))
	{
        $type[] = array(
        'Type_id' => $row['Type'],
        );
	}

	echo json_encode($type);
}
elseif($_GET['marque']){
	//$query = "SELECT * FROM 'Modele' WHERE Voiture = ".$_GET['marque'];
	$query = "SELECT 'Modele' FROM 'All' WHERE 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$modele = array();

	while($row = mysql_fetch_array($result))
	{
        $modele[] = array(
        'Modele_id' => $row['Modele'],
        );
	}

	echo json_encode($modele);
}
else {

	$query = "SELECT 'Marque' FROM 'All' WHERE 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$Marque = array();

	while($row = mysql_fetch_array($result))
	{
			$marque[] = array(
			'Marques_id' => $row['Marques'],
			);
	}

	echo json_encode($marque);
}
?>


Et Voici mon Code HTML :
<form action="#" id="form">
    <select id="marque">
        <option></option>
    </select><br/>
    <select id="modele" style="display: none;"><option></option></select><br/>
	<select id="type" style="display: none;"><option></option></select><br/>
    <select id="annees" style="display: none;"><option></option></select><br/>
    <input type="submit" value="Filtrer"/>
</form>

<script>

$.ajax({
        url: '/wp-content/themes/xmarket/filtre.php',
        dataType: 'json',
        method: 'get',
        success: function(data) {
            if(data.length > 0) {
                data.forEach(function(elem) {
                    $('#marque').append('<option value="' + elem.ID_id + '">' + elem.Voiture_id + '</option>');
                });
				 $('#marque').show();
            }
        }
    });
$('#marque').on('change', function(e) {
    $.ajax({
        url: '/wp-content/themes/xmarket/filtre.php?marque=' + $(e.currentTarget).val(),
        dataType: 'json',
        method: 'get',
        success: function(data) {
            if(data.length > 0) {
                data.forEach(function(elem) {
                    $('#modele').append('<option value="' + elem.ID_id + '">' + elem.Modele_id + '</option>');
                });
           $('#modele').show();
            }
        }
    });
});

$('#modele').on('change', function(e) {
    $.ajax({
        url: '/wp-content/themes/xmarket/filtre.php?marque=' + $("#marque").val() + '&modele=' + $(e.currentTarget).val(),
        dataType: 'json',
        method: 'get',
        success: function(data) {
            if(data.length > 0) {
                data.forEach(function(elem) {
                    $('#type').append('<option value="' + elem.ID_id + '">' + elem.Type_id + '</option>');
                });
    $('#type').show();
            }
        }
    })
});

$('#type').on('change', function(e) {
    $.ajax({
        url: '/wp-content/themes/xmarket/filtre.php?marque=' + $("#marque").val() + '&modele=' + $("#modele").val() + '&type=' + $(e.currentTarget).val(),
        dataType: 'json',
        method: 'get',
        success: function(data) {
            if(data.length > 0) {
                data.forEach(function(elem) {
                    $('#annees').append('<option value="' + elem.ID_id + '">' + elem.Annees_id + '</option>');
                });
    $('#annees').show();
            }
        }
    })
});
</script>


Bon voila si une ( ou plusieurs )bonne âme veut bien m'aider :)
Je suis entrain d'apprendre le PHP et JavaScript.

Merci d'avance...
Thomas

--
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
14595
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 novembre 2019
137
2
Merci
Bonjour,

Revois la conception de ta base de données :
- Une table avec les marques
- Une table avec les modèles (lien par clé étrangère à la table précédente)

Organise tes données de cette manière (avec un peu de logique en somme) et ensuite, tu verras, ce sera plus simple à gérer.

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 222 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
14595
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 novembre 2019
137
1
Merci
Regardes le mot clé Distinct.
Commenter la réponse de NHenry
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
0
Merci
Bonjour NHenry,

Au début c'est ce que j'ai fait... mais le problème est qu'il y a d'autre personne derrière moi qui va réutiliser cette bases de données et les import/export sont plus compliqué et plus long....
A savoir que les personne qui vont réutilisé cette base de données n'ont quasi pas de connaissance.
Un import excel serait royal.. pour le moment.

En plus j'aimerais peut etre créer une extension Wordpress et autre CMS... Aucun plugin trouver pour Wordpress sur ce sujet......

J'arrive à afficher les marques.
Mais toujours pas de liens entre Marque/Modèle/Type/Années.

Merci NHenry de ta réponse.

--
Commenter la réponse de psyche699
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
0
Merci
Bon,
Avant de tout refaire ( toutes ma bases de donnée ) Y a til moyen de faire ce Marque Modele avec 1 Table de plusieurs champs ?

--
Commenter la réponse de psyche699
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
0
Merci
Merci NHenry,

Mais je rencontre encore plein de probleme de cette facon, donc je revois ma base de données avec plusieurs Table comme tu m'a conseiller :
Marque
Modele
Type
...etc ...

C'est Carrément plus simple...
Mais je n'arrive pas a liées les tables entre elles.

Pour les liens par clé étrangère (étant débutant dans MySQL):

Dans mes Tables Marque | Modele | Type
j'ai une colonne "Voitureid".
Dans Mes Table Type | Annees j'ai une Colonne "Typeid".
Ce qui me permet de les liées. Bien sur Voitureid et Typeid on des valeur ( TEXT) semblable entre chacune des table...
Jusqu'à la je pense avoir bien compris.
Mais quand je créer la "Clé Primaire" et mes "clé étrangère" avec :

AFTER TABLE nomdelatable1 ADD PRIMARY KEY (nomdelacolonne1)

puis

ALTER TABLE nomdelatable2 ADD FOREIGN KEY (nomdelacolonne2) REFERENCES nomdelatable1(nomdelacolone1);

Il ne ce passe rien !! Je fait ça dans PHPMyAdmin/BD/Table => Onglet SQL... ( C'est bien ça ? )


Mais bon, je pense que je suis bon jusqu'à la.
(Dite moi si je me trompe .. Merci )

Mais la ou je ne comprend pas c'est dans mon code.. comment je fait !!
J'ai essayer ceci mais ça ne marche pas pour des menus déroulant ..

Par ailleurs j'ai essayé d'enlever ma boucle IF et ELSE mais sa ne fonctionne plus !! Pourquoi ?

Voici mon code :
mysql_connect($host, $username, $password)or die("cannot connect"); 
mysql_select_db($db_name)or die("cannot select DB");
//echo json_encode(array('modele 1', 'modele 2', 'modele 3'));

if($_GET['marque'] && $_GET['modele'] && $_GET['type']){
	//$query = "SELECT * FROM 'Annees' WHERE Type = ".$_GET['type'];
	$query = "SELECT * FROM 'Annees' Where 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$annees = array();

	while($row = mysql_fetch_array($result))
	{
        $annees[] = array(
        'Annees_id' => $row['Annees'],
		'ID_id' => $row['ID']
        );
	}

	echo json_encode($annees);
}
elseif($_GET['marque'] && $_GET['modele']){
	//$query = "SELECT * FROM 'Type' WHERE Modele = ".$_GET['modele'];
	$query = "SELECT * FROM 'TypeModele' WHERE 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$type = array();

	while($row = mysql_fetch_array($result))
	{
        $type[] = array(
        'Type_id' => $row['Type'],
		'ID_id' => $row['ID']
        );
	}

	echo json_encode($type);
}
elseif($_GET['marque']){
	//$query = "SELECT * FROM 'Modele' WHERE Voiture = ".$_GET['marque'];
	$query = "SELECT Modele.Modele, Type FROM 'Modele' INNER JOIN 'Typemodele' Using (Voitureid)";
	$query = "SELECT * FROM 'Modele' WHERE 1";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$modele = array();

	while($row = mysql_fetch_array($result))
	{
        $modele[] = array(
        'Modele_id' => $row['Modele'],
		'ID_id' => $row['ID']
        );
	}

	echo json_encode($modele);
}
else {

	$query = "SELECT Marque.voiture, Modele FROM 'Marque' INNER JOIN 'Modele' Using (Voitureid)";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$Marque = array();

	while($row = mysql_fetch_array($result))
	{
			$marque[] = array(
			'Voiture_id' => $row['Voiture'],
			'ID_id' => $row['ID']
			);
	}

	echo json_encode($marque);
}
?>


Merci de votre aide.. et des Explications.
Cordialement Thomas
--
Commenter la réponse de psyche699
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
0
Merci
Petite Precision :

J'ai trouvé ceci en fouillant sur le net :

$req = mysql_query('SELECT A.nom_categorie, B.libelle_designation, C. prix_produit
FROM caregorie A
inner join designation B
ON A.id = B.id_categorie
inner join prix C
ON B.id_categorie = C.id_prix
WHERE A.id = '.$categorie);
?>


Mais je n'ai pas bien compris comment je peut l'inséré, enfin OU, surtout...
Puis il ressemble beaucoup a mon bout de code :
$query = "SELECT Marque.voiture, Modele FROM 'Marque' INNER JOIN 'Modele' Using (Voitureid)";


sauf placé autrement !!, enfaite je ne comprend pas ce code fonctionne !!
c'est combiné : $query = "SELECT..." avec $result = mysql_query(...

puis a la fin du code on continue avec le "or die ..." ?
et je continue avec mon "$Marque = array();" c'est ca ?

Donc je remplace mon code :
$query = "SELECT Marque.voiture, Modele FROM 'Marque' INNER JOIN 'Modele' Using (Voitureid)";
	$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
	$Marque = array();


Par :
$query = mysql_query(SELECT Marque.voiture, Modele.modele, TypeModele.Type FROM Marque INNER JOIN Modele
ON Voiture.voitureid = Modele.Voitureid
INNER JOIN TypeModele
ON Modele.Voitureid = TypeModele.Voitureid
WHERE Marque.Voitureid = '.$Marque'); 
Et la je continue mon code normalement ?

$query = mysql_query(SELECT Marque.voiture, Modele.modele, TypeModele.Type FROM Marque INNER JOIN Modele
ON Voiture.voitureid = Modele.Voitureid
INNER JOIN TypeModele
ON Modele.Voitureid = TypeModele.Voitureid
WHERE Marque.Voitureid = '.$Marque');
$Marque = array();

	while($row = mysql_fetch_array($result))
	{
			$marque[] = array(
			'Voiture_id' => $row['Voiture'],
			'ID_id' => $row['ID']
			);
	}

	echo json_encode($marque);
C'est bien ça ?
--
Commenter la réponse de psyche699
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
Commenter la réponse de psyche699
Messages postés
19
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
10 octobre 2013
0
Merci
Merci pour l'entraide ...


--
Commenter la réponse de psyche699