Insérer contenu xml dans bdd mysql

indutec Messages postés 6 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 30 novembre 2010 - 6 oct. 2008 à 15:55
Ordinastie Messages postés 93 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 - 11 oct. 2008 à 05:21
Bonjour,


Je souhaite insérer le contenu d'un fichier xml externe dans une base de données sur mon serveur. Pour l'instant, il me génère une erreur "Error: 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 'Etude : Contraintes et nouvelles exigences - les Brasseurs réagissent !',' at line 1" car il y a des caractères qu'il ne lit pas apparemment et donc il ne les encore pas dans la db.

Ensuite, pour les deux premiers champs encodés, il ne m'insère pas la date.

Voici mon code php:

function lire_rss($url,$nbr= 5)
{

$xml = simplexml_load_file($url) ;
foreach($xml->channel->item as $item) {
$i++;
if($i<=$nbr)
{
$txt=utf8_decode((string) $item->description);
$lien=utf8_decode((string)$item->link);
$titre=utf8_decode((string)$item->title);
$date=utf8_decode((string)$item->pubDate);

$descr=htmlentities($txt);
$link=htmlentities($lien);
$title=htmlentities($titre);

include 'connect.php';
/*echo 'titre : '.$title;
echo '
';
echo 'description : '.$descr;
echo '
';
echo 'lien :'.$link;
echo '
';
echo 'date : '.$date;
echo '
';
*/

$sql="INSERT INTO web_abe (titre,descr,lien,date) VALUES ('$title','$descr','$link','$date')";
echo $sql;


if (!mysql_query($sql, $con))
{ die('Error: '.mysql_error());}
echo "1 appel ajouté";


$tout.='

[.$link. '.$title.' ]
'.$descr.'
'.$date.'

';

}
}

$tout. =' ';

echo $tout;
}
echo lire_rss("http://www.indutec.irisnet.be/page/flux_fr.xml",5) ;

et la structure de ma table
id, int(11), not null, auto_increment
titre, varchar (500), latin1_swedisch_ci, not null,
descr, varchar (1000), latin1_swedisch_ci, not null,
lien, varchar (500), latin1_swedisch_ci, not null,
date, timestamp, on update current_timestamp, not null

Donc, j'ai besoin :
- de pouvoir transformer tous les caractères spéciaux en code lisibe pour la db,
- de pouvoir insérer la valeur de ma date

Merci pour votre aideJavascript:Insert_Emoticon('/imgs2/smile_cool.gif');

1 réponse

Ordinastie Messages postés 93 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 2
11 oct. 2008 à 05:21
Bonjour,

Un peu de mise en forme dans ton message ne serait pas superflus... :/

Pour l'entrée en base qui ne fonctionne pas, traite tes élément insérés avec la fonction mysql_real_escape_string.
Pour la date, elle doit être au format AAAA-MM-JJ. Il faut donc que tu transforme ta donnée pour qu'elle soit compatible.(Tu peux aussi la transformer en timestamp si c'est plus simple suivant ce que tu as au départ).

Ordinastie.
0
Rejoignez-nous