Modification de valeurs dans base de donnée

Petit nouveau ! | 4 Messages

11 juil. 2012, 19:23

Bonjour a tous,

Je me permet d'écrire se sujet car je patauge depuis une semaine, je suis sur la réalisation d'un site pour mon club de poker et jusqu’à maintenant tout vas bien mais la j'essaie de créer un formulaire pour modifier les points des différents joueurs inscrit dans ma base de donnée mais sans succès je pense qu'il y a forcement une erreur dans mon code mais impossible de mettre le grapin dessus j'espére que vous allez pouvoir m'aider car la je suis complètement coincée. mais je vous montre de suite le code de mon formulaire :
<?php
// ***************************************************************
// ADMIN NEWS : LISTING
// ***************************************************************
// protection ADMIN - Connexion a la BD - CONFIGURATION de la NEWS
  include_once('./adm_fonctions/_protectpage.php');
  include_once('../fonctions/_connexion.php');
  include_once('../fonctions/news_config.php');
// ----------------------------------
// requete : toutes les News
 
$classement_query   = "SELECT * FROM ".$POINTS_CLASSEMENT_1ER_TRIMESTRE." ORDER BY Points DESC;";
$classement_result  = mysql_query($classement_query) or die('Erreur SQL :<br />'.$classement_query.'<br />'.mysql_error());
$classement_nombre  = mysql_num_rows($classement_result);
 
 
 
$traiter ='';
 
// -------------------------
 
 
// -------------------------
 
   
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../stylesheet.css" />
        <title>Poker Senior!!</title>
    </head>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" href="adm_css/news_ADM_style.css" />
</head>
<body>
<div id="containercentrer">
 
<h1>ADMINISTRATION DES CLASSEMENTS</h1>
<div style="float:left;">
  <!-- deconnection -->
  <form name="deconnexion" method="post" action="./adm_fonctions/_deconnexion.php">
  <fieldset>
    <button name="btdeconnexion" type="submit" title="Déconnexion de l'Administration">
    <img src="<?php echo REP_ADM_ICONES; ?>SUPPRIMER.png" alt="" /><span> Déconnexion</span></button>
  </fieldset>
  </form>
</div>
<div style="float:right;">
  <!-- retour site -->
  <form name="retour site" method="post" action="../acceuil.php">
  <fieldset>
    <button name="btretour" type="submit" title="retour au site">
    <img src="<?php echo REP_ADM_ICONES; ?>arrow_back.png" alt="" /><span> Retour au site</span></button>
  </fieldset>
  </form>
</div>
 
 
 
<div style="float:center;">
  <!-- retour page classement -->
  <form name="retour au site" method="post" action="../site_admin.php">
  <fieldset>
    <button name="btretour" type="submit" title="retour a la gestion du site">
    <img src="<?php echo REP_ADM_ICONES; ?>arrow_back.png" alt="" /><span> Retour a la gestion du site</span></button>
  </fieldset>
  </form>
 
</div>
 
                    <p>
          <h2>Ajout de points au classements</h2><br/>
          <div style="clear:both;">
  <br />
        <form method="post" action="ajout_partie.php">
 
<p>
    <h7>Dans quelle trimestre voulez vous affecter les points :</h7> <select name="choix trimestre">
    <option value="choix trimestre1">1er trimestre</option>
    <option value="choix trimestre2">2e trimestre</option>
    <option value="choix trimestre3">3e trimestre</option>
    <option value="choix trimestre4">4e trimestre</option>
</select>
<table>
  <thead>
  <tr>
    <th width="01%">JoueurId</th>
    <th width="40%">Nom</th>
    <th width="10%">Points</th>
   
  </tr>
  </thead>
  <tbody>
