Page 1 sur 1

Formulaire de supresion/modification/ajout

Posté : 29 mars 2010, 22:07
par vinvinsylvain
Bonjour,

J'ai une base de donnée avec 'id' et 'agent' comme champs.

Mon souci est qu'avec mon code ci-dessou:
* Quand on actualise la page, ceci me rajout une entrée dans la base juste un numéro 'id'.
* J'arrive pas a trouver ou est l'erreur dans le code de suprimer.
<html>

<head>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>GESTION DE LA MAIN COURANTE</title>

</head>

<body bgcolor="#E0E0E0"; style="font-family:verdana,Arial,sans-serif; font-size:10pt; overflow:auto; margin:0px; padding:0px;">
<? $URL = $PHP_SELF;
include("connexion.php"); ?>
<? // au réaffichage, on récupère la sélection
if($liste) {
} ?>
<?  $table="agent";
$query = "SELECT agent FROM $table ORDER BY `id` DESC "; 
$result = mysql_query($query);
?>
<?  $table="agent";
$query = "SELECT id FROM $table ORDER BY `id` DESC LIMIT 0, 30 ";
$result2 = mysql_query($query);
?>

<div style="position: fixe; width: 1200px; height: 30px; z-index: 1; left: 10px; top: 15px; background-color:#0000FF; right:20" id="couche1">
<p align="right"><b><font color="#FFFFFF" size="4">GESTION DE LA MAIN COURANTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></b></div>

<div style="position: absolute; width: 245px; z-index: 1; left: 0px; top: 30px; id=; height:800px; border-right-style:solid"><p>&nbsp;<?php include("menu.php")?></p></div>
<div style="position: absolute; width: 950px; z-index: 1; left: 249px; top: 30px; background-color:#FFFFFF; height:802px; border-left-style:solid" id="couche3">
	<p align="center"><u><i><font color="#008080" size="3"><a name="Haut"></a>Accès Base de donnée</font></i></u></p>
	<div align="center">
	<hr></div>
	<div>
		<blockquote>
	<p>&nbsp;</p>
	</div>

<div>
		<hr>
		<table border="0" width="100%" cellspacing="3">
			<tr>
				<td width="383" valign="top">
		<p align="center"><i><b><font color="#008080"><a name="BDD_agent"></a>
		&nbsp;Vue de la
		Base de Donnée agent
		</font></b></i>
	</p>
	<p>
	<blockquote>
	<p align="center">
	<table align="center" border="1" width="81%" cellspacing="0" bgcolor="#CCCCCC" style="border-collapse: collapse">
<tr>
<th width="127"><font size="2">N° d'Id</font></th>
<th width="150"><font size="2">agent</font></th>
</tr>

<?php
 include("connexion.php");
