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 :

Erreur de syntax mysql


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     $nom=mysql_result($res,$i,0);
    ne marche apparement pas, et je ne sais pas pourquoi.

    Au final j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      "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 : 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
    <?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>';
     
    } 
     
    ?>

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Tu as omis des guillements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query="insert into acces (id_acces, idchiffrage, nom, droit) values ('','$idchiffrage' ,'$nom','lecture/ecriture')";

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('mysql.trace_mode', true);

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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 ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    lit bien la doc de mysql_free_result

    le trace_mode est a mettre juste avant ton mysql_connect

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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...

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu testes pas si $resultat renvoie false ou une ressource

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    "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...

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    mais tu test toujours pas la...

    fais des var_dump($resultat, mysql_error()) tu verras bien

  11. #11
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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) ""

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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

  13. #13
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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.

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    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

  16. #16
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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à

  17. #17
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  18. #18
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     while( $row = mysql_fetch_assoc(req_rap))

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     while( $row = mysql_fetch_assoc(req_rap))
    $res à la place de $req_rap

    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

  20. #20
    Candidat au Club
    Inscrit en
    Avril 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 20
    Points : 3
    Points
    3
    Par défaut
    Non disons que je veuille donné les droits d'accès à tout les chiffrages (bonjour la durée de chargement xd)...

Discussions similaires

  1. erreur de syntaxe Mysql sur jointure ?
    Par evevev dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/08/2010, 17h00
  2. [MySQL] Erreur de syntaxe MySQL
    Par Yuumu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/12/2008, 18h19
  3. Erreur de syntaxe MySQL
    Par lola13 dans le forum Requêtes
    Réponses: 19
    Dernier message: 23/12/2008, 17h15
  4. [MySQL] (Encore une) Erreur de syntaxe MySQL
    Par n1n0x dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/04/2008, 18h30
  5. Erreur de syntaxe MySQL
    Par lynal dans le forum Requêtes
    Réponses: 9
    Dernier message: 30/05/2006, 10h31

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