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

PHP & Base de données Discussion :

Fonction substr dans combobox [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Par défaut Fonction substr dans combobox
    Bonjour,

    Je cherche à afficher des département dans un combobox.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //Affichage du formulaire
    echo "<form action='ClientAffiche_Afficher.php' method='post'>\n";
    echo "<div>\n";
    echo "<select size='1' name='dep'>\n";
    foreach ($tAdresse as $tLigne){
      echo "<option value=\"" . $tLigne["id"] . "\">" . $tLigne["Cp"] ." </option>\n";
      }
    echo "</select>\n";
    echo "</div>\n";
    echo "<p><input type='submit' value='Envoyer' name='envoyer' /></p>\n";
    echo "</form>\n";
    //Fin du formulaire
    La ligne 6 permet de remplir mon combobox avec les codes postaux de ma table tAdresse.
    Ils s'affichent bien, mais sont sous la forme à 5 chiffres (42300, 69100, 74200...)
    Je les voudrais sous la forme à 2 chiffres (42, 69, 74...)

    Je pense qu'il faut utiliser la fonction substr

    J'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value=\"" . $tLigne["id"] . "\">" . $tLigne["substr(Cp,1,2)"] ." </option>\n";
    Mais ça ne marche pas, je n'ai pas d'erreur mais mon combobox est vide.

    Quelqu'un aurait il une idée ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ouille... substr() est une fonction que tu appliques sur $tLigne['Cp']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="' . $tLigne["id"] . '">' . substr($tLigne['Cp'],1,2) .'</option>' . "\n";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Par défaut
    Merci beaucoup ça fonctionne Je n'étais pas très loin en plus.
    Finalement je m'y suis pris autrement, au lieu de sélectionner toute la table tel un barbare pour ensuite la trier, je la trie dès la requête sql.

    J'essaie maintenant de traiter le département sélectionné, mais il reste quelques points sombres

    Je dispose de 2 fichiers php :
    - un pour sélectionner le département (fichier1.php)
    - l'autre fichier sert à afficher les données dans une table en fonction du département (fichier2.php)

    C'est pour récupérer le département sélectionné que j'ai du mal

    Dans fichier1.php, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo "<form action='fichier2.php' method='post'>\n";
    echo "<div>\n";
    echo "<select size='1' name='dept'>\n";
    foreach ($tAdresse as $tLigne){
      echo "<option value=\"" . $tLigne["id"] . "\">" . ($tLigne['substr(Cp,1,2)']) ." </option>\n";
      }
    echo "</select>\n";
    echo "</div>\n";
    echo "<p><input type='submit' value='Envoyer' name='envoyer' /></p>\n";
    echo "</form>\n";
    Et dans fichier2.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extract($_POST);  //C'est censé créer la variable $dept 
    echo $dept;
    echo $_POST['dept'];
    Impossible de récupérer le département dans fichier2.php, ça ne me renvoie rien.

    Sinon j'arrive à afficher ma table selon le département, mais en précisant le département directement dans le code.

    J'ai dû louper quelque chose La variable $dept devrait bien correspondre à la valeur du combobox pourtant ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Regarde la source HTML de ton formulaire pour être sûr que tes "option" aient bien une "value".
    Contrôle ce que renvoit le formulaire sur la deuxieme page : print_r($_POST);Abandonne la méthode extract, elle est mauvaise.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Par défaut
    C'est le prof qui nous a guidé vers la méthode extract, pourquoi est elle mauvaise ?

    Si j'enlève "value" dans la balise <option>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option>" . ($tLigne['substr(Cp,1,2)']) ." </option>\n";
    Le code
    me revoit ceci :

    Array ( [Departement] => 71 [envoyer] => Envoyer )

    J'aimerais récupérer la valeur 71. Si je comprends bien, cela me revoit un tableau à 2 dimensions : [Departement] et [envoyer] ?

    Ça y est, j'arrive à l'afficher avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['Departement'];

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    pourquoi est elle mauvaise ?
    Parce qu'elle créé des variables à partir de données fournies par l'utilisateur.
    Ceci peut permettre d'exploiter une faille dans le code.
    C'est pour cette raison que register_globals est maintenant désactivé dans PHP.
    Tu as toutes les explications :
    http://php.net/manual/fr/security.globals.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. fonction substring dans clause WHERE
    Par cnidaire dans le forum DB2
    Réponses: 1
    Dernier message: 24/11/2011, 10h21
  2. [2005] La fonction Substr() dans SSIS
    Par phenomeno dans le forum SSIS
    Réponses: 3
    Dernier message: 15/04/2011, 10h54
  3. Fonction Substr() dans une colonne "calculé"
    Par lesanglier dans le forum SharePoint
    Réponses: 1
    Dernier message: 20/10/2009, 13h29
  4. Fonction substring non définie dans l'expression
    Par 810mcu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/05/2008, 17h05
  5. Réponses: 3
    Dernier message: 01/06/2006, 19h45

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