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 :

valeur par defaut lue dans base [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut valeur par defaut lue dans base
    Bonjour a tous!

    Je vous contacte car je bloque sur quelque la creation d'une liste deroulante et ca commence a me rendre fou!!!!

    Je m'explique :

    J'ai un formulaire avec une liste deroulante qui lit les données sur ma base mysql. L'objectif du formulaire est de pouvoir mettre a jour des informations. La liste deroulante doit donc afficher par defaut la valeur en cours pour l'identifiant choisi.

    Pas de pb pour afficher les valeurs contenues dans ma table, mais des que j'essaye de sélectionner par defaut la valeur, soit ca ne fonctionne pas (si j'affiche le code source de la page je vois que tout est <option selected>, soit il affiche une liste vide. Je vous met le dernier code que j'ai essayé (il affiche une liste vide) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    echo '      <select name="type_offre">';
    $preselect=mysql_query('SELECT type_offre.ID_type_offre, type_offre.Type_offre FROM type_offre,poles WHERE poles.Type_offre_ID = type_offre.ID_type_offre  AND poles.ID_pole = 3') or die ("requète non executé");
    $liste='SELECT Type_offre FROM type_offre';
    $resultat = mysql_query($liste) or die('Erreur SQL !<br />'.$liste.'<br />'.mysql_error());  
                            foreach($resultat as $untype) {
                                      if ($untype == $preselect['Type_offre']) {
                            		echo "<option value=".$preselect['Type_offre']." SELECTED>".$preselect['Type_offre']."</option>";
                            	  } else {
                            		echo "<option value=".$untype.">".$untype."</option>";
                            	  }
                            }
          echo '        </select>';
    J'ai passé pas mal de temps sur les forums mais j'ai rien trouvé encore qui fonctionnait. AU SECOURS!

    Je suis tout frais debutant alors j'espere que vous ne m'en voudrez pas pour les enormites!

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    essaie avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="'.$preselect['Type_offre'].'" selected="selected" >'.$preselect['Type_offre'].'</option>';

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Salut; merci pour la rapidite de la reponse!

    J'ai essayé ta modif mais ca ne change pas, la liste n'affiche toujours rien. Ce que je ne comprends pas c'est que mes requetes fonctionnent bien independamment (si je fais un fichier avec echo par exemple). Ma synthaxe du foreach est peut etre mauvaise?

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Effectivement, tu fais une requête mais tu n'en récupères pas les résultats !
    il faut que tu utilises mysql_fetch_assoc() après ton mysql_query()

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    J'ai modifié mon code en fonction de ce que vous m'avez dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    echo '      <select name="type_offre">';
    $preselect=mysql_query('SELECT type_offre.ID_type_offre, type_offre.Type_offre FROM type_offre,poles WHERE poles.Type_offre_ID = type_offre.ID_type_offre  AND poles.ID_pole = 3') or die ("requète non executé");
    $liste='SELECT Type_offre FROM type_offre';
    $resultat = mysql_query($liste) or die('Erreur SQL !<br />'.$liste.'<br />'.mysql_error());
    while ($query = mysql_fetch_array($resultat))
    { 
        if ($query['Type_offre'] == $preselect['Type_offre'])
        {
        echo '<option value="'.$preselect['Type_offre'].'" selected="selected" >'.$preselect['Type_offre'].'</option>';
        }
        else
        {
        echo "<option value=".$query['Type_offre'].">".$query['Type_offre']."</option>";
        }
    }
    echo '        </select>';
    Du coup maintenant j'ai bien ma liste qui s'affiche correctement, mais il ne me preselectionne toujours rien...Si je regarde le code source html renvoyé, il y a par contre une evolution puisque il n'y a plus de selected="selected" dans aucune des options.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    C'est que tu ne récupères pas encore le résultat du premier requête $preselect=mysql_query...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Exact! Je viens de voir ca aussi. Ca fait trois jours que j'ai la tete dedans et je dois avouer que je suis pas trop abitué...Du coup j'ai reessaye en le rajoutant et ca marche!!!!!

    Je le balance ici pour les prochains bien que je ne pense pas que ce code soit des plus propres!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    echo '      <select name="type_offre">';
    $liste='SELECT Type_offre FROM type_offre';
    $resultat = mysql_query($liste) or die('Erreur SQL !<br />'.$liste.'<br />'.mysql_error());
    while ($query = mysql_fetch_array($resultat))
    { 
        $preselect=mysql_query('SELECT type_offre.ID_type_offre, type_offre.Type_offre FROM type_offre,poles WHERE poles.Type_offre_ID = type_offre.ID_type_offre  AND poles.ID_pole = 3') or die ("requète non executé");
        while ($preselecttab = mysql_fetch_array($preselect)){
            if ($query['Type_offre'] == $preselecttab['Type_offre'])
            {
            echo '<option value="'.$preselecttab['Type_offre'].'" selected="selected" >'.$preselecttab['Type_offre'].'</option>';
            }
            else
            {
            echo "<option value=".$query['Type_offre'].">".$query['Type_offre']."</option>";
            }
        }
    }
    echo '        </select>';

    Encore merci pour tout!

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Je pense que le requête:
    $preselect=mysql_query('SELECT type_offre.ID_type_offre, type_offre.Type_offre FROM type_offre,poles WHERE poles.Type_offre_ID = type_offre.ID_type_offre AND poles.ID_pole = 3') or die ("requète non executé");
    ne retourne qu'une seule ligne,
    Si c'est le cas, sort le et la récupération de ses valeurs du boucle while car ça alourdi le temps d'execution (requête dans la base à chaque itération du premier while)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/08/2007, 15h51
  2. Réponses: 6
    Dernier message: 06/09/2006, 14h50
  3. Valeur par defaut dans ALTER TABLE
    Par uskiki85 dans le forum Access
    Réponses: 7
    Dernier message: 19/06/2006, 13h16
  4. [interbase 6]probleme valeur par defaut dans lookupcombobox
    Par macadam314 dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/05/2005, 14h24
  5. Valeur par defaut 'True' dans un champ de type bit
    Par Mouse dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2003, 15h26

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