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 :

Liste déroulante avec choix par défaut (choix dans BDD)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut Liste déroulante avec choix par défaut (choix dans BDD)
    Bonjour,
    voila j'ai un petit problème assez intéressant, je vais vous prendre mon exemple pour vous expliquer:
    Mon site est sur les prévisions des scores de la coupe du monde 2010,
    je sélectionne un groupe (A-H) puis un pays afin de montrer dans un tableau quels sont les matchs à venir (pour ce pays) pour lesquels les users pourront dianostiquer les matchs (par groupe il y a 4 pays donc 3 matchs par pays).
    Les users auront devant eux un tableau avec les 3 lignes correspondant aux 3 matchs (avec le numéro du match, les 2 équipes, la date, l'horaire et 2 listes déroulantes de 0 à 10 correspondants aux scores qu'ils peuvent enregistrer pour les 2 équipes) et qu'il peuvent modifier.
    Si user écrit respectivement pour les 3 matchs 1-2 4-0 et 0-0 (0-0 car il ne veut pas encore écrire pour le dernier match) ces scores seront stockés dans ma BDD, mais s'il veut plus tard revenir sur un de ces scores imaginons le 3ème match qu'il n'a pas encore rentré ma BDD va rentrer les scores respectifs aux 3 matchs suivant 0-0 0-0 et x-x et se retrouverais avec les scores des 2 premiers matchs effacés.

    Problème : comment faire pour que dans mes listes déroulantes on forcerait le choix de l'user aux pronostics déjà effectués par sa part et qu'il pourrai ainsi changer seulement les valeurs qu'il veut changer (et ainsi UPDATE des scores)

    Je sais que les listes déroulantes se font de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select name="choix">
        <option value="choix1">Choix 1</option>
        <option value="choix2">Choix 2</option>
        <option value="choix3">Choix 3</option>
        <option value="choix4">Choix 4</option>
    </select>
    et pour forcer une valeur c'est ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="choix3" selected="selected">Choix 3</option>

    quelqu'un pourrai t'il m'aider svp, c'est super important et je bulle depuis 2h la dessus
    Merci d'avance
    Gelo91

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    montre nous ce que tu as essayé

  3. #3
    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
    Par défaut
    Bonjour,
    Tu peux t'inspirer de la FAQ en utilisant des variables sessions pour stocker temporairement les valeurs.

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,
    Tu peux t'inspirer de la FAQ en utilisant des variables sessions pour stocker temporairement les valeurs.
    oui bien sur mais dans mon cas, l'utilisateur peut refaire des pronostics plusieurs semaines après...ce qui rend la chose plus complexe...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut
    Si tu utilises ajax pour tes listes déroulantes tu n'aurais plus de problème. Cela actualiserait ta BDD uniquement pour un match.
    Ce n'est pas compliqué à mettre en place d'ailleurs.

  6. #6
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut
    Citation Envoyé par bressan Voir le message
    Si tu utilises ajax pour tes listes déroulantes tu n'aurais plus de problème. Cela actualiserait ta BDD uniquement pour un match.
    Ce n'est pas compliqué à mettre en place d'ailleurs.
    je ne connais rien de tout à ajax :-(
    et puis il faut qu'il puisse s'il a envi d'en modifier jusqu'à trois à la fois...

  7. #7
    Membre averti
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Par défaut
    Alors tout d'abord, si l' user n'a jamais fait de pronostics sur les matchs 'france' (par exemple), nous allons créer dans la bdd des données à '0' (pour pouvoir faire un update)...
    ce qui donne:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?php
     
    // Connection au serveur
    $connect = mysql_connect("localhost", "root", "") or die ('impossible de se connecter : ' . mysql_error());
    // Connection à ma BDD
    $bdd = mysql_select_db("wordpress", $connect) or die ('bdd non connectée : ' . mysql_error());
     
    $login = $_SESSION[login];
    // Pour test
    $login = "gege";
    $idm1 = 2;
    $idm2 = 20;
    $idm3 = 33;
     
    // User à t'il déjà fait des pronostics ?
    $sql1 = "SELECT match_idm, login FROM score
    		 WHERE (match_idm = '$idm1'
    		 OR match_idm = '$idm2'
    		 OR match_idm = '$idm3')
    		 AND login = '$login'";
    $prono_test = mysql_query($sql1, $connect) or die ('impossible de requeter 1 : ' . mysql_error());
    $nbr_pt = mysql_num_rows($prono_test);
     
    // pour tester si sql1 est OK
    echo 'la requete me renvoie : ' . $prono_test;
    echo "\n et le nombre de ligne est : " . $nbr_pt;
     
    // si !$nbr_pt alors créer faux pronostics
    if (!$nbr_pt)
    {
    		$sql2 = "INSERT INTO score VALUES 
    			   ('', '$login', '$idm1',0,0),
    			   ('', '$login', '$idm2',0,0),
    			   ('', '$login', '$idm3',0,0)";
    		$insert_zero = mysql_query($sql2, $connect) or die ('impossible de requeter 2 : ' . mysql_error());
    }
     
    // re-test pour afficher les faux pronostics
    $sql3 = "SELECT match_idm, login, scorea, scoreb FROM score
    		 WHERE (match_idm = '$idm1'
    		 OR match_idm = '$idm2'
    		 OR match_idm = '$idm3')
    		 AND login = '$login'";
    $prono_zero = mysql_query($sql3, $connect) or die ('impossible de requeter 3 : ' . mysql_error());
    $nbr_pz = mysql_num_rows($prono_zero);
     
    // afficher tableau de faux pronostics pour test
    if ($nbr_pz)
    {
        // début du tableau
        echo '<table bgcolor="#000000">'."\n";
    	echo '<tr>';
    	echo '<td bgcolor="#669999"><b><u>Match n°</u></b></td>';
    	echo '<td bgcolor="#669999"><b><u>Score</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Score</u></b></td>';
        echo '</tr>'."\n";
     
        // lecture et affichage des résultats sur 3 colonnes, 1 résultat par ligne. 
    	while($insert_zero_tab = mysql_fetch_array($prono_zero))  
    	{
    		echo '<tr>';
    		echo '<td bgcolor="#CCCCCC">'.$insert_zero_tab['match_idm'].'</td>';
            echo '<td bgcolor="#CCCCCC">'.$insert_zero_tab['scorea'].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$insert_zero_tab['scoreb'].'</td>';
    	}
    }
    ?>
    et donc en image, ça donne ceci :
    http://picasaweb.google.fr/glorceau2...81728231096786

    ensuite nous allons lui demander de saisir les scores qu'il prévisualise :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php
    // Connection au serveur
    $connect = mysql_connect("localhost", "root", "") or die ('impossible de se connecter : ' . mysql_error());
    // Connection à ma BDD
    $bdd = mysql_select_db("wordpress", $connect) or die ('bdd non connectée : ' . mysql_error());
     
    // requête SQL qui compte le nombre total d'enregistrements dans la table et qui
    // récupère tous les enregistrements
    $sql =   "SELECT idm, date, horaire, equipea, equipeb, groupe, scorea, scoreb
    		  FROM matchs
    		  WHERE equipea = 'france'
    		  OR equipeb = 'france'";
    $result = mysql_query($sql,$connect) or die ('sql error : '.mysql_error() );
    $nbr = mysql_num_rows($result);
    ?>
    <html>
    <body>
    <FORM method=post action="deux.php">
    <?php
    // si on a récupéré un résultat on l'affiche.
    $i = 1;
    if($nbr)
     { 
        // début du tableau
        echo '<table bgcolor="#FFFFFF">'."\n";
    	echo '<tr>';
    	echo '<td bgcolor="#669999"><b><u>Match n°</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Equipe 1</u></b></td>';
    	echo '<td bgcolor="#669999"><b><u>Score</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Equipe 2</u></b></td>';
    	echo '<td bgcolor="#669999"><b><u>Score</u></b></td>';
    	echo '<td bgcolor="#669999"><b><u>Date</u></b></td>';
    	echo '<td bgcolor="#669999"><b><u>Horaire</u></b></td>';
    	echo '</tr>'."\n";
        // lecture et affichage des résultats sur 7 colonnes, 1 résultat par ligne. 
       while($match = mysql_fetch_array($result))  
    	{
    		echo '<tr>';
    		echo '<td bgcolor="#CCCCCC">'.$match['idm'].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$match['equipea'].'</td>';
    		echo "<td bgcolor=\"#CCCCCC\">
    				<SELECT name=\"".'scorea' . $i."\">
    				<OPTION VALUE=\"0\">0</OPTION>
    				<OPTION VALUE=\"1\">1</OPTION>
    				<OPTION VALUE=\"2\">2</OPTION>
    				<OPTION VALUE=\"3\">3</OPTION>
    				<OPTION VALUE=\"4\">4</OPTION>
    				<OPTION VALUE=\"5\">5</OPTION>
    				<OPTION VALUE=\"6\">6</OPTION>
    				<OPTION VALUE=\"7\">7</OPTION>
    				<OPTION VALUE=\"8\">8</OPTION>
    				<OPTION VALUE=\"9\">9</OPTION>
    				<OPTION VALUE=\"10\">10</OPTION>
    				</SELECT>";
            echo '<td bgcolor="#CCCCCC">'.$match['equipeb'].'</td>';
    		echo "<td bgcolor=\"#CCCCCC\">
    				<SELECT name=\"".'scoreb' . $i."\">	
    				<OPTION VALUE=\"0\">0</OPTION>
    				<OPTION VALUE=\"1\">1</OPTION>
    				<OPTION VALUE=\"2\">2</OPTION>
    				<OPTION VALUE=\"3\">3</OPTION>
    				<OPTION VALUE=\"4\">4</OPTION>
    				<OPTION VALUE=\"5\">5</OPTION>
    				<OPTION VALUE=\"6\">6</OPTION>
    				<OPTION VALUE=\"7\">7</OPTION>
    				<OPTION VALUE=\"8\">8</OPTION>
    				<OPTION VALUE=\"9\">9</OPTION>
    				<OPTION VALUE=\"10\">10</OPTION>
    				</SELECT>";
            echo '<td bgcolor="#CCCCCC">'.$match['date'].'</td>';
    		echo '<td bgcolor="#CCCCCC">'.$match['horaire'].'</td>';
    		${'idm' . $i} = $match['idm'];		// code confirmé
    		$i++;
     
    	}
    }	
     
    else 
    {
    	echo 'Pas d\'enregistrements dans cette table...';
    }
    ?>
    <input type="hidden" name="idm1" value="<?php echo $idm1; ?>">
    <input type="hidden" name="idm2" value="<?php echo $idm2; ?>">
    <input type="hidden" name="idm3" value="<?php echo $idm3; ?>">
    <?php
    echo "<TR>
    	  <TD COLSPAN=2>
    	  <INPUT type=\"submit\" value=\"Envoyer\">
    	  <input type=\"reset\" value=\"Recommencer\" />
    	  </TD>
    	  </TR>";
     
    ?>
     
    </TABLE>
    </FORM>
    ce qui donne cette fois ci :
    http://picasaweb.google.fr/lh/photo/...eat=directlink


    j'ai mis des valeurs afin de mieux vous expliquer...
    exemple Uruguay-France (3-1) et France-Mexique (2-3) et on laisse la dernière ligne car l'user voudra faire cette prévision plus tard...
    dans ma bdd nous avons donc ceci qui viens de s'enregistrer :
    http://picasaweb.google.fr/glorceau2...83420463331474

    mais admettons que l'user veut remplir (un autre jour) seulement le 3ème match (France-Afrique du Sud) et bien on va 'update' la bdd mais cette fois ci il n'aura rentré des données que dans la 3ème ligne et les 2 premières seront à 0-0, ce qui effacera ces dernières dans la bdd.

    J'aimerais donc forcer le choix des prévisions de matchs déjà faite par l'user afin qu'il puisse d'une les modifier s'il le souhaite mais également ne pas y toucher et dans ce cas là, les données seront les mêmes donc 'update' nickel...

    est ce que vous comprenez ce que je veux..?
    c'est un peu tiré par les cheveux mais je pense que ça doit être totalement possible, et je ne vois pas du tout comment faire...
    (voir 1er post pour la syntaxe)
    help me, car c'est un projet qui doit être terminé dans pas si longtemps et on me rajoute des conditions jours après jours et au lieu d'avancer je recule...

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

Discussions similaires

  1. [AC-2007] Liste déroulante: valeur sélectionnée par défaut
    Par Shinoda00 dans le forum IHM
    Réponses: 1
    Dernier message: 20/01/2010, 10h44
  2. [AC-2003] liste déroulante et valeur par défaut
    Par frexville dans le forum IHM
    Réponses: 3
    Dernier message: 10/09/2009, 11h44
  3. Réponses: 6
    Dernier message: 24/08/2006, 14h56
  4. Liste déroulante sans valeur par défaut ?
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/02/2005, 16h59

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