Requete UPDATE qui se comporte comme INSERT

Résolu/Fermé
nicusjam Messages postés 36 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 21 juillet 2011 - 25 sept. 2008 à 14:23
nicusjam Messages postés 36 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 21 juillet 2011 - 25 sept. 2008 à 17:32
Bonjour,
je sais le titre peut paraitre bizarre mais c'est vraiment ce qui se passe. J'ai un listing de programmes, avec un bouton modifier, qui au onclick recupere les champs correspondants; jusque là tout va bien. Mais ensuite dans php myadmin comme sur mon programme, la ligne qui devait etre changée est toujours là(elle a par exemple l'id 28 ) et les modifications sont apparues dans une nouvelle ligne avec nouvel id (id 29). Je vous balance mon code, n'ayez pas peur, je n'ai pas encore fait le menage .
Merci pour vos eventuelles lumieres quant à ce phenomene particulier.

<head>
	<script type="text/javascript" src="http://localhost/DOP/Code DOP/prototype.js"></script>
</head>
<script type="text/javascript" src="fonctions_JS.js"></script>


<form action="div.php" Method="POST" name="form_programme">
<?php

// Recuperation de l'id envoyé en parametre de la page listing_programme.php à l'aide de GET 
$num=$_GET['id_programme'];
echo $num;
// Connexion à MySQL
mysql_connect("localhost", "root");
// Sélection de la base
mysql_select_db("dop"); 	
// Requête SQL d'apres l'id concerné et le programme choisi
$sql = 'SELECT * FROM programme  WHERE id_programme = '.$num; 
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

while($row= mysql_fetch_assoc($req)){

$nom_programme =$row["nom_programme"];
$responsable_programme =$row["responsable_programme"];
$commentaire_programme= $row["commentaire_programme"];
$chemin_fichier_programme =$row["chemin_fichier_programme"];
$id_thematique =$row["id_thematique"];
$id_op =$row["id_op"];
$row["id_op"]=$id_op;
}
?>

<table style="empty-cells:collapse" border="0" align="center" cellpadding="5" cellspacing="2" bgcolor="#39A641" class="Style1">
 <!--////////////////////////////////////  Saisie du programme ///////////////////////////////////:-->
		
	<tr id="" style="bgcolor:#39A641; font-color:#ffffff;">
				<td><span class="Style4"><strong>Saisie d'un programme </strong></span>
				</strong></td>
			</tr>
			


<tr bgcolor="#FFFFFF">
					<td width="100" height="40" align="left"><strong>Thematique</strong></td>
					<td width="0" height="40"bgcolor="#FADCE9">
					
<!--/////// Select box thematique //////-->					
					<select name="id_thematique" class="Style1">	
					
<?php						
$sql2='SELECT * FROM thematique' ;
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error()); 

while($row2=mysql_fetch_array($req2)){ 
$ligne= $row2 ['id_thematique']; 
$lib_ligne= $row2 ['nom_thematique']; 
$txt_select='';
if ( $ligne== $id_thematique){
$txt_select='selected';
}
echo '<option  value="'.$ligne.'" '.$txt_select.'>'.$lib_ligne.'</option>';

}
?>					
						</select>
						
<!--////// Fin Select box thematique //////-->
					</td>
			</tr> ;	  
		<tr id="" style="bgcolor:#39A641; font-color:#ffffff;">
				<td width="150" height="40" align="left"><strong>Nom du programme</strong></td>
				<td width="10" height="40" bgcolor="#FADCE9">
				<input class="Style1" type="text" value="<?php echo $nom_programme ?>" name="nom_programme" size="40" maxlength="80"/>
		</td>
			</tr>

	  
	<tr bgcolor="#FFFFFF">
				<td width="150" height="40" align="left"><strong>Responsable du programme </strong></td>
				<td width="0" height="40" bgcolor="#F7CADD">
					<input class="Style1" type="text" value="<?php echo $responsable_programme ?>" name="responsable_programme" size="40" maxlength="50" />

					
					
<!--/////// Select box op //////-->
				<select name="id_op"  class="Style1">
				
<?php						
$sql3='SELECT * FROM op O, programme P WHERE o.id_programme = P.id_programme' ;
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req3 = mysql_query($sql3) or die('Erreur SQL !<br />'.$sql3.'<br />'.mysql_error()); 

while($row3=mysql_fetch_array($req3)){ 
$ligne3= $row3 ['id_op']; 
$lib_ligne3= $row3 ['niveau_op']; 
$txt_select3='';
if ( $ligne3== $id_op){
$txt_select3='selected';
}
echo '<option  value="'.$ligne3.'" '.$txt_select3.'>'.$lib_ligne3.'</option>';

}
?>						
 </select>
<!--/////// Fin Select box op //////-->
		
</tr> 			
	</td>
		</tr>
			
		
