Php: si imbriqué... un casse-tête !

Résolu/Fermé
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 - 29 mars 2011 à 15:00
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 - 30 mars 2011 à 16:35
Bonjour,

Je m'entraîne sur l'Ajax, mais j'en arrive à faire des requêtes complexes (sans sql) pour lesquels j'ai du mal à trouver le raisonnement.

Nous avons un site et plus précisément un formulaire qui permet de trouver des informations sur des voitures d'occasion, par exemple...

L'utilisateur va vouloir filtrer ses recherches en recherchant par marque, par carburant, par date, par prix et par kilométrage...

Je rappelle que je n'ai pas recours à sql...

Comment je peux faire pour afficher un résultat en fonction des informations saisies ou non par le visiteur ?

Exemple:

if ($marque != "") alors fais ça, mais if($prix != "") alors il faut aussi faire ça...


Il existe une façon de simplifier tout ça ???
J'ai essayer en développant et présentant toutes les configurations possibles, mais ça ne marche pas...

Merci d'avance
A voir également:

2 réponses

le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 1 056
29 mars 2011 à 15:06
Salut !

Ben il suffit de faire, comme le dit le titre, des if imbriques :

<code>If () {
// code
if () {
// autre code
}
}
<code>
1
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 32
29 mars 2011 à 15:27
J'ai bien essayé, mais ça ne fonctionne pas...

si ($_GET['marque']==$marque && $_GET['prix']<=$prix && $_GET['carburant']==$carburant) {
faire ça...
}
si ($_GET['marque']==$marque && $_GET['prix']<=$prix ) {
faire ça...
}
si ($_GET['marque']==$marque && $_GET['carburant']==$carburant) {
faire ça...
}
si ($_GET['prix']<=$prix && $_GET['carburant']==$carburant) {
faire ça...
}
si ($_GET['prix']<=$prix) {
faire ça...
}
si ($_GET['carburant']==$carburant) {
faire ça...
}
si ($_GET['marque']==$marque) {
faire ça...
}


Bref, comme ça mais le croisement ne marche pas...
0
magicshark Messages postés 399 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 6 mai 2014 13
29 mars 2011 à 19:06
comme ça le probleme c'est que si tu rentre dans e premier SI tu rentre aussi dans tout les autres par contre si tu fais avec des sinon si une fois rentrer dans le premier si qui fonctionne tu ne rentrera pas dans les autre
<?Php
if ($_GET['marque']==$marque && $_GET['prix']<=$prix && $_GET['carburant']==$carburant) {
//faire ça...
}
elseif ($_GET['marque']==$marque && $_GET['prix']<=$prix ) {
//faire ça...
}
elseif ($_GET['marque']==$marque && $_GET['carburant']==$carburant) {
//faire ça...
}
elseif ($_GET['prix']<=$prix && $_GET['carburant']==$carburant) {
//faire ça...
}
elseif ($_GET['prix']<=$prix) {
//faire ça...
}
elseif ($_GET['carburant']==$carburant) {
//faire ça...
}
elseif ($_GET['marque']==$marque) {
//faire ça...
}
?>
0
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 32
30 mars 2011 à 09:36
C'est un peu ce que je voulais dire, mais j'imaginais que je pouvais faire une fonction qui ferait toutes les comparaisons nécessaires, histoire de ne pas en oublier une... Sinon t'es bon pour chercher un moment celle qui manque !
0
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 1 056
30 mars 2011 à 09:57
Je comprend pas : là tu fais sois l'un soit l'autre, y'a aucune imbrication ?

Et si tu fais un switch() sans utiliser de "break", ça marche pas ?
0
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 32
30 mars 2011 à 16:35
J'ai réussi à le faire, mais j'aurais aimer trouver une fonction php...

C'est pour entraîner la logique et ma compréhension du php...
0
Oui enfin Ajax veut dire XML aussi, et ton xml c'est une métadonnée donc il faut que ailles la chercher sur une base dans ton cas... ou alors tu as un gros fichier texte avec plein d'informations et tu as une base de données sans le savoir et surtout sans ses avantages comme le sqL...
Bref après si c'est de l'algorithmique quel est le soucis? Le si imbriqué seront lourds mais si le but est d'avoir des critères complexes effectivement les critères conditionnels ne seront pas simple. Sinon il existe d'uatres structures que le
si, sinon et alors. Connait tu le switch qui utilises une liste?

Pour simplifier il est certainement possible de hiérarchiser les critères de recherches?
0
Fetide68 Messages postés 738 Date d'inscription dimanche 4 janvier 2009 Statut Membre Dernière intervention 26 avril 2024 32
Modifié par Fetide68 le 29/03/2011 à 15:22
C'est exactement ça, j'utilise XML avec Simple XML et j'ai besoin de faire ces formules complexes... Je voulais juste savoir si je ne pouvais pas faire une classe ou une fonction qui pourrait m'aider à m'en sortir (c'est pas de la flême), car la c'est vraiment casse-tête...
0