$retour = mysql_query('SELECT * FROM agent ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour))
{
?>

<tr>
<td width="127"> <font size="2"> <?php echo stripslashes($donnees['id']); ?></font></td>
<td width="150"> <font size="2"> <?php echo stripslashes($donnees['agent']); ?></font></td>
</tr>
<?php
} 
?>
</table>
				</blockquote>
				<p>&nbsp;</td>
				<td>
		<form align="center" method="POST" style="border-width:1px; width: 600; height: 100; background-color:#FFFFFF; text-align:center; " name="Rectification un Agent">
			<p align="center" ><b><font color="#008080" size="5">Rectifier un agent</font></b></p>
				<blockquote>
			<p align="left" ><font color="#008080"><b>Nom de l'agent a changer</b></font><b><font color="#008080"> : 
			</font></b><select name="champ3">
   			<? while ($val = mysql_fetch_array($result)) { ?>
      		<option><? echo $val["agent"]; ?></option>
  			<? } ?></select>&nbsp;&nbsp; </p>
			<p align="left" >&nbsp;<font color="#008080"><b>Nouveau nom de l'agent</b></font><b><font color="#008080"> 
		:</font></b>&nbsp;<input type="text"  size="37" name="champ2" >&nbsp;</p>
				</blockquote>
		<p align="center" >
		<input type="submit" value="Modifier" name="B1">&nbsp;&nbsp;&nbsp; <input type="reset" value="Rétablir" name="B2"></p>
			<?php
			$champ2=isset($_POST['champ2'])?$_POST['champ2']:"";
			$champ3=isset($_POST['champ3'])?$_POST['champ3']:"";
			$sql = "SELECT `agent` FROM `agent` WHERE 1";
			$modification = mysql_query("UPDATE agent SET agent='$champ2' WHERE agent='$champ3'");
        	mysql_close();  
			?>
		</form>
		
		<form align="center" method="POST" style="border-width:1px; width: 600; height: 100; background-color:#FFFFFF; text-align:center; " name="Supprimer agent">
			<p align="center" ><b><font color="#008080" size="5">Supprimer un agent</font></b></p>
				<blockquote>
			<p align="left" ><font color="#008080"><b>N° id de l'agent a supprimer: </b></font></b>
			<select name="champsup"><? while ($val = mysql_fetch_array($result2)) { ?><option><? echo $val["id"]; ?></option>
  			<? } ?></select>
			</p>
		</blockquote>
		<p align="center" >
		<input type="submit" value="Supprimer" name="B3">&nbsp;&nbsp;&nbsp; <input type="reset" value="Rétablir" name="B4"></p>
		<?php
			$champsup=isset($_POST['champsup'])?$_POST['champsup']:"";
			$sql = "SELECT `id` FROM `agent` WHERE 1";
			$suprimer = mysql_query("DELETE FROM $table WHERE 'agent'.'id'='$champsup'");
        	mysql_close();  
		?>
		
		</form>

		<form align="center" method="POST" style="border-width:1px; width: 600; height: 100; background-color:#FFFFFF; text-align:center; " name="Nouveau agent">
		<p align="center" ><b><font color="#008080" size="5">Nouveau un agent</font></b></p>
		<blockquote>
			<p align="left" ><font color="#008080"><b>Nom de l'agent a supprimer :</b></font><b><input type="text" name="nouveau_agent" size="20"></font></b></p>
		</blockquote>
		<p align="center" >
		<input type="submit" value="Valider" name="B5">&nbsp;&nbsp;&nbsp; 
		<input type="reset" value="Rétablir" name="B6"></p>
		<?php
		include("connexion.php");
		mysql_select_db ('agent') ;
		 $nouveau_agent=isset($_POST['nouveau_agent'])?$_POST['nouveau_agent']:"";
		 $sql = "SELECT * FROM `agent` WHERE 1";
 		  $nouveau =mysql_query("insert into agent (id,agent) values ('','$nouveau_agent')");
          mysql_close();  
		?>
		
		</form>
		

		</table>
</div>



</body>

</html>
Pouvez vous m'aider ?

Re: Formulaire de supresion/modification/ajout

Posté : 30 mars 2010, 13:57
par visualight
Salut,

Pour éviter d'insérer ou modifier un enregistrement de ta table lors d'un refresh simple de la page, tu dois contrôler tes variables post correctement.

Exemple tu as écrit :
include("connexion.php");
mysql_select_db ('agent') ;
$nouveau_agent=isset($_POST['nouveau_agent'])?$_POST['nouveau_agent']:"";
$sql = "SELECT * FROM `agent` WHERE 1";
$nouveau =mysql_query("insert into agent (id,agent) values ('','$nouveau_agent')");
mysql_close();  
Ce que je propose :
// Ca ne sert à rien d'inclure à nouveau ton fichier de connexion, tu l'as fait plus haut
// include("connexion.php");
// Ca ne sert à rien de sélectionner ta base, tu l'as fait plus haut
// mysql_select_db ('agent') ;

if (isset($_POST['nouveau_agent']) AND !empty ($_POST['nouveau_agent'])) {
  $nouveau_agent=$_POST['nouveau_agent'];
  // ICI je vois pas trop l'interêt de sélectionner ta table ...
  // $sql = "SELECT * FROM `agent` WHERE 1";

  // Si l'id est autoincrémentée dans mysql, ça ne sert à rien de l'appeler, elle s'incrémentera tout de même.
  // $nouveau =mysql_query("insert into agent (id,agent) values ('','$nouveau_agent')");
  $nouveau =mysql_query("insert into agent (agent) values ('$nouveau_agent')");
  mysql_close();
}  
Je te conseille vivement de revoir la structure de ta page et corriger les erreurs !

Exemple d'erreur (voir la gestion des variables POST plus haut + corrections gestion SQL de ton fichier.

Tu as ecris :
<?  $table="agent";
$query = "SELECT agent FROM $table ORDER BY `id` DESC ";
$result = mysql_query($query);
?>
<?  $table="agent";
$query = "SELECT id FROM $table ORDER BY `id` DESC LIMIT 0, 30 ";
$result2 = mysql_query($query);
?>
Je te conseille (sans avoir regardé tout ton code et en ne connaissant pas les implications):
<?
$table="agent";
$query = "SELECT id, agent FROM $table ORDER BY `id` DESC LIMIT 0, 30 ";
$result = mysql_query($query);
?>

Voili, voilou ...
A toi de jouer ;)

Re: Formulaire de supresion/modification/ajout

Posté : 30 mars 2010, 23:28
par vinvinsylvain
Bonjour,

je vous remercie, oui j'avous le code de ma page est pas beau a voir lol je début et je suis perdu, en plus a chaque fois que je change ..... ben plus rien fonctionne mdr

si vous voulez voir l'exemple de cette page ceci se trouve : http://cfdt-interco21.fr/video/rectifagent.php