<?php
if($classement_nombre>0) {
// boucle pour lister
while ($classement_row = mysql_fetch_array($classement_result))
{
  $Place      = $classement_row['Place'];
  $Nom_joueur     = stripslashes($classement_row['Nom_joueur']);
  $Points     = $classement_row['Points'];
  $joueurId   = $classement_row['joueurId'];
 
?>
  <tr>
    <td style="text-align:center" id="joueurId" name="joueurId"><h4><?php echo $joueurId; ?></h4></td>
    <td style="text-align:center;" id="Nom_joueur" name="Nom_joueur"><h4><?php echo $Nom_joueur; ?></h4></td>
    <td style="text-align:center;"><h4> <center><input type="text" id="$Points" name="$Points" size="10" value="" /></h4></center></td>
    </td>
   
   
  </tr>
<?php
} // Fin de la boucle
} else { // pas de classement
?>
  <tr><td colspan="8">Pas de classement pour le moment.</td></tr>
<?php
}
?>
 
  </tbody>
  </table>
</div>
 
<div id="boxvalidation">
      <div class="btannulation"><a href="./site_admin.php"><img src="<?php echo REP_ADM_ICONES; ?>ANNULER.png" alt="" /><span> Annuler</span></a></div>
      <button id="btvalider" name="bt<?php echo $traiter; ?>" type="submit">
      <img src="<?php echo REP_ADM_ICONES.$traiter; ?>ok.png" alt="" /><span> Valider <?php echo $traiter; ?></span></button>
    </div>
</p>   
</form>
       
 
 
</body>
</html>
et voici sans plus tarder le code de la page pour le traitement :

<?php
// ***************************************************************
// ADMIN NEWS : FORMULAIRE "ajouter"/"modifier"/"supprimer"
// ***************************************************************
// protection ADMIN - Connexion a la BD - CONFIGURATION de la NEWS
  include_once('./adm_fonctions/_protectpage.php');
  include_once('../fonctions/_connexion.php');
  include_once('../fonctions/news_config.php');
  include_once('../fonctions/fct_traitement_image.php');
// Editeur WYSIWYG utilisé : FCKeditor
  include_once('../utilitaires/fckeditor/fckeditor.php') ;
// ----------------------------------
$traiter = 'modifier';
 
// -------------------------
// Traitement : AJOUTER
if ($traiter == 'MODIFIER')
{
  $joueurId         = mysql_real_escape_string($_POST['joueurId']);
  $Nom_joueur     = mysql_real_escape_string(htmlspecialchars(stripslashes(trim($_POST['Nom_joueur']))));
  $Points   = mysql_real_escape_string($_POST['Points']);
  // modification : on met a jour la news
  // on ne change pas la date
  $query_update   = "UPDATE ".$POINTS_CLASSEMENT_1ER_TRIMESTRE." SET ".
          " Nom_joueur      = '".$Nom_joueur."', ".
          " Points    = '".$Points."' ".
          " WHERE joueurId  = '".$joueurId."';";
  mysql_query($query_update) or die('Erreur SQL :<br />'.$query_update.'<br />'.mysql_error());
  // ----------------------
 
}
  // ----------------------
$classement_query   = "SELECT * FROM ".$POINTS_CLASSEMENT_1ER_TRIMESTRE." ORDER BY Points DESC;";
$classement_result  = mysql_query($classement_query) or die('Erreur SQL :<br />'.$classement_query.'<br />'.mysql_error());
$classement_nombre  = mysql_num_rows($classement_result);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../stylesheet.css" />
        <title>Poker Senior!!</title>
    </head>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" href="adm_css/news_ADM_style.css" />
</head>
<body>
<div id="containercentrer">
 
<h1>MODIFICATION DES POINTS</h1>
 
 
                    <p>
          <h2>Aperçu des points</h2><br/>
          <div style="clear:both;">
  <br />
       
 
<p>
 
</select>
<table>
  <thead>
  <tr>
    <th width="01%">JoueurId</th>
    <th width="40%">Nom</th>
    <th width="10%">Points</th>
   
  </tr>
  </thead>
  <tbody>
