begin process at 2010 03 18 05:31:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Erreur très bizarre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur très bizarre

mardi 19 juin 2007 à 19:22:27 | Erreur très bizarre

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());

jeudi 21 juin 2007 à 17:11:14 | Re : Erreur très bizarre

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
vendredi 22 juin 2007 à 12:02:10 | Re : Erreur très bizarre

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
vendredi 22 juin 2007 à 14:19:38 | Re : Erreur très bizarre

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
vendredi 22 juin 2007 à 16:22:06 | Re : Erreur très bizarre

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();
}

?>



Cette discussion est classée dans : date, mysql, erreur, sql, cpu


Répondre à ce message

Sujets en rapport avec ce message

mysql avec frontpage [ par Joleroy ] Salut,J utilise frontpage 2003 pour creer des pages web, mais je n' arrive pas a trouver comment se connecter a une base de donné SQL autre que sql se Problème de date [ par kidpigeyre ] Voila mon problème : Je dois afficher les emplacements libres d'un certain type entre deux dates (date_debut et date_fin) en sql access.Voici mes deux sql server ou Mysql [ par snoopcool ] Bonjour tous le monde!!!Mon proleme est le suivant. J'ai une base de donnée que je ve mettre sur un serveur avec une vingtaine de poste à connecte et SQL access [ par abdoulax ] Je débute en base de donnée. J'utilise Access qui possède une gestion des requêtes avec SQL. Ce que je voudrai faire c'est récupérer le nombre de date [SQL SERVER 2000][SQL] Problème SQL-DMO erreur 21776 [ par rabbiwan ] Bonjour, J'ai ajouter une connexion et des utilisateurs sur des roles. Lorsque je fais propriété de la connexion et que je vais voir l'accés aux base erreur "Supplied argument is not a valid MySQL result resource" [ par bidjoubob ] Salut,Lorsque je transfères mon site comportant du PHP et une base de données en MYSQL, j'obtiens l'erreur "Supplied argument is not a valid MySQL res Comment effectuer une requete sql avec un test de différence de date ? [ par paddybl ] bonsoir,voilà mon problémej'ai une table sql server avec un champ date de type dd/jj/aaaaje souhaite faire une requete sql avec comme condition, "trou Erreur de test...SQL Server [ par cid019 ] voila l'erreur que j'ai lorsque j'essai d'executer la requete suivante:iif(param = val, val1, sum(val2))[BC30201] Expression expected est l'erreurJe n procedure pour travailler sur les DATES [ par Bowen123 ] Bonjour,Sous SQL SERVER,J'ai une table comprenant une Ligne par demi journée (tbl_CALENDRIER) défini par une date et un indice de demijournée (0 ou 1) DATETIME SQL SERVER AU SECOURS !!!!!! [ par MACHOMAN ] bonjour, j'ai plusieurs pb avec les datetime sous sql server : 1 - j'ai deux champs datetime, dans le premier il y a une date dans le second une heure


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales