IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Attribuer plusieurs valeurs par défaut à une variable


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut [Tableaux] Attribuer plusieurs valeurs par défaut à une variable
    Bonjour,
    Mon problème se pose dans un formulaire
    Précisément dans une balise input pour un code postal
    qui sert à faire une recherche dans une table.
    Je souhaite faire en sorte que la recherche se fasse sur tout les codes postaux quand aucun code postal n'est renseigné.

    Donc ma question est comment faire pour que la variable $CP et pour valeur
    Tous les codes postaux quand celui n'est pas renseigné.

    Je suis pas sur que se soit de cette façon qu'il faut voir les choses sûrement qu'il y a une autre façon de faire pour atteindre l’objectif, j'attend vos propositions.

    Merci a vous.

  2. #2
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 981
    Points
    2 981
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Donc ma question est comment faire pour que la variable $CP et pour valeur
    Tous les codes postaux quand celui n'est pas renseigné.
    Si tu pouvais traduire cette phrase stp

    sinon tu peux utiliser l'attribut value du champ input ca te mettra une valeur apr défaut

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 364
    Points : 253
    Points
    253
    Par défaut
    Moi je ne ferais pas comme ça,

    Si mon champs texte CodePostal est rempli alors je fais une requête avec une condition where sur le code postal sinon je fais une autre requête sans cette condition.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    voila c sa , la question est comment faire pour que la recherche s'effectue partout donc sans prendre en compte la valeur code postal puisqu'il na pas ete renseigner ,

    suis-je obliger de faire une autre requete ?

    toto cherche une renault dans le 75020 ok sa je sais faire
    mais si il n'indique pas de code postal je voudrais lui sortir toutes les renaults quelques soit l'endoit

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 364
    Points : 253
    Points
    253
    Par défaut
    Oui mon idée serait de faire deux requête après je ne sais pas si c'est la bonne solution


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($CodePostal == "") {
       select * from voiture where marque = 'Renault';
    } else {
       select * from voiture where marque = 'Renault' and CP = $CodePostal;
    }
    Bon c'est de l'algo mais c'est juste pour le principe.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    oui merci tazmania effectivement j'y avais pas pensé ,
    je sais pas si c'est une solution parceque j'ai 1 input et 5 select
    de cette ordre donc je peut toujours faire des if , mais j'essai de trouver une autre solution peut etre plus simple .

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Ba alors y'a personne pour mettre sur la voie, parce que avec des if c'est trop complique pour 5 value il faut que je crée 25 requête pour faire face a toutes les configurations.
    Y’a bien une autre solution,
    je représente le problème

    Donc un formulaire de recherche de produit :
    J’ai besoin de sortir les produits Babar
    Et Babar peut être bleu, grand, petit, long, carre, et a un lieu précis
    Quand tous les champs sont renseigner pas de pb, sa se complique
    Quand je veux voir tout les Babar sans restriction.

    Je peut pas faire 6x6 36 requête pour faire en sorte de faire face au 36 recherche demander ?!!!

    Help.

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,
    Tu peux essayer la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $where = array();
     
    if ($champ1) { // si le champ 1 est renseigné
      $where[] = " WHERE champ1='$champ1' "; // on l'ajoute a la requete
    }
    if ($champ2) { // si le champ2 est renseigné
      $where[] = " WHERE champ2='$champ1' "; // on l'ajoute a la requete
    }
    // [etc...]
     
    // on forme la requete
    $requete = "SELECT x,y,z FROM table".implode("AND", $where);
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par Taum
    Salut,
    Tu peux essayer la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $where = array();
     
    if ($champ1) { // si le champ 1 est renseigné
      $where[] = " WHERE champ1='$champ1' "; // on l'ajoute a la requete
    }
    if ($champ2) { // si le champ2 est renseigné
      $where[] = " WHERE champ2='$champ1' "; // on l'ajoute a la requete
    }
    // [etc...]
     
    // on forme la requete
    $requete = "SELECT x,y,z FROM table".implode("AND", $where);
    Bonjour et merci pour ta reponse :
    mais en tant que debutant j'ai encore un peu de mal ,
    voila mon code peut tu me dire ou est l'erreur :j'je l'est pas mis le code dans une balise [CODE] parceque celui-ci se retrouve dans une fenetre avec des scrolls difficile a lire.


    $where = array();

    if ($accident) { // si le champ 1 est renseigné
    $where[] = " WHERE accident='$accident' "; // on l'ajoute a la requete
    }
    if ($vehicule_etat) { // si le champ2 est renseigné
    $where[] = " WHERE vehicule_etat='$vehicule_etat' "; // on l'ajoute a la requete
    }
    if ($type_carro) { // si le champ2 est renseigné
    $where[] = " WHERE type_carro='$type_carro' "; // on l'ajoute a la requete
    }
    if ($carburant) { // si le champ2 est renseigné
    $where[] = " WHERE carburant='$carburant' "; // on l'ajoute a la requete
    }
    if ($transmission) { // si le champ2 est renseigné
    $where[] = " WHERE transmission='$transmission' "; // on l'ajoute a la requete
    }
    if ($couleur_inter) { // si le champ2 est renseigné
    $where[] = " WHERE couleur_inter='$couleur_inter' "; // on l'ajoute a la requete
    }
    if ($couleur_carro) { // si le champ2 est renseigné
    $where[] = " WHERE couleur_carro='$couleur_carro' "; // on l'ajoute a la requete
    }
    if ($pays) { // si le champ2 est renseigné
    $where[] = " WHERE pays='$pays' "; // on l'ajoute a la requete
    }
    if ($cp) { // si le champ2 est renseigné
    $where[] = " WHERE cp='$cp' "; // on l'ajoute a la requete
    }


    $recherche_auto=mysql_query ("select id,id_membre,marque,modele,annee,prix,accident,carburant,kilometrage,
    chevaux,vehicule_etat,transmission,cylindre,couleur_inter,
    type_carro,couleur_carro,pays,cp,description
    from automobile".implode ("and", where

    marque='$marque' and //champs obligatoite
    modele='$modele' and //champs obligatoite
    annee between '$annee_debut' and '$annee_fin' and //champs obligatoite
    prix between '$prix_debut' and '$prix_fin' and //champs obligatoite
    kilometrage between '$kilometrage_debut' and'$kilometrage_fin' and //champs obligatoite
    chevaux between '$chevaux_debut' and'$chevaux_fin' and //champs obligatoite
    cylindre between '$cylindre_debut' and '$cylindre_fin' and //champs obligatoite
    where='$where')");

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Rebonjour,

    En fait il y avait un petit problème dans mon code, la requete généré aurait été :
    SELECT x,y,z, FROM table WHERE champ1='$champ1' AND WHERE champ2='$champ2'
    (le 'where' en gras causant une erreur de syntaxe).

    En revanche l'idée de mettre chaque condition dans un tableau pour ensuite toute les ajouter avec implode() reste correcte. Il faut faire :

    $where = array();

    if ($accident) { // si le champ 1 est renseigné
    $where[] = " accident='$accident' "; // on l'ajoute a la requete
    }
    if ($vehicule_etat) { // si le champ2 est renseigné
    $where[] = " vehicule_etat='$vehicule_etat' "; // on l'ajoute a la requete
    }
    if ($type_carro) { // si le champ2 est renseigné
    $where[] = " type_carro='$type_carro' "; // on l'ajoute a la requete
    }
    if ($carburant) { // si le champ2 est renseigné
    $where[] = " carburant='$carburant' "; // on l'ajoute a la requete
    }
    if ($transmission) { // si le champ2 est renseigné
    $where[] = " transmission='$transmission' "; // on l'ajoute a la requete
    }
    if ($couleur_inter) { // si le champ2 est renseigné
    $where[] = " couleur_inter='$couleur_inter' "; // on l'ajoute a la requete
    }
    if ($couleur_carro) { // si le champ2 est renseigné
    $where[] = " couleur_carro='$couleur_carro' "; // on l'ajoute a la requete
    }
    if ($pays) { // si le champ2 est renseigné
    $where[] = " pays='$pays' "; // on l'ajoute a la requete
    }
    if ($cp) { // si le champ2 est renseigné
    $where[] = " cp='$cp' "; // on l'ajoute a la requete
    }

    // Ici toutes les conditions obligatoires
    $where[] = " marque='$marque' ";
    $where[] = " annee BETWEEN '$annee_debut' AND '$annee_fin' ";
    //etc...


    $recherche_auto=mysql_query ("SELECT id,id_membre,marque,modele,annee,prix,accident,carburant,kilometrage,
    chevaux,vehicule_etat,transmission,cylindre,couleur_inter,
    type_carro,couleur_carro,pays,cp,description
    FROM automobile
    WHERE ".implode("AND", $where);
    Pour que tu comprennes un peu mieux le code, sache que implode() est une fonction qui converti un tableau en une chaine de caractère en mettant tout les éléments du tableau bout à bout et en les séparant par une chaine de caractères (ici "AND"). (cf. manuel PHP)

    Je ne sais pas si tu as des connaissances dans d'autres langages de programmation ou si PHP est le premier langage que tu manies. Si tu as problèmes ou des questions sur le fonctionnement des tableaux ou des fonctions comme implode(), je te conseille de te familiariser aux concepts de base de PHP. Je pense que tu trouveras de très bon tutos sur developpez.com
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    oui et merci de ton aide , je vais edudier les tableaux , oui je demarre et c'est mon premier language .
    je vais faire les tests voir comment sa fonctionne et pk comme sa .

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Merci Taum sa marche , génial , de plus je viens d'apprendre grace a toi comme en partie on peut utilser un tableaux.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Valeurs par défaut des variables ?
    Par Jimalexp dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 20/12/2008, 03h03
  2. [5.1.9] Valeur par défaut à une invite
    Par michaelknight00 dans le forum Deski
    Réponses: 2
    Dernier message: 04/11/2008, 09h08
  3. Réponses: 1
    Dernier message: 12/05/2008, 18h39
  4. Valeur par défaut à une fonction
    Par ploxien dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2007, 09h06
  5. Réponses: 2
    Dernier message: 15/03/2006, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo