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

PHP & Base de données Discussion :

Problème avec une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut Problème avec une requête
    Bonjour à tous,

    J'ai un petit prob avec ma base de donnée et mon code, je fais une requête sql et celle-ci fonctionne. Plus exactement un UPDATE, je l'ai testé directement dans phpmyadmin tout est nickel.
    Je fais la même requête dans mon code php, elle fonctionne aussi, mais elle me retourne une erreur du genre "You have an error in your SQL syntax", or la modif ce fait dans la base de données.

    Je comprend pas ou est le prob.

    Merci

  2. #2
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    Donne nous le code qui génere l'erreur.

  3. #3
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    Oui sans ta requête pas facile de voir où est le problème...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Salut ToutPaumé,

    Voilà la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sqlupd="UPDATE moniteurs SET login='$login', pass='$pass', nom='$nom', prenom='$prenom' WHERE id_user='$user_id' ";
    mysql_query($sqlupd) or die (mysql_error());
    Je vois pas pq elle s'exécute et pq elle me retourne une erreur de syntax

    Merci pour le coup de pouce

  5. #5
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    1ère chose
    je pense que le problème vient de ton where
    essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE id_user=$user_id
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE id_user='$user_id'
    car je supose que ton id_user est de type integer (auto_increment)

    et en second
    vérifie si tu as bien des valeurs ds tes variables
    avec ton mysql_query($sqlupd)
    ajoute ceci à ton code

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Salut Jaduta,

    Je viens de faire ce que tu me dis, alors l'enregistrement ce fait toujours dans ma table et j'ai toujours la même erreur qui s'affiche.

    Et oui sqlupd contient bien des données et le tout est correcte, d'où mon incompréhension face à ce message d'erreur.

  7. #7
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    Rassure-moi
    tu appeles bien ta connexion à la base de données MySql???

    si oui essaye un peu ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sqlupd="UPDATE moniteurs SET login=\"$login\", pass=\"$pass\", nom=\"$nom\", prenom=\"$prenom\" WHERE id_user=$user_id ";
    mysql_query($sqlupd);
    if (mysql_affected_rows() > 0)
    {
    mysql_query("COMMIT");
    }
    else
    {
    mysql_query("ROLLBACK");
    }

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Re Jaduta,

    Citation Envoyé par jaduta Voir le message
    Rassure-moi
    tu appeles bien ta connexion à la base de données MySql???
    Oui no stress, sinon lol je n'aurais pas d'enregistrement, le code est bon l'update ce fait bien dans la table. Le prob est simplement ce message d'erreur à la fin.
    Sinon attend je vais essayé ta solution et te dit quoi de suite.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Rien exactement la même chose ma modification ce fait, mais j'ai toujours le message d'erreur à la fin.

  10. #10
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    Tu es sur que l'erreur vient de cette requête la, et pas d'une autre dans ton code?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Bienvu ToutPaumé,


    L'erreur vient bien d'une autre requête mais l'erreur ne s'affiche que quand j'ai enregistrer ma modification. Je look et vous dit quoi dans quelques minutes.

  12. #12
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 905
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 905
    Points : 14 822
    Points
    14 822
    Par défaut
    Quelle est l'erreur retournée exactement ? L'erreur complète et non pas un morceau.

    Rajoute en plus dans ton die() la requête exécutée, ce qui permettra de voir où est l'erreur. Dans ton code PHP on ne la voit pas forcément, surtout si tes variables sont vides :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($sqlupd) or die ('Requête : '.$sqlupd.'<br />Erreur : '.mysql_error());

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Voici l'erreur qu'il me retourne exactement enfin d'exécution du script, or l'enregistrement ce fait correctement.

    Requête :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    J'ai bien regardé je ne vois pas d'erreur de syntax.

  14. #14
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 905
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 905
    Points : 14 822
    Points
    14 822
    Par défaut
    Heu, si je lis bien ton post, la requête est vide ..

  15. #15
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    Mets un peu tout ton code
    car ca ne nous aide pas...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Voici le code au complet, il fonctionne sauf que j'ai cette erreur qui apparait à la fin, malgré que l'update se passe correctement.

    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
    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
    171
    172
    173
    174
    175
     
    <?php
    	session_start(); // On relaye la session
     
    	require_once('../config/config.php');
    	if (session_is_registered("authentification")&& $_SESSION['privilege'] == 6){ 
     
    	}
    	else {
    		header("Location:index.php?erreur=intru"); // redirection en cas d'echec
    		return false;
    	}
     
    	// Connexion SQL
    	mysql_select_db($database_ircxl, $ircxl);
     
    	// Assignation variables
    	$insert_login = $_POST['login'];
    	$insert_nom = $_POST['nom'];
    	$insert_prenom = $_POST['prenom'];
    	$insert_pass = $_POST['pass'];
    	$insert_confirm = $_POST['confirm'];
    	$insert_priv = $_POST['privilege'];
    	$insert_id=$_POST['idpmono'];
     
    	echo '<html>
    		<head>
    		<title> Modification moniteurs </title>
    		<link rel="stylesheet" href="stylepage.css" />
    		</head>
    		<script type="text/javascript" src="functions.js"></script>
    		<body>';
     
    	if (isset($_POST['add']))
    	{
    		if (!isset($insert_login) || !preg_match('![a-z]{3}!i',$insert_login)) {
    			echo 'erreur : le nom ne doit pas contenir de chiffres et doit être plus long que 3 lettres';
    			return false;
    		}
     
    		if (!isset($insert_nom) || !preg_match('![a-z]{3,20}!i',$insert_nom)) {
    			echo 'erreur : le nom ne doit pas contenir de chiffres et doit être plus long que 3 lettres';
    			return false;
    		}
     
    		if (!isset($insert_prenom) || !preg_match('![a-z]!i',$insert_prenom)) {
    			echo 'erreur : le prénom ne peut être vide et ne peut contenir que des lettres';
    			return false;
    		}
     
    		if (!isset($insert_pass) || strlen($insert_pass) != 10) {
    			echo 'erreur : le champ mot de passe ne peut être vide et doit contenir 10 caracteres';
    			return false;
    		}
     
    		if (!isset($insert_confirm) || strlen($insert_pass) != 10) {
    			echo 'erreur : le champ de confirmation ne peut être vide et doit contenir 10 caracteres';
    			return false;
    		}
     
    		if ($insert_pass !== $insert_confirm) {
    			echo 'erreur : la confirmation ne correspond pas avec le mot de passe';
    			return false;
    		}
     
    		switch ($insert_priv)
    		{
    			case "6" :
    			$priv_verif = true;
    			break;
     
    			case "4" :
    			$priv_verif = true;
    			break;
     
    			case "3" :
    			$priv_verif = true;
    			break;
     
    			case "5" :
    			$priv_verif = true;
    			break;
     
    			case "1" :
    			$priv_verif = true;
    			break;
     
    			case "2" :
    			$priv_verif = true;
    			break;
    		}
     
    		if ($priv_verif != true) {
    			echo 'erreur : le privilege choisi est incorrect';
    			return false;
    		}
    		$pswa = md5($insert_pass);
    		$pswb = md5($passe);
    		$insert_psw = $pswb&$pswa;
    		$sqlupd=" UPDATE moniteurs SET login='$insert_login', pass='$insert_psw', nom='$insert_nom', prenom='$insert_prenom', privilege='$insert_priv' WHERE id_user=$insert_id ";
    		mysql_query($sqlupd, $ircxl) or die (mysql_error());
    		echo "$sqlupd";
    	}
    	//Code pour l'affichage de liste sélection profs
     
    		$query_affmono = 'SELECT * FROM utilisateurs ORDER BY login ASC'; // Récupération de la liste des logins par ordre ascendant
    		$affmono = mysql_query($query_affprof, $ircxl) or die ("test"); //Envoi de la requête vers la base de données
     
    		echo'<form action"'.$_SERVER['PHP_SELF'].'" method="post">
    			sélectionner un sigle :
    			<select name="selectmono" onchange="this.form.submit();"><option value="">mono</option>';
     
    						while ($array_monos = mysql_fetch_array($affmono))
    						echo'<option value="'.$array_monos['id_user'].'">'.$array_mono['login'].'</option>';
     
    	echo 	'</select>
    		</form>';
     
    	//Récupération des données du profs sélectionner
     
    		if (!empty($_POST))
    		{
    		$query_donmono='SELECT * FROM moniteurs WHERE id_user='.$_POST['selectmono']; 
    		$affdonmono=mysql_query($query_donmono) or die ('Requête :'.$affdonmono.'<br />Erreur :'.mysql_error());
    		$array_affmono=mysql_fetch_array($affdonmono);
    		}
     
    	echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">
    			<table cellpadding="0" cellspacing="0" width="100%">
    				<tr>
    					<td class="titreTableau" colspan="2"><input type="hidden" name="add" value="1" />Modifier un utilisateur</td>
    				</tr>
    				<tr>
    					<td class="intitules">Login</td>
    					<td class="champs"><input name="login" type="text" value="'.$array_affmono['login'].'"/></td>
    				</tr>
    				<tr>
    					<td class="intitules">Nom</td>
    					<td class="champs"><input name="nom" type="text" value="'.$array_affmono['nom'].'"/></td>
    				</tr>
    				<tr>
    					<td class="intitules">Prenom</td>
    					<td class="champs"><input name="prenom" type="text" value="'.$array_affmono['prenom'].'"/></td>
    				</tr>
    				<tr>
    					<td class="intitules">Mot de passe</td>
    					<td class="champs"><input name="pass" type="text" /></td>
    				</tr>
    				<tr>
    					<td class="intitules">Répeter mot de passe</td>
    					<td class="champs"><input name="confirm" type="text" /></td>
    				</tr>
    				<tr>
    					<td class="intitules">Privilège</td>
    					<td class="champs">
    						<select name="privilege" />
    							<option value="0">Sélection</option>
    							<option value="1">Utilisateur</option>
    							<option value="6">Administrateur</option>
    							<option value="4">chefmono</option>
    							<option value="3">respsec</option>
    							<option value="5">Directeur</option>
    							<option value="2">moniteurs</option>
    						</select>
    					</td>
    				</tr>
    				<tr>
    					<input type="hidden" name="idprof" value="'.$array_affmono['id_user'].'" /></td>
    				</tr>
    				<tr>
    					<td class="champs" colspan="2"><input type="submit" value="Envoyer" /></td>
    				</tr>
    			</table>
    		</body>
    		</html>';

  17. #17
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 905
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 905
    Points : 14 822
    Points
    14 822
    Par défaut
    Sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $affdonmono=mysql_query($query_donmono) or die ('Requête :'.$affdonmono.'<br />Erreur :'.mysql_error());
    Ce n'est pas $affdonmono qu'il faut mettre dans le die(), mais $query_donmono si tu veux voir la requête.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Ok,

    Voici ce qu'il me retourne :


    Requête : SELECT* FROM moniteurs WHERE id_user=
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    Pour moi il refait le SELECT hors il ne devrait plus l'utiliser.

    Ok, j'ai compris et j'ai trouvé. Un tout grand merci à tous

  19. #19
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 905
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 905
    Points : 14 822
    Points
    14 822
    Par défaut
    Ton $_POST['selectmono'] est vide, voilà tout.

    Et pourquoi il ne devrait pas faire le SELECT ?

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 112
    Points : 73
    Points
    73
    Par défaut
    Merci, ton post à croisé le mien et je venais de le faire à l'instant. Genre d'erreur que l'on a sous les yeux et que l'on mets des heures à retrouver.

    Encore un tout grand merci à tout le monde.

    ++

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

Discussions similaires

  1. [TADOQuery] Problème avec une requête
    Par yannba dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/01/2006, 14h51
  2. Problème avec une requête
    Par demonark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2005, 06h35
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 21h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 13h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 11h29

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