Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2006, 13h19   #1
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Par défaut [Conception] Problème de requete update

Bonjour,

J'ai une requete update qui ne veut pas marcher

Code :
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
 
<HTML>
 
	<HEAD>
		<TITLE></TITLE>
	</HEAD>
 
	<BODY>
	    <p align=center><font face="Comic Sans MS" size="3" color=#000000>Mise à jour film</font>
	    <?
	    require ("../connect.php");
	    mysql_connect (SERVEUR, NOM, PASSE) or die(mysql_error);
       	    mysql_select_db (BASE) or die(mysql_error);
 
	    $titre = addslashes($_POST['titre']);
	    $genre = addslashes($_POST['genre']);
	    $position = addslashes($_POST['position']);
	    $emprunteur = addslashes($_POST['emprunteur']);
 
	    // on modifie le nom, genre, position
	    $requete = "UPDATE films SET numfilm=null, nomfilm='".$titre."', genrefilm='".$genre."', posfilm='".$position."' WHERE nomfilm='".$titre."';";
	    $res = @mysql_query ($requete);
 
	    if ($res)
           {
	            echo 'Mise à jour réussie';
	            // on modifie l'emprunteur
	    		$req = "UPDATE emprunteur SET numemp=null, nomemp='".$emprunteur."', nomfilm=null WHERE nomfilm='".$titre."';";
	    		$resultat = @mysql_query ($req);
	            if ($resultat)
	            	{
		            	echo 'Mise à jour réussie';
	                }
		        else
		        	{
		        		echo '<p align=center><font face="Comic Sans MS" size="3" color=#000000>Impossible d\'exécuter la requête de modif de l\'emprunteur :</font> ' . mysql_error();	
	            	}
           }
		else
		   {
				echo '<p align=center><font face="Comic Sans MS" size="3" color=#000000>Impossible d\'exécuter la requête de mise à jour :</font> ' . mysql_error();
                exit; 		  
		   }
	?>
	</BODY>
 
</HTML>
J'arrive à modifier le genre et le numéro mais bizarrement je n'arrive pas à modifier le titre ni le nom de l'emprunteur pourtant je n'ai aucun message d'erreur

Quelqu'un peut m'aider svp ?

Merci d'avance...
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h22   #2
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
t'as essayé de mettre une valeur en dur dans nomemprunteur pour savoir si tu as des données
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h30   #3
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par gseverin
t'as essayé de mettre une valeur en dur dans nomemprunteur pour savoir si tu as des données
Je viens de mettre un nom en dur et j'obtiens ce message:

Code :
1
2
 
Impossible d'exécuter la requête de mise à jour : Duplicata du champ '0' pour la clef 1
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h33   #4
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
tu essayes apparement d'inserer un champ en double alors que ton champ doit être défini comme valeur unique :

regarde la définition de ton champ en base de données.
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h35   #5
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par gseverin
tu essayes apparement d'inserer un champ en double alors que ton champ doit être défini comme valeur unique :

regarde la définition de ton champ en base de données.
nomemp c'est varchar(30) et NULL=oui ça aide ?
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h39   #6
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
non , est-ce qu'il est unique ou non ton champ ??

regarde si c'est une primary key

tu dois certainement avec une valeur 0 en base

et tu essayes d'en inserer une autre
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h43   #7
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par gseverin
non , est-ce qu'il est unique ou non ton champ ??

regarde si c'est une primary key
En fait je crois que ma requete insert "0" comme identifiant pour chaque film modifié et comme j'ai un film "test" ayant déjà "0" comme identifiant ça bloque, non ? Peut-etre qu'il faut que je modifie ma requete SQL, non ?

EDIT: Non c'est pas une clé primaire
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h45   #8
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
surement

tu as défini ce champ en index unique ?
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h46   #9
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par gseverin
surement

tu as défini ce champ en index unique ?
Non je ne crois pas
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h47   #10
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Citation:
Envoyé par Jiraiya42
Je viens de mettre un nom en dur et j'obtiens ce message:

Code :
1
2
 
Impossible d'exécuter la requête de mise à jour : Duplicata du champ '0' pour la clef 1
apparement si , puisqu'il te parle de la clef1
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h50   #11
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
pour lever la polémique, affiche nous le schema de ta table
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 13h54   #12
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Code :
1
2
3
4
5
6
7
 
CREATE TABLE `emprunteur` (
  `numemp` int(11) NOT NULL default '0',
  `nomemp` varchar(30) default NULL,
  `nomfilm` varchar(60) default NULL,
  PRIMARY KEY  (`numemp`)
) TYPE=MyISAM;
Code :
1
2
3
4
5
6
7
8
 
CREATE TABLE `films` (
  `numfilm` int(11) NOT NULL auto_increment,
  `nomfilm` varchar(60) NOT NULL default '',
  `genrefilm` varchar(30) NOT NULL default '',
  `posfilm` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`numfilm`)
) TYPE=MyISAM AUTO_INCREMENT=122 ;
Voilà ce sera ptet plus clair
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h08   #13
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Code :
1
2
3
4
5
6
7
CREATE TABLE `films` (
  `numfilm` int(11) NOT NULL auto_increment,
  `nomfilm` varchar(60) NOT NULL default '',
  `genrefilm` varchar(30) NOT NULL default '',
  `posfilm` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`numfilm`)
) TYPE=M
tu as mis numfilm en primary key et tu essayes d'y inserer 0 alors que ce champ existe deja
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h09   #14
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par gseverin
Code :
1
2
3
4
5
6
7
CREATE TABLE `films` (
  `numfilm` int(11) NOT NULL auto_increment,
  `nomfilm` varchar(60) NOT NULL default '',
  `genrefilm` varchar(30) NOT NULL default '',
  `posfilm` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`numfilm`)
) TYPE=M
tu as mis numfilm en primary key et tu essayes d'y inserer 0 alors que ce champ existe deja
Oui mais justement comment faire pour que ma requete laisse le numéro identifiant tel quel plutot que de le mettre à 0 svp ?
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h12   #15
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
tu laisse faire mysql tu inseres rien dans ce champ et tu mets ce champ en auto increment

ou plutot tu bases ta primary key sur 2 champs

numfilm`
`nomfilm`

c possible
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h14   #16
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
moi je sais pas laquelle de tes requetes ne marche pas. en fait je vois deux requetes update
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h17   #17
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
on se base sur son message d'erreurs
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h19   #18
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Citation:
Envoyé par gseverin
tu laisse faire mysql tu inseres rien dans ce champ et tu mets ce champ en auto increment

ou plutot tu bases ta primary key sur 2 champs

numfilm`
`nomfilm`

c possible
J'ai mis ça :

Code :
1
2
 
$req = "UPDATE emprunteur SET nomemp='test', nomfilm='' WHERE nomfilm='".$titre."';";
Visiblement plus d'erreur mais impossible de changer le nom de l'emprunteur grrrr
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h20   #19
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
est ce que ton emprunteur existe dans la table emprunteur
  Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 14h21   #20
Membre habitué
 
Avatar de Cyberbob002
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 130
Points : 130
Normal, le nom de ton emprunteur vaut toujours "test" dans ta requête !!
Cyberbob002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h16.


 
 
 
 
Partenaires

Hébergement Web