<?php
if($classement_nombre>0) {
// boucle pour lister
while ($classement_row = mysql_fetch_array($classement_result))
{
  $Place      = $classement_row['Place'];
  $Nom_joueur     = stripslashes($classement_row['Nom_joueur']);
  $Points     = $classement_row['Points'];
  $joueurId   = $classement_row['joueurId'];
?>
  <tr>
    <td style="text-align:center" name="joueurId"><h4><?php echo $joueurId; ?></h4></td>
    <td style="text-align:center;" name="Nom_joueur"><h4><?php echo $Nom_joueur; ?></h4></td>
    <td style="text-align:center;" name="Points"><h4> <center><?php echo $Points; ?></h4></center></td>
    </td>
   
   
  </tr>
<?php
} // Fin de la boucle
} else { // pas de classement
?>
  <tr><td colspan="8">Pas de classement pour le moment.</td></tr>
<?php
}
?>
 
  </tbody>
  </table>
</div>
</p>
 
       
 
 
</body>
</html>
Bon pour le moment c'est juste pour la modification mais dans l'idée on pourra choisir un trimestre et ce faisant affiché les joueurs inscrit pour le trimestre en cours et les points ne seront pas modifié mais ajouté aux points déja acquis. mais bon comme deja je n'arrive pas a modifier les points je suis encore loin de faire tout ce que j'ai en tete lol.

Merci pour toute l'aide que vous pourrez m'apporter dans tout les cas et si vous voyez des chose pas jolie jolie sur mon code sachez simplement que j'ai commencer a apprendre il y a un mois de sa donc forcement ca ne peut pas etre parfait tout de suite.

ViPHP
ViPHP | 2577 Messages

12 juil. 2012, 13:20

Bonjour,

Pour obtenir de l'aide, il faudrait que tu nous éclaire sur ton problème. La, on en reste à ca ne marche pas ce qui est trop vague.

Si la mise à jour ne se fait pas, c'est :
- soit que la requete de maj n'est pas exécutée
- soit que tu n'est pas connecté à ta base de données
- soit que la requete n'a pas les bon paramètre
- soit que la requete n'est pas valide

Essayes de clarifier la situation.

Petit nouveau ! | 4 Messages

12 juil. 2012, 21:40

Donc deja j'ai changer le code de mon formulaire le voici en entier :
<?php
// ***************************************************************
// ADMIN NEWS : LISTING
// ***************************************************************
// protection ADMIN - Connexion a la BD - CONFIGURATION de la NEWS
	include_once('./adm_fonctions/_protectpage.php');
	include_once('../fonctions/_connexion.php');
	include_once('../fonctions/news_config.php');
// ----------------------------------
// requete : toutes les News

$classement_query 	= "SELECT joueurId,Nom_joueur,Points,Place FROM ".$POINTS_CLASSEMENT_1ER_TRIMESTRE." ORDER BY Points DESC;";
$classement_result 	= mysql_query($classement_query) or die('Erreur SQL :<br />'.$classement_query.'<br />'.mysql_error());
$classement_nombre 	= mysql_num_rows($classement_result);



$traiter ='';


// -------------------------


// -------------------------

    
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../stylesheet.css" />
        <title>Poker Senior!!</title>
    </head>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" href="adm_css/news_ADM_style.css" />
</head>
<body>
<div id="containercentrer">

<h1>ADMINISTRATION DES CLASSEMENTS</h1>
<div style="float:left;">
	<!-- deconnection -->
	<form name="deconnexion" method="post" action="./adm_fonctions/_deconnexion.php">
	<fieldset>
		<button name="btdeconnexion" type="submit" title="Déconnexion de l'Administration">
		<img src="<?php echo REP_ADM_ICONES; ?>SUPPRIMER.png" alt="" /><span> Déconnexion</span></button>
	</fieldset>
	</form>
</div>
<div style="float:right;">
	<!-- retour site -->
	<form name="retour site" method="post" action="../acceuil.php">
	<fieldset>
		<button name="btretour" type="submit" title="retour au site">
		<img src="<?php echo REP_ADM_ICONES; ?>arrow_back.png" alt="" /><span> Retour au site</span></button>
	</fieldset>
	</form>
</div>



