begin process at 2008 08 22 01:02:27
1 229 731 membres
3 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Erreur très bizarre [ MySQL / Requêtes ] (Infernus32)

Erreur très bizarre le 19/06/2007 19:22:27

Infernus32

Bonjour,

Voilà plusieurs heures que cherche une solution à mon promlème, sans succès !

En fait, mon script récupère la "classe CPU" (c'est à dire 'x86' pour un CPU 32 bits ou 'x64' pour un 64 bits) en JavaScript puis l'ajoute à ma table avec l'heure.

Or le problème est que j'obtiens une erreur SQL : "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 'Javascript'> document.write(navigator.cpuClass); ')' at line 1".
Alors que lorsque j'ajoute juste la variable 'date' sans la variable 'cpu', ça marche !
J'ai affiché les valeurs de toutes les variables (date, cpu et sql) avec un echo mais tout à l'air bon.
 
Je vois vraiment pas pourquoi ça bug, ça vient peut être du JS ???

Merci de m'éclairer un peu car là je comprend plus rien

Voici le code :

$date = date('U');
$cpu = "<script language='Javascript'> document.write(navigator.cpuClass); </script>";

include "sql.php";  // fichier de connection à la BDD SQL

$sql = "INSERT INTO ltable (date,cpu) VALUES('$date','$cpu')";

mysql_query($sql) or die('Erreur SQL !<br><br>'.mysql_error());


Re : Erreur très bizarre le 21/06/2007 17:11:14

the_wwt
Bonjour,
et bien c'est plutôt évident le message correspond...Tu as des quote dans ta variable cpu...
Je crois qu'il existe une fonction du genre escape_quote...
En fait ta requete est celle ci:
INSERT INTO ltable (date,cpu) VALUES('date('U')','<script language='Javascript'> document.write(navigator.cpuClass); </script>')
Donc je pense que ça ne peux pas marcher...
Cdlt,
Pierrick

Re : Erreur très bizarre le 22/06/2007 12:02:10

Infernus32
Merci de ta réponse. J'ai donc enlevé les quote aux extrémités de la variable cpu.

La requete ne renvoie plus d'erreur mais lorsque je regarde ce qui a été stocké dans la table, ce n'est pas la valeur de la variable cpu mais la ligne de code JS, c'est à dire ça : "<script language='Javascript'> document.write(navigator.cpuClass); </script>" alors qu'il devrait y avoir "x86" par exemple.

Avez vous une idée pour éviter ce problème, ou existe une autre méthode pour récupérer une variable JavaScript en PHP ?

Je débute en PHP  
Merci

Re : Erreur très bizarre le 22/06/2007 14:19:38

the_wwt
Bonjour,
je crois que tu te trompes profondément...
Le code javascript contenu dans ta variable cpu - s'il est envoyé sur la page du client - écrit dans le document la classe du CPU.
Mais toi tu ne récupères jamais cette information en php... Tu saisis?
Il te faut envoyer cette info dans une requete au serveur soit en ajax soit en redirigeant l'utilisateur vers une page en php à laquelle tu lui donne en paramètre. Dans cette page, tu récupères ce paramètre et là tu execute ton insert...
Si tu débutes...bon courage.
Cdlt,
Pierrick

Re : Erreur très bizarre le 22/06/2007 16:22:06

Infernus32

Je crois avoir compris pourquoi mon code n'avait aucune chance de fonctionner : le JS est exécuté chez le client et le serveur ne peut donc pas connaître la valeur de la variable cpu, c'est bien ça ?

J'ai donc suivi ton conseil d'envoyer la valeur de la variable cpu en paramètre, mais j'ai utilisé la méthode POST et non GET pour que ce soit plus "transparant" (c'est à dire que la variable cpu ne soit pas affichée dans l'url).

Malheureusement, j'obtiens toujours une erreur de syntaxe lors de la requete !

Voici le code :

<?php

$add = (isset($_POST['add']))?$_POST['add']:0;  // on récupère l'éventuelle variable postée

if($add==0)
{
?>

<form name="form" method="post" action="">
  <input name="add" type="hidden" value="1">
  <input name="cpu" type="hidden" value="<script language='Javascript'> document.write(navigator.cpuClass); </script>">
  <input type="submit" name="Submit" value="Envoyer">
</form>

<?
}

else
{ // ajout des infos à la table

// on récupère les infos
$date = date('U'); 
$cpu = (isset($_POST['cpu']))?$_POST['cpu']:"Inconnu";

include "sql.php";

$sql = "INSERT INTO table (date,cpu) VALUES ('$date','$cpu')";

mysql_query($sql) or die('Erreur SQL !<br><br>'.mysql_error());  // erreur de syntaxe lors de cette requete

mysql_close();
}

?>



Classé sous : date, mysql, erreur, sql, cpu

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Boutique

Boutique de goodies CodeS-SourceS