Ma fonction php récupère les tweets de twitter & les renvoie sous forme de chaîne codée json. Un script JS attrape ces données & POST le à un script php en utilisant ajax. Le script php de réception décode json et l'insère dans la table. Mais il n'y a pas de données dans mysql. La console d'erreur n'affiche aucune erreur. Voici mon code:Quelle est l'erreur dans mon code pour envoyer JSON à mysql?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<?php
function searchResults($q) {
$host = "http://search.twitter.com/search.atom?q=" . urlencode($q) . "&rpp=100";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//Raw xml
$result = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($result);
return json_encode($xml);
;
} //--------------- end of function
?>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<script>
$(document).ready(function()
{
var msg_top = new Array();
msg_top = "<"+"?php echo searchResults('windows');"+"?"+">";
var url = "msg2_mysql.php"
var request = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
request=new XMLHttpRequest();
}
else
{// code for IE6, IE5
request=new ActiveXObject("Microsoft.XMLHTTP");
}
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.setRequestHeader("Connection", "close");
request.onreadystatechange = function(){
if (request.readyState == 4) {
if (request.status == 200) {
alert('POST');
} else {
alert(request.status); //
}
}
}
request.send("msg_top=" + encodeURIComponent(msg_top).replace(/%20/g, '+'));
});
</script>
</body>
</html>
Voici script que je me sers pour insérer des données dans la table
<?php
$username = "******";
$password = "********";
$hostname = "localhost";
$dbh = mysql_connect($hostname, $username, $password) or die("Unable to connect
to MySQL");
$selected = mysql_select_db("spec",$dbh) or die("Could not select first_test");
if($_POST['msg_top']!="")
{
$json = $_POST['msg_top'];
$msg = strtoupper(json_decode($json));
$query = "INSERT INTO msg2 (id,msg,msg_id,depth) VALUES ('','$msg','ID','3')";
mysql_query($query);
if(!mysql_query($query, $dbh))
{die('error:' .mysql_error());} echo'success';
}
else echo('no value!');
?>
msg_top [] = "<" + "php echo searchResults ('windows'); "+"? "+"> "; // Tout ce que vous faites avec cette ligne est TRES dangereux. TRÈS TRÈS dangereux ... Comme ... Prenez votre serveur et volez votre vie dangereuse. - Pour clearifier, si vous l'exécutez sur votre serveur plus tard, quelqu'un pourrait utiliser firebug pour exécuter n'importe quel code sur votre serveur. – DampeS8N
Que se passe-t-il avec msg_top? Vous l'évaluez sur votre serveur en PHP après l'avoir reçu de JS? Mais pourquoi enverriez-vous le tag PHP? Envoyez simplement les paramètres et ajoutez-les à votre code sur le serveur. Je ne suis pas sûr de comprendre ce qui se passe là-bas. – JAL
@Alex, désolé, je n'ai pas compris vos deux premières questions. Que voulez-vous dire en envoyant une balise php? Je veux transmettre les résultats de php à js. & js implémente ajax qui insère ces résultats dans mysql lors du chargement de la page. – XCeptable