<div style="float:center;">
	<!-- retour page classement -->
	<form name="retour au site" method="post" action="../site_admin.php">
	<fieldset>
		<button name="btretour" type="submit" title="retour a la gestion du site">
		<img src="<?php echo REP_ADM_ICONES; ?>arrow_back.png" alt="" /><span> Retour a la gestion du site</span></button>
	</fieldset>
	</form>

</div>

                    <p>
					<h2>Ajout de points au classements</h2><br/>
					<div style="clear:both;">
	<br />
				<form name="ajout de points" method="post" action="ajout_partie.php">
			
			
<p>
			
    <h7>Dans quelle trimestre voulez vous affecter les points :</h7> <select name="choix trimestre">
    <option value="choix trimestre1">1er trimestre</option>
    <option value="choix trimestre2">2e trimestre</option>
    <option value="choix trimestre3">3e trimestre</option>
    <option value="choix trimestre4">4e trimestre</option>
</select>
<table>
	<thead>
	<tr>
		<th width="01%">JoueurId</th>
		<th width="40%">Nom</th>
		<th width="10%">Points</th>
		
	</tr>
	</thead>
	<tbody>
<?php
if($classement_nombre>0) {
// boucle pour lister
while ($classement_row = mysql_fetch_array($classement_result))
{
	$Place			= $classement_row['Place'];
	$Nom_joueur		 	= stripslashes($classement_row['Nom_joueur']);
	$Points		 	= $classement_row['Points'];
	$joueurId		= $classement_row['joueurId'];
	
?>
	<tr>
		<td style="text-align:center" id="joueurId" name="joueurId"><h4><?php echo $joueurId; ?></h4></td>
		<input type="hidden" id="joueurId" name="joueurId" value="<?php echo $joueurId; ?> "/>
		<td style="text-align:center;" id="Nom_joueur" name="Nom_joueur"><h4><?php echo $Nom_joueur; ?></h4></td>
		<input type="hidden" id="Nom_joueur" name="Nom_joueur" value="<?php echo $Nom_joueur; ?>" />
		<td style="text-align:center;"><h4> <center><input type="text" id="Points" name="Points" size="10" value="" /></h4></center></td>
		</td>
		
		
	</tr>
<?php
} // Fin de la boucle
} else { // pas de classement
?>
	<tr><td colspan="8">Pas de classement pour	 le moment.</td></tr>
<?php
}
?>

	</tbody>
	</table>
</div>

<div id="boxvalidation">
			<div class="btannulation"><a href="./site_admin.php"><img src="<?php echo REP_ADM_ICONES; ?>ANNULER.png" alt="" /><span> Annuler</span></a></div> 
			<button id="btvalider" name="bt<?php echo $traiter; ?>" type="submit">
			<img src="<?php echo REP_ADM_ICONES.$traiter; ?>ok.png" alt="" /><span> Valider <?php echo $traiter; ?></span></button>
		</div> 
</p>		
</form>
				


</body>
</html>
Ainsi que la variable $traiter = 'MODIFIER'; dans la page traitement
donc grace au code de la page formulaire j'affiche un tableau avec les joueurs présents dans ma base de donnée avec une zone texte pour chaque joueur ou je peut modifier les points obtenu.

Le probléme c'est que ma requéte update ne prend en compte uniquement les points de la derniére ligne du tableau et les attribut au joueur a la premiere ligne alors que ce que je voudrais c'est qu'il me modifie toutes les lignes et attribue les points correspondant bien sur au bon joueurs.

j'espére que j'ai été assez clair dans l'énoncé de mon probléme

ViPHP
ViPHP | 2577 Messages

13 juil. 2012, 09:13

Oui, c'est plus clair pour moi.
<td style="text-align:center" id="joueurId" name="joueurId"><h4><?php echo $joueurId; ?></h4></td>
                <input type="hidden" id="joueurId" name="joueurId" value="<?php echo $joueurId; ?> "/>
                <td style="text-align:center;" id="Nom_joueur" name="Nom_joueur"><h4><?php echo $Nom_joueur; ?></h4></td>
                <input type="hidden" id="Nom_joueur" name="Nom_joueur" value="<?php echo $Nom_joueur; ?>" />
                <td style="text-align:center;"><h4> <center><input type="text" id="Points" name="Points" size="10" value="" 
