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 :

Requête SQL + Boutons génériques [Débutant(e)]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut Requête SQL + Boutons génériques
    Bonjour,

    je suis sur un projet de pronostics

    Sur ma page, j'arrive à récupérer ma liste de matchs (table matchs) et à générer des listes près de chaque équipe (score 0 à 10).
    Chaque liste est identifiée par le user, l'id du match et le score de chaque équipe. Pour ça ça va à peu près.

    J'ai aussi mis un bouton pour valider le score et ainsi transmettre à la base de données mais je n'y arrive pas.

    Ci dessous le code:*

    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
    <?php
    include('config.php')
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
            <title>Espace membre</title>
        </head>
        <body>
        	<div class="header">
            	<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
    	    </div>
            <div class="content">
    <?php
    //On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
    ?>
    Bonjour<?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>,<br />
    Bienvenue sur notre site.<br />
    Vous pouvez <a href="users.php">voir la liste des utilisateurs</a>.<br /><br/>
    <?php
    //Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter
    if(isset($_SESSION['username']))
    {
    ?>
    <a href="edit_infos.php">Modifier mes informations personnelles</a><br />
    <a href="connexion.php">Se d&eacute;connecter</a><br/><br><br/>
    <?php 
    $sql = "SELECT id,eq1,eq2,date, DATE_FORMAT(date,'%d/%m/%Y %H:%i') AS date2 FROM matchs";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    $user= $_SESSION['username'];
    echo '<form action="index.php" method="post">';
    while($data = mysql_fetch_assoc($req))
        {
    	// on affiche les informations de l'enregistrement en cours
    	echo ''.$data['date2'].' '; 
    	echo ''.$data['eq1'].' ';
     
    	// Variable qui ajoutera l'attribut selected de la liste déroulante
    	$selected = '';
    	$selected2 = '';
     
    	// Parcours du tableau
    	echo '<select name="'.$user.'.'.$data['id'].'.1">',"\n";
    	for($i=0; $i<=10; $i++)
    	{
    	// Affichage de la ligne
    	echo "\t",'<option value="', $i ,'"', $selected ,'>', $i ,'</option>',"\n";
    	// Remise à zéro de $selected
    	$selected='';
    	}
    	echo '<select name="'.$user.'.'.$data['id'].'.1">',"\n";
     
    	echo ''.$data['eq2'].' ';
    	echo '<select name="'.$user.'.'.$data['id'].'.2">',"\n";
    	for($j=0; $j<=10; $j++)
    	{
    	// Affichage de la ligne
    	echo "\t",'<option value="', $j ,'"', $selected2 ,'>', $j ,'</option>',"\n";
    	// Remise à zéro de $selected
    	$selected2='';
    	}
    	echo '<select name="'.$user.'.'.$data['id'].'">',"\n";
    	echo '<input name="btn_'.$user.'.'.$data['id'].'" type="submit" value="OK"">';
     
    	if (isset ($_POST['btn_'.$user.'.'.$data['id'].'']))
    	{
    		$req2 = mysql_query("INSERT INTO `matchs` (`id`,`eq1`, `eq2`, `groupe`, `date`,`score_eq1`,`score_eq2`) VALUES ('1','POLOGNE', 'GRECE','GROUPE A', '2012-06-08 18:00:00', '', '')");
     
    	} 
    	echo '<br></br>';
     
        }   
    echo '</form>';
     
    // on ferme la connexion à mysql
    //mysql_close(); 
    ?> 
     
     
    <?php
    }
    else
    {
    //Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter
    ?>
    <a href="sign_up.php">Inscription</a><br />
    <a href="connexion.php">Se connecter</a>
    <?php
    }
    ?>
    		</div>
    		<div class="foot"><a href="http://www.supportduweb.com/">Support du Web</a></div>
    	</body>
    </html>
    Je ne sais plus comment continuer. Le problème est à la fin du script.

    Si vous pouvez m'aider !!!!

    Merci

  2. #2
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Le formulaire se déclare avant la boucle et se ferme après la boucle...
    Ensuite, pour y insérer des paramètres caché, il te suffit au début de ta boucle, d'y inclure des input de type hidden

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    echo '<form action="index.php" method="post">';
    while($data = mysql_fetch_assoc($req)) {
    // input caché
    echo '<input type="hidden" name"toto" value="tata">';
     
    // Ensuite ton code
    }
    echo '</form>';
    ?>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut
    Merci pour ta réponse rapide ! J'ai mis à jour mon script dans mon message précédent.

    Mais quand je clique sur mon bouton user.id.score1...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset ($_POST['btn_'.$user.'.'.$data['id'].'']))
    	{
    		$req2 = mysql_query("INSERT INTO `matchs` (`id`,`eq1`, `eq2`, `groupe`, `date`,`score_eq1`,`score_eq2`) VALUES ('1','POLOGNE', 'GRECE','GROUPE A', '2012-06-08 18:00:00', '', '')");
     
    	}
    rien ne se passe ... Pas d'insertion dans la base

  4. #4
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Hummm... c'est pas comme ceci que l'on soumet un formulaire. Normalement, c'est :

    Code php : 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
    // On test si les paramètres sont bien définit
    if (isset($_POST["session"]) && isset($_POST["dataId"])) {
     
    	// On définit la variable
    	$resultat = trim($_POST["inputText"]);
     
    	// On vérifie l'input text
    	if (empty($resultat))
    		die("erreur, input vide");
     
    	// Ensuite, le code à effectuer si les conditions sont corrects...
     
    }
     
    // On établit le formulaire
    echo '<form method="post" action="index.php">';
     
    	while($data = mysql_fetch_assoc($req)) {
     
    		// input caché qui seront envoyé en $_POST
    		echo '<input type="hidden" name="session" value="'.$user.'">';
    		echo '<input type="hidden" name="dataId" value="'.$data["id"].'">';
     
    		echo '<input type="text" name="inputText">'; // Le name sera passé en $_POST
    		echo '<input type="submit" value="OK"">'; // Le bouton de validation de formulaire
     
    	}
     
    echo '</form>';

    Or là, dans ton code, il y a une série d'incompréhension...

    Il ne faut pas faire ton test dans ta boucle,
    les select qui ne sont pas refermé,
    tes name des select me semble bien compliqué,
    tu n'es pas obligé de mettre de name à ton bouton submit

    Et pour moi, je n'ai jamais vu ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "\t",'<option value="', $i ,'"', $selected ,'>', $i ,'</option>',"\n";

    Il me semble que ça remplace les points, mais tu utilise les deux, si c'est le cas, je te conseil d'utiliser les points...

    Autre chose.. Normalement, la session, tu n'as même pas besoin de la passer dans le formulaire, puisqu'elle est présente et est beaucoup plus sécurisé...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 266
    Par défaut
    Malheureusement je n'y connais pas grand chose ! Je m'attaque à quelque chose de difficile...

    VOIR ICI

    Il faut bien identifier les boutons, les 2 listes déroulantes.
    Appuyer sur un bouton OK n'a pas la même action qu'un autres

    Le but est que quand je clique sur OK en bout de ligne on puisse remplir la base avec les 2 scores sélectionnés !

    Il faut bien donné un nom de variable aux listes déroulantes et aux boutons ??

    Si tu peux m'avancer un peu ?

    Merci de ton aide en tout cas !!

  6. #6
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Bon... ca n'a pas était facile (puisque je ne connais pas du tout ton code... et qu'il y a énormément d'erreur..) mais je pense que ce n'est pas trop mal...

    page index.php
    Code php : 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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    <?php
    include('config.php')
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
            <title>Espace membre</title>
        </head>
        <body>
        	<div class="header">
            	<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a>
    	    </div>
            <div class="content">
     
    			<?php
    			// On définit la variable qui contiendra le pseudo
    			if (isset($_SESSION["username"]))
    				$pseudo = $_SESSION["username"];
    			else 
    				$pseudo = "";
     
    			// On définit la fonction de l'affichage du message de bienvenue pour éviter la répétition
    			function bienvenue($nom = "") {
    				// On vérifie le paramètre nom
    				if ($nom != "") 
    					$p = " ".$nom;
    				else 
    					$p = "";
     
    				echo "Bonjour".$p.",<br />";
    				echo "Bienvenue sur notre site.<br />";
    				echo "Vous pouvez <a href=\"users.php\">voir la liste des utilisateurs</a>";
    				echo "<br /><br />";	
    			}
     
    			// Si l'utilisateur est connecté
    			if ($pseudo) {	
     
    				//On affiche le message de bienvenue
    				bienvenue($pseudo);	
    				echo "<a href=\"edit_infos.php\">Modifier mes informations personnelles</a><br />";
    				echo "<a href=\"connexion.php\">Se déconnecter</a>";
    				echo "<br /><br /><br />";
     
    				/**********************************************************************
    				// Il faut ouvrir la connexion à la base de donnée si ce n'est pas fait
    				************************************************************************/
     
    				// On vérifie si il y a des données en $_POST, si oui, on exécute le code
    				if (isset($_POST["validation"]) && $_POST["validation"] == "ok") {
     
    					// On récupère dans une variable l'id du match
    					$idMatch = intval($_POST["idMatch"]);
     
    					// On récupère le noms des équipes
    					$eq1 = trim($_POST["nomEq1"]);
    					$eq2 = trim($_POST["nomEq2"]);
     
    					// On récupère dans des variables les scores sélectionné
    					$score1 = intval($_POST["scoreEq1"]);
    					$score2 = intval($_POST["scoreEq2"]);
     
    					// On fais la vérification des variables
    					if (!is_numeric($idMatch) || !is_numeric($score1) || !is_numeric($score2))
    						die("Erreur lors de la récupération des ID");
     
    					// On vérifie le nom de l'équipe en vérifiant dans la BDD
    					$sql = mysql_query("
    						SELECT 
    							eq1, eq2 
    						FROM 
    							`matchs` 
    						WHERE 
    							id = '".mysql_real_escape_string($id)."'
    							AND eq1 = '".mysql_real_escape_string($eq1)."'
    							AND eq2 = '".mysql_real_escape_string($eq2)."'
    					") or die (mysql_error());
     
    					if (mysql_num_rows($sql) == 0)
    						die("Il n'existe aucun match avec ses deux équipe");
     
    					else {
     
    						mysql_query("
    							UPDATE 
    								`matchs` 
    							SET 
    								score_eq1 = '".mysql_real_escape_string($score1)."', 
    								score_eq2 = '".mysql_real_escape_string($score2)."' 
    							WHERE 
    								eq1 = '".mysql_real_escape_string($eq1)."'
    								AND eq2 = '".mysql_real_escape_string($eq2)."'
    						") or die (mysql_error());
    						header("Location: index.php");
    						die();
     
    					}
     
    				}
     
    				// On met en place notre requête
    				$sql = mysql_query("SELECT id, eq1, eq2, date, DATE_FORMAT(date,'%d/%m/%Y %H:%i') AS date2 FROM matchs") or die (mysql_error());
     
    				// On vérifie si il y a un résultat
    				if (mysql_num_rows($sql) > 0) {
     
    					// On ouvre le formulaire
    					echo '<form action="index.php" method="post">';
    						// On définit l'input caché qui nous permettra de valider le formulaire
    						echo "<input type=\"hidden\" name=\"validation\" value=\"ok\">";
     
    						while($data = mysql_fetch_assoc($sql)) {
     
    							// On définit l'input caché qui contiendra l'id du match
    							echo "<input type=\"hidden\" name=\"idMatch\" value=\"".$data["id"]."\">";
    							// On récupère en POST le nom de l'équipe 1
    							echo "<input type=\"hidden\" name=\"nomEq1\" value=\"".$data["eq1"]."\">";
    							// On récupère en POST le nom de l'équipe 2
    							echo "<input type=\"hidden\" name=\"nomEq2\" value=\"".$data["eq2"]."\">";
     
    							// on affiche la date du match
    							echo $data['date2'].' ';
     
    							// On affiche l'équipe 1
    							echo $data['eq1'].' ';
     
    							// On affiche la sélection du score pour l'équipe 1
    							echo '<select name="scoreEq1">\n';
    								for($i = 0; $i <= 10; $i++)
    									echo '<option value="'. $i .'">'. $i .'</option>\n';
    							echo '</select>\n';
     
    							// On affiche l'équipe 2
    							echo $data['eq2']."\n";
     
    							// On affiche la sélection pour l'équipe 2
    							echo '<select name="scoreEq2">\n';
    								for($j = 0; $j <= 10; $j++) 
    									echo '<option value="'. $j .'">'. $j .'</option>\n';
    							echo '</select>';
     
    							echo '<input type="submit" value="OK">\n';
     
    							echo "<br /><br />";
     
    						}   
    					echo '</form>';
     
    					// on ferme la connexion à mysql
    					mysql_close();
     
    				// Si il n'y a pas d'enregistrement ...
    				} else
    					// Message indiquant qu'il n'y a pas de résultat
     
    			} else {
     
    				//On affiche le message de bienvenue
    				bienvenue();	
    				echo "<a href=\"sign_up.php\">Inscription</a><br />";
    				echo "<a href=\"connexion.php\">Se connecter</a>";
     
    			}
    			?>
    		</div>
    		<div class="foot"><a href="http://www.supportduweb.com/">Support du Web</a></div>
    	</body>
    </html>

    Le mieux, c'est que tu essaye ceci, que tu l'étudie, et si tu as des questions pour savoir pourquoi ceci ou cela, n'hésite pas !
    J'ai essayé de commenter au maximum mais bon... A voir !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2012, 13h56
  2. [MySQL] Bouton radio et requête SQL
    Par roy-mustang dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 06/04/2009, 00h53
  3. Requête SQL générique
    Par xav13fr dans le forum Développement
    Réponses: 3
    Dernier message: 20/02/2008, 09h50
  4. Requête SQL générique
    Par xav13fr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/02/2008, 09h50
  5. exécuter deux requêtes SQL à partir d'un bouton de commande
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/12/2006, 18h57

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