<!-- //////////////////////////////////         Commentaire et fichier lie, et Validation Submit       //////////////////////////////////// -->
	  
	  
			<tr bgcolor="#FFFFFF">
				<td width="150" align="left"><strong>Commentaire: </strong></td>
				<td width="10" height="100" bgcolor="#FADCE9">
	<textarea  name="commentaire_programme" cols="90" rows="5" class="Style1"><?php echo $commentaire_programme ?></textarea></td>
			</tr>
      
			<tr>
				<td width="150" height="50" align="left"bgcolor="white"><strong>Lier un fichier: </strong></td>
				<td width="0" height="40" bgcolor="#F7CADD"><?php echo $chemin_fichier_programme ?>
					<input value="" name="chemin_fichier_programme" type="file" class="Style1" size="50">
					<?php echo $chemin_fichier_programme ?>
					</input>
				</td>
			</tr>
	<tr bgcolor="#FFFFFF">
				<td colspan="2" align="center"  bgcolor="#FADCE9">
					<label>
						<input type="submit"  value="Enregistrer" />
					</label>			
				</td>
			</tr>
	</table>
</form>

<!--////////////////////////////onClick="javascript:insertProg()" /////////////////////////////////////:-->	


<?php
$num=$_GET['id_programme'];


$num=$_POST['.id_programme.'];
$nom_programme=$_POST['.nom_programme.']; 
$responsable_programme=$_POST['.responsable_programme.'];
$commentaire_programme=$_POST['.commentaire_programme.'];
$chemin_fichier_programme=$_POST['.chemin_fichier_programme.'];
$id_thematique=$_POST['.id_thematique.'];
$id_op=$_POST['.id_op.'];	




				
							
			
					//Requete UPDATE pour modifier les renseignements dans la table 
					 mysql_query("UPDATE programme 
					 SET nom_programme='".mysql_escape_string($_POST['nom_programme'])."',
					 responsable_programme='".mysql_escape_string($_POST['responsable_programme'])."',
					 commentaire_programme='".mysql_escape_string($_POST['commentaire_programme'])."', 
					 chemin_fichier_programme='".mysql_escape_string($_POST['chemin_fichier_programme'])."',
					 id_thematique='".mysql_escape_string($_POST['id_thematique'])."',
					 id_op='".mysql_escape_string($_POST['id_op'])."'
					 WHERE id_programme='".$num."'") ;

 
					
					
					
					//Récupération des résultats de la requête	
					$query_results = mysql_query($query);
										
					if($query_results ==1 )
					{echo "ok ok";}
					else{
					echo "Ajout impossible : ".mysql_errno()." : ".mysql_error()."<br />";}
					// Déconnexion de la base de donnees
					mysql_close();
			
			
			
			
?>


<?php include"footer.php";?>
A voir également:

4 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
25 sept. 2008 à 14:37
Bonjour

cette partie du code est un petit peu louche

$num=$_GET['id_programme'];


$num=$_POST['.id_programme.'];


d'abord $num prend la valeur en $_GET puis apres elle prend celle en $_POST... c'est du GET ou du POST ? parceque dans ton num si ça ce trouve il n'y a rien au final d'autant plus que tu met des point je sais pas trop pourquoi ?

0
nicusjam Messages postés 36 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 21 juillet 2011 11
25 sept. 2008 à 14:43
oui ca fait partie des tests que je fais, j'avoue que je suis debutant et brouillon. mais meme en enlevant le $num=$_POST['.id_programme.']; j'ai le meme resultat , a ceci pres qu'en plus de la ligne qui reprend les infos de la ligne d'avant et prend une id +1, j'ai aussi une ligne vide qui apparait
0
nicusjam Messages postés 36 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 21 juillet 2011 11
25 sept. 2008 à 14:52
hé au fait, MERCI Mimiste pour ta reponse, c'est sympa de prendre un peu de temps pour les autres !
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
25 sept. 2008 à 14:54
Donc ton action quand tu clic sur le bouton c'est div.php

dans cette page tu essai de recuperer

$num=$_GET['id_programme'];

Mais dans ton formulaire nulle part tu n'envoi quoi que ce soit en GET

ce $_GET['id_programme'] d'ou sort t'il ?
0
nicusjam Messages postés 36 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 21 juillet 2011 11
25 sept. 2008 à 15:04
en fait je recupere d'un autre fichier mon id programme avec
<INPUT TYPE="button" value="M" class="boutonModifier" 
					onClick="window.location=\'programme_modif.php?id_programme='.$resultat5.'\' "> 
				</input>';


$resultat5 est mon id_programme dans mon fichier listing. je renvoie l'id et je le recupere en GET avec $num. j'ai fais des echo et c'est bien ca ca fonctionne
Je m'en sers deux fois en plus de $num, donc y'avait interet que ca soit ca . mais là je seche un peu ...
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
25 sept. 2008 à 15:19
Oui je suis d'accord, mais quand tu submit ton formulaire, tu ne l'envoi pas la variable $num donc elle ne peux pas etre recupérée sur ta nouvelle page (celle qui fais l'update)
0
nicusjam Messages postés 36 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 21 juillet 2011 11
25 sept. 2008 à 17:32
Bonjoir à tous.
Mon probleme est resolu j'ai en fait demantele tout mon code et tout recommencé etape par etape.
Et ca fonctionne. N'empeche qu'un Update se comportant comme un Insert ca interpelle tellement c'est pas naturel. Merci à toi Mimiste pour ton aide et ton temps. Merci à cette communauté de dev' de tous poils et autres olibrius, ca fait avancer d'avoir du support ! 'rci !
0