Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 26/04/2011, 11h20   #1
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Par défaut Erreur de syntax mysql

Bonjour,
Je travaille sur une fonction qui permettrai de redistribuer des accès à un certain type de personne (les RAP). J'ai donc utilisé un while pour sélectionner les noms des RAP (et seulement de ceux-ci) et rendre effectif la mise en accès des chiffrage pour ceux-ci.
Seulement cette ligne
Code :
 $nom=mysql_result($res,$i,0);
ne marche apparement pas, et je ne sais pas pourquoi.

Au final j'ai cette erreur :
Code :
  "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 'XXXXX,'lecture/ecriture')' at line 1"
XXXXX correspond au nom du premier RAP.

Voici le programme complet :

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
include('include/MySQL.php');
$cnx=connect();
 
if (!isset($_POST['id']))
{
	$id=0;
	echo"effacement<br/>";
 
	echo '<form action="accesv2.php" method="post">';
	echo'<input type="hidden" name="id" value="'.$id.'">';
	echo'<input type="submit" name="continuer" value="continuer">';
	echo'</form>';
}
else
{
		$req_rap= "select nom from utilisateur where isRAP=1";
		$res=sendSQL($cnx,$req_rap);
		$test=mysql_num_rows($res);
 
	$query="select idchiffrage from chiffrage";
	$resultat=sendSQL($cnx,$query);
	$nbr=mysql_num_rows($resultat);
	$n=$_POST['id'];
	$id=$n+100;
	$nbr_req=1;
	echo '<table>
			<tr><td>';
 
	$i=0;
 
 
	while($test>$i)
	{
		$nom=mysql_result($res,$i,0);	
		while($n <= ($nbr-1) and $n < $id)
		{
			$idchiffrage=mysql_result($resultat,$n,'idchiffrage');
			$query="insert into acces (id_acces, idchiffrage, nom, droit) values ('',$idchiffrage ,$nom,'lecture/ecriture')";
			$res=sendSQL($cnx,$query);
			echo "chiffrage n° $idchiffrage -- ";
			echo "n° $n <br/>";
			$n++;
			$nbr_req=$nbr_req+5;
		}
		$i++;
	}
	echo "$nbr_req requetes sql <br/>";
	echo '</td>';
	echo'<td VALIGN=TOP align=center>';
 
	if($n!=$nbr)
	{
		echo '<form action="accesv2.php" method="post">';
		echo'<input type="hidden" name="id" size="6" value="'.$id.'">';
		echo'<input type="submit" name="continuer" value="continuer">';
		echo'</form>';
	}
	else
	{
		echo "<b> les acces ont été redistribués </b>";
	}
	echo'</td></tr></table>';
 
} 
 
?>
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 13h20   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Tu as omis des guillements:
Code :
1
2
 
$query="insert into acces (id_acces, idchiffrage, nom, droit) values ('','$idchiffrage' ,'$nom','lecture/ecriture')";
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 13h59   #3
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Ah oui exact ! Mais de là on en arrive à l'erreur originale :

"Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\wamp\www\chiffrage\accesv2.php on line 37"

Ce message apparait 7 fois par pages... Et l'attribution des accès n'a pas lieu.
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 14h17   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu ne test pas si ta requête renvoie bien un résultat ou pas (donc fausse ou pas), active le mysql.trace_mode

Code :
ini_set('mysql.trace_mode', true);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 14h47   #5
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Apparement non.

"Warning: (null)(): 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0"

Il ne comprend pas ma variable $nom c'est ça ?
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 14h52   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
lit bien la doc de mysql_free_result

le trace_mode est a mettre juste avant ton mysql_connect
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 15h17   #7
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
J'ai essayé de rajouter un mysql_free_result($res); mais ça n'a fait que rajouter des erreurs...

Ensuite le trace mode ne renvois rien...
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 16h06   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu testes pas si $resultat renvoie false ou une ressource
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 16h35   #9
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
"Warning: mysql_free_result(): 5 is not a valid MySQL result resource in C:\wamp\www\chiffrage\accesv2.php on line 44"