au secours !!!!

Re: Formulaire de supresion/modification/ajout

Posté : 31 mars 2010, 20:03
par visualight
Salut,

Ton code devrait ressembler à ceci :
J'ai pas testé, juste corrigé à la volée...

A toi maintenant de faire la même chose avec tes autres fichiers pour remettre un peu d'ordre.
A toi aussi de corriger le code que j'ai posté pour l'adapter à tes besoins.
<?php 
// ATTENTION => l'utilisation de multiples &nbsp; pour faire des espaces ne sert à rien. mieux vaut utiliser le CSS 
?>

<html>

<head>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>GESTION DE LA MAIN COURANTE</title>

</head>

<body bgcolor="#E0E0E0"; style="font-family:verdana,Arial,sans-serif; font-size:10pt; overflow:auto; margin:0px; padding:0px;">

<?php

// Je ne vois pas à quoi sert cette variable => je la désactive
// $URL = $PHP_SELF;

// On inclus le fichier de connexion à la base de donnée
include("connexion.php");

// au réaffichage, on récupère la sélection
// Je n'ai pas de correspondance à la variable $liste => je la désactive
// if($liste) {} 

// On sélectionne la table

$table="agent";
$query = "SELECT id, agent FROM $table ORDER BY `id` DESC LIMIT 0, 30";
$result = mysql_query($query);

?>

<div style="position: fixe; width: 1200px; height: 30px; z-index: 1; left: 10px; top: 15px; background-color:#0000FF; right:20" id="couche1">
<p align="right"><b><font color="#FFFFFF" size="4">GESTION DE LA MAIN COURANTE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></b></div>

<div style="position: absolute; width: 245px; z-index: 1; left: 0px; top: 30px; id=; height:800px; border-right-style:solid"><p>&nbsp;<?php include("menu.php")?></p></div>
<div style="position: absolute; width: 950px; z-index: 1; left: 249px; top: 30px; background-color:#FFFFFF; height:802px; border-left-style:solid" id="couche3">
        <p align="center"><u><i><font color="#008080" size="3"><a name="Haut"></a>Accès Base de donnée</font></i></u></p>
        <div align="center">
        <hr></div>
        <div>
                <blockquote>
        <p>&nbsp;</p>
        </div>

<div>
                <hr>
                <table border="0" width="100%" cellspacing="3">
                        <tr>
                                <td width="383" valign="top">
                <p align="center"><i><b><font color="#008080"><a name="BDD_agent"></a>
                &nbsp;Vue de la
                Base de Donnée agent
                </font></b></i>
        </p>
        <p>
        <blockquote>
        <p align="center">
        <table align="center" border="1" width="81%" cellspacing="0" bgcolor="#CCCCCC" style="border-collapse: collapse">
<tr>
<th width="127"><font size="2">N° d'Id</font></th>
<th width="150"><font size="2">agent</font></th>
</tr>

<?php
// On inclus PAS le fichier de connexion car déjà inclus plus haut => je désactive
// include("connexion.php");

// Ca ne sert à rien de sélectionner à nouveau les données => je désactive
// $retour = mysql_query('SELECT * FROM agent ORDER BY id DESC');


//while ($donnees = mysql_fetch_array($retour))
while ($donnees = mysql_fetch_array($result))
{

// On définis les variables à utiliser
$id = stripslashes($donnees['id']);
$agent = stripslashes($donnees['agent']);

// On fais un echo du tableau pour afficher les données (moi c'est ce que je ferais)
echo '<tr>
<td width="127"> <font size="2">'.$id.'</font></td>
<td width="150"> <font size="2">'.$agent.'</font></td>
</tr>';

}
?>

