[RESOLU] Traiter seulement les fichiers OK

Eléphant du PHP | 422 Messages

26 mai 2014, 13:39

hello

si tu fait une fonction connectMaBase() il faudrait peut etre l'utiliser ? (avant de faire une request notamment)

ps: surtout ne pas hésiter à mettre l'erreur dans google ;) il y a peut de chance que personne n'ai eu m'erreur avant toi
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphanteau du PHP | 11 Messages

27 mai 2014, 11:49

Salut,
je remets le code,

Code : Tout sélectionner

<?php error_reporting(E_ALL ^ E_NOTICE); // variables de connexion a la base $serveur = "localhost"; $base = "nagios_to_parcpc"; $user = "root"; $pass = ""; //variables des dossiers de traitement $dossierencours="C:/Documents and Settings/900204/Bureau/Test"; $dossiertraite="C:/Documents and Settings/900204/Bureau/Archivage"; // connexion à MySQL $mysqli = new mysqli($serveur, $user, $pass, $base); if(mysqli_connect_errno()) { printf ("Echec de la connexion:%s\n",mysqli_connect_error()); exit(); } echo 'Information sur le serveur : '.$mysqli->host_info; // on selectionne que les fichiers xml $liste = glob($dossierencours."/*.xml"); // pour chaque fichier on extrait le contenu foreach ($liste as $file) { echo "traitement de $file <br/>\n"; $contenu = file_get_contents($file); $xml = simplexml_load_string($contenu); $insertion = mysql_query("INSERT INTO notifications (Alerte, Type_Notification, Service, Hote, Adresse_IP, Etat, ID_Etat, Descriptif, Date_Heure) VALUES ('$alerte', '$typenotif', '$service', '$hote', '$adresse_ip', '$etat', '$descr', '$timestamp')"); $filename = basename($file); //nom du fichier rename($file,"$dossiertraite/${filename}_fini.xml"); //déplace } // deconnexion de la base $mysqli->close();
La connexion à la base semble bien marcher par contre les données ne sont pas inserées comme si glob ne les recuperait pas.
Pourquoi ?
Il doit manquer une ligne.

Merci à tous.

Eléphant du PHP | 422 Messages

27 mai 2014, 13:31

hello

pour info il y a un bouton PHP qui permet de mettre le code php avec une belle synthaxe


sinon ton script il te retourne quoi ?


++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphanteau du PHP | 11 Messages

27 mai 2014, 16:31

Beh je te le remets avec la belle couleur
<?php

error_reporting(E_ALL ^ E_NOTICE);

// variables de connexion a la base
$serveur = "localhost";
$base = "nagios_to_parcpc";
$user = "carlo";
$pass = "xxxxx";

//variables des dossiers de traitement
$dossierencours="C:/Documents and Settings/900204/Bureau/Test";
$dossiertraite="C:/Documents and Settings/900204/Bureau/Archivage";

// connexion à MySQL
$mysqli = new mysqli($serveur, $user, $pass, $base);
if(mysqli_connect_errno()) { 
printf ("Echec de la connexion:%s\n",mysqli_connect_error());
exit();
}
echo 'Information sur le serveur : '.$mysqli->host_info;

// on selectionne que les fichiers xml
$liste = glob("$dossierencours/*.xml");

// pour chaque fichier on extrait le contenu
foreach ($liste as $file)
{
    echo "traitement de $file <br/>\n";
    $contenu = file_get_contents($file);
    $xml = simplexml_load_string($contenu);

    $insertion = mysql_query("INSERT INTO notifications (Alerte, Type_Notification, Service, Hote, Adresse_IP, Etat, ID_Etat, Descriptif, Date_Heure) VALUES ('$alerte', '$typenotif', '$service', '$hote', '$adresse_ip', '$etat', '$id_etat', '$descr', '$timestamp')");
	
    $filename = basename($file); //nom du fichier
    rename($file,"$dossiertraite/${filename}_fini"); //déplace

}
// deconnexion de la base
$mysqli->close();
?>
Avant il me disait "acces denied" à la base et "A link to the server could not be established" après j'ai changé le mot de passe et il me semble avoir marché un coup.
Mais le problème c'est que les données ne sont pas insérées dans la base comme si la requête était mal formulée.
Bizarre.
Peut être que avec un objet xml la requête a un format différent, ou non ?

Je pète un plomb. #-o

Merci à vous tous.

Eléphanteau du PHP | 11 Messages

27 mai 2014, 16:54

Maintenant la sortie de
$xml = simplexml_load_string($contenu);
est du genre:

Code : Tout sélectionner

traitement de C:/Documents and Settings/900204/Bureau/Test/201405190631124567890 12.xml <br/> SimpleXMLElement Object ( [alerte] => Service [typenotif] => RECOVERY [service] => service-vidal_hoptimal_server [hote] => terra [adresse_ip] => 172.19.0.16 [etat] => OK [id_etat] => 0 [descr] => 1 process named medicament.exe ( 0) [timestamp] => 2014-05-19 06:31:12 ) traitement de C:/Documents and Settings/900204/Bureau/Test/201405200837092345678 90.xml <br/> SimpleXMLElement Object ( [alerte] => HOST [typenotif] => RECOVERY [service] => SimpleXMLElement Object ( ) [hote] => info_stage_1 [adresse_ip] => 192.168.12.89 [etat] => UP [id_etat] => 0 [descr] => PING OK - Paquets perdus = 0%, RTA = 2.07 ms [timestamp] => 2014-05-20 08:37:09 ) traitement de C:/Documents and Settings/900204/Bureau/Test/201405200837093456789 01.xml <br/> SimpleXMLElement Object ( [alerte] => HOST [typenotif] => RECOVERY [service] => SimpleXMLElement Object ( ) [hote] => info_stage_1 [adresse_ip] => 192.168.12.89 [etat] => UP [id_etat] => 0 [descr] => PING OK - Paquets perdus = 0%, RTA = 0.76 ms [timestamp] => 2014-05-20 08:37:09 ) C:\Documents and Settings\900204\Bureau\Test>
Comme dois je traiter ces éléments objets xml avant de formuler la requête pour les insérer dans la base ??

Merci