Voilà pour $resultat... no comprendo, car ça marchait avant que je boucle le $nom...
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 16h38   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
mais tu test toujours pas la...

fais des var_dump($resultat, mysql_error()) tu verras bien
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 16h51   #11
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
J'aurai peut être du préciser que je n'étais pas un as en débugage non plus...

Pour $resultat j'ai : resource(5) of type (mysql result) string(0) ""

et $res : resource(4) of type (mysql result) string(0) ""
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h02   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
j'ai plus l'impression que c'est ta boucle qui n'est pas bonne, et tout ton code ne sert pas a grand chose puisque que tu peux faire tout ca en 1 seule requete
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h08   #13
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Citation:
Envoyé par stealth35 Voir le message
j'ai plus l'impression que c'est ta boucle qui n'est pas bonne, et tout ton code ne sert pas a grand chose puisque que tu peux faire tout ca en 1 seule requete
ce que tu dis m'interesse grandement, ça pourrait être un gain de temps en +... seulement tu parle de quelle requête? tu pourrais me donner un aperçu de ton idée stp?

Merci.
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h15   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Morronight Voir le message
ce que tu dis m'interesse grandement, ça pourrait être un gain de temps en +... seulement tu parle de quelle requête? tu pourrais me donner un aperçu de ton idée stp?

Merci.
on peut faire un INSERT INTO ... SELECT
couplé a la jointure ça sera OK
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h15   #15
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
peux tu donner la structure de tes tables utilisateurs et chiffrages car stealth à raison ms bon pour les conditions de jointure avoir la structure de ta table serait mieux
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 09h11   #16
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Oui, alors :

Utilisateur :

idutilisateur -> int(11)
service -> varchar(32)
nom -> varchar(32)
password -> varchar(32)
adresse -> varchar(40)
jour -> int(11)
isRAP -> tinyint(1)

Chiffrage :

idchiffrage int(11)
numdp int(6)
avenant int(2)
variante int(2)
hypothesechiffrage char(2)
typepiece varchar(256)
rap varchar(32)
quantite int(11)
frequence varchar(4)
commentaire text
schema varchar(128)
fichier varchar(128)
valide tinyint(1)
capris tinyint(1)
hypotheseretenue tinyint(1)
etatSign tinyint(4)

Voilà
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 09h40   #17
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Si j'ai compris pour un id de chiffrage donné donné tu veux donner les droits d’accès en lecture écriture de cet id à id+100.

Du coup c'est faisable (non testé et fait rapidement) comme ça:

Code :
1
2
3
4
5
6
7
8
9
		$req_rap= "select nom from utilisateur where isRAP=1";
		$res=sendSQL($cnx,$req_rap);
 
		while( $row = mysql_fetch_assoc(req_rap)){
			$query='insert into acces(idchiffrage,nom,droit) 
						select idchiffrage,'.$row['nom'].',"lecture/ecriture" 
						where idchiffrage > '.$_POST['id'].' and idchiffrage < '.$_POST['id']+100;
			$res=sendSQL($cnx,$query);
		}
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 10h02   #18
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Ca me met un
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\chiffrage\accesv2.php on line 41"

Pour la ligne
Code :
 while( $row = mysql_fetch_assoc(req_rap))
Morronight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 10h14   #19
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Citation:
Envoyé par Morronight Voir le message
Ca me met un
"Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\chiffrage\accesv2.php on line 41"

Pour la ligne
Code :
 while( $row = mysql_fetch_assoc(req_rap))
$res à la place de $req_rap

Citation:
Si j'ai compris pour un id de chiffrage donné donné tu veux donner les droits d’accès en lecture écriture de cet id à id+100.
c'est bien ça que tu cherches à faire?
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 10h50   #20
Invité de passage
 
Inscription : avril 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 20
Points : 0
Points : 0
Non disons que je veuille donné les droits d'accès à tout les chiffrages (bonjour la durée de chargement xd)...
Morronight 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 07h00.


 
 
 
 
Partenaires

Hébergement Web