</table>
                                </blockquote>
                                <p>&nbsp;</td>
                                <td>
                <form align="center" method="POST" style="border-width:1px; width: 600; height: 100; background-color:#FFFFFF; text-align:center; " name="Rectification un Agent">
                        <p align="center" ><b><font color="#008080" size="5">Rectifier un agent</font></b></p>
                                <blockquote>
                        <p align="left" ><font color="#008080"><b>Nom de l'agent a changer</b></font><b><font color="#008080"> :
                        </font></b>
						
						<?php 
						// On affiche la liste des agents
						
						echo '<select name="champ3">';
						
                        while ($val = mysql_fetch_array($result)) { 
						 echo '<option>'.$val["agent"].'</option>';
						} 
						
						echo '</select></p>';
						?>
						
                        <p align="left" >&nbsp;<font color="#008080"><b>Nouveau nom de l'agent</b></font><b><font color="#008080">
                :</font></b>&nbsp;<input type="text"  size="37" name="champ2" >&nbsp;</p>
                                </blockquote>
                <p align="center" >
                <input type="submit" value="Modifier" name="B1">&nbsp;&nbsp;&nbsp; <input type="reset" value="Rétablir" name="B2"></p>
                        <?php
						
						// Si le champ 2 et 3 ont été soumis et qu'ils ne sont pas vides, on exécute la requete
						if ((isset($_POST['champ2']) AND !empty ($_POST['champ2'])) AND (isset($_POST['champ3']) AND !empty ($_POST['champ3']))) {
						 $champ2=$_POST['champ2']);
                         $champ3=$_POST['champ3']);
						 
                        // pas besoin de sélectionner pour faire un update ou insert dans la base de donnée => Désactivé
						// $sql = "SELECT `agent` FROM `agent` WHERE 1";
                        $modification = mysql_query("UPDATE agent SET agent='$champ2' WHERE agent='$champ3'");
						
						// Si le champ 2 ou 3 n'a pas été remplis
						} else { 
						 echo 'Le champ 2 et/ou 3 n\'a pas été complété'
						}
						
                // Pas besoin de fermer la connexion maintenant => désactivé
				// mysql_close();  
                        ?>
                </form>
               
                <form align="center" method="POST" style="border-width:1px; width: 600; height: 100; background-color:#FFFFFF; text-align:center; " name="Supprimer agent">
                        <p align="center" ><b><font color="#008080" size="5">Supprimer un agent</font></b></p>
                                <blockquote>
                        <p align="left" ><font color="#008080"><b>N° id de l'agent a supprimer: </b></font></b>
						
						<?php
						// On affiche la liste des ID
                        echo '<select name="champsup">';
						
						while ($val = mysql_fetch_array($result)) { 
						 echo '<option>'.$val["id"].'</option>';
						 
                        } 
						echo '</select></p>';
						?>
						
                </blockquote>
                <p align="center" >
                <input type="submit" value="Supprimer" name="B3">&nbsp;&nbsp;&nbsp; <input type="reset" value="Rétablir" name="B4"></p>
                <?php
                        
						//Si le champsup à été soumis et qu'il n'est pas vide, on exécute la requete
						if (isset($_POST['champsup']) AND !empty($_POST['champsup'])) {
						$champsup=$_POST['champsup']);
                        
						// Pas besoin de sélectionner avant supression => Désacivé
						// $sql = "SELECT `id` FROM `agent` WHERE 1";
						
                        $suprimer = mysql_query("DELETE FROM $table WHERE 'agent'.'id'='$champsup'");
						
						// Sinon, on affiche un message
						} else {
						 echo 'le champ : "champsup" n\'a pas été complété';
						}
						
				// Pas besoin de fermer la connexion maintenant .. on a pas fini avec la page => Désactivé
                // mysql_close();  
                ?>
               
                </form>

                <form align="center" method="POST" style="border-width:1px; width: 600; height: 100; background-color:#FFFFFF; text-align:center; " name="Nouveau agent">
                <p align="center" ><b><font color="#008080" size="5">Nouveau un agent</font></b></p>
                <blockquote>
                        <p align="left" ><font color="#008080"><b>Nom de l'agent a supprimer :</b></font><b><input type="text" name="nouveau_agent" size="20"></font></b></p>
                </blockquote>
                <p align="center" >
                <input type="submit" value="Valider" name="B5">&nbsp;&nbsp;&nbsp;
                <input type="reset" value="Rétablir" name="B6"></p>
				
                <?php
                
				// Pas besoin d'inclure le fichier de connexion (déjà fait au début de la page) => Désactivé
				// include("connexion.php");
				
				// La a vrai dire, je ne comprends pas... => Désactivé
                // mysql_select_db ('agent') ;
				
				// Si nouveau_agent a été soumis et qu'il n'est pas vide, on exécute la requête
                 
				 if (isset($_POST['nouveau_agent']) AND !empty($_POST['nouveau_agent'])) {
				  $nouveau_agent=$_POST['nouveau_agent']);
				 
                 // Pas besoin de sélectionner pour insérer => Désactivé
				 // $sql = "SELECT * FROM `agent` WHERE 1";
				 
                  $nouveau =mysql_query("insert into agent (id,agent) values ('','$nouveau_agent')");
				  
				  } else {
				   echo 'le champ "nouveau_agent" n\'a pas été remplis';
				  }
				  
				 // MAINTENANT, on peut fermer la connexion à la base de donnée
				 mysql_close();  
                ?>
               
                </form>
               

                </table>
</div>



</body>

</html>
A+
raph


EDIT: Ton <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> Est bizzare ...
Moi j'utiliserai : <meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1" />

Re: Formulaire de supresion/modification/ajout

Posté : 01 avr. 2010, 00:39
par stealth35
le windows-1252 c'est une extension de l'iso-8859-1, donc y'a pas de soucis, même si je le conseillerai pas (un petit UTF-8 :mrgreen: )