Erreur très bizarre

Infernus32 Messages postés 6 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 1 mai 2008 - 19 juin 2007 à 19:22
Infernus32 Messages postés 6 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 1 mai 2008 - 22 juin 2007 à 16:22
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 !

'.mysql_error());

4 réponses

the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
21 juin 2007 à 17:11
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
0
Infernus32 Messages postés 6 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 1 mai 2008
22 juin 2007 à 12:02
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
0
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
22 juin 2007 à 14:19
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
0
Infernus32 Messages postés 6 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 1 mai 2008
22 juin 2007 à 16:22
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="">
 
  document.write(navigator.cpuClass); </script>">
 
</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 !

'.mysql_error());  // erreur de syntaxe lors de cette requete


mysql_close();
}


?>
0