Le problème c'est que tes input ont le même "name" pour toutes les lignes. Il faudrait ajouter [] après le name pour récupérer un tableau et faire les mises à jour pour chaque ligne :
<td style="text-align:center" id="joueurId" name="joueurId"><h4><?php echo $joueurId; ?></h4></td>
                <input type="hidden" id="joueurId[]" name="joueurId[]" value="<?php echo $joueurId; ?> "/>
                <td style="text-align:center;" id="Nom_joueur" name="Nom_joueur"><h4><?php echo $Nom_joueur; ?></h4></td>
                <input type="hidden" id="Nom_joueur[]" name="Nom_joueur[]" value="<?php echo $Nom_joueur; ?>" />
                <td style="text-align:center;"><h4> <center><input type="text" id="Points[]" name="Points[]" size="10" value="" 
Un var_dump($_POST) te permettra de voir la différence entre avant et après.

Pour traiter les lignes :
<?PHP
foreach($_POST['Nom_joueur'] as $i=>$v) {
    traitement avec $_POST['Nom_joueur'][$i] et $_POST['Points'][$i] 
}
?>

ViPHP
xTG
ViPHP | 7331 Messages

13 juil. 2012, 09:53

Pas confondre name et id. ;)
Mais je reste d'accord sur le fait qu'il ne faut pas qu'ils aient le même id.

Petit nouveau ! | 4 Messages

13 juil. 2012, 10:44

Bonjour Mazarini,

j'ai une question sur la partie traitement je vois pas comment utiliser ce code :
foreach($_POST['Nom_joueur'] as $i=>$v) {
    traitement avec $_POST['Nom_joueur'][$i] et $_POST['Points'][$i] 
}
dans ma requete:
$joueurId	= mysql_real_escape_string($_POST['joueurId']);
	$Points	= mysql_real_escape_string($_POST['Points']);
	
	$query_update 	= "UPDATE ".$POINTS_CLASSEMENT_1ER_TRIMESTRE." SET ".
					" Points 		= '".$Points."' ".
					" WHERE joueurId 	= '".$_POST['Points'][$i]."';";
	mysql_query($query_update) or die('Erreur SQL :<br />'.$query_update.'<br />'.mysql_error());
est ce que tu pourrai me donner quelque précision

ViPHP
ViPHP | 2577 Messages

13 juil. 2012, 13:36

Bonjour,

si tu mets les inputs avec name="Points[]" au lieu de name="Points", tu vas recevoir les données dans $_POST['Points'][0], $_POST['Points'][1]... au lieu de $_POST['Points']. Ce qui correspond à ce que tu veux faire : avoir les points de chaque ligne (même chose pour les autres données).

Il faut donc que tu fasses une boucle pour traiter les différentes lignes.
<?PHP
foreach ($_POST['joueurId'] as $i=>$v) {     // utilisé pour parcourir les array avec $i, on s'en fout de $v
     $joueurId = mysql_real_escape_string($_POST['joueurId'][$i]);    // on récupère les données
     $Points = mysql_real_escape_string($_POST['Points'][$i]);           // de la ligne $i
     $query_update   = "UPDATE ".$POINTS_CLASSEMENT_1ER_TRIMESTRE." SET ".           // on fait la maj pour la ligne
                                        " Points = '".$Points."' ".
                                        " WHERE joueurId = '".$joueurId."';";
      mysql_query($query_update) OR die('Erreur SQL :<br />'.$query_update.'<br />'.mysql_error());
}
?>
Effectivement on peut modifier les "id" pour les aligner sur les "name".

Petit nouveau ! | 4 Messages

13 juil. 2012, 20:40

Merci ca marche nikel depuis deux semaines je galére avec cette modification de points encore merci maintenant il faut que je vois pour ajouter les points au lieu de les modifier.

Encore Merci.