[RESOLU] Récuperer des infos sur un XML

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Récuperer des infos sur un XML

Re: Récuperer des infos sur un XML

par yoann38 » 02 févr. 2017, 17:43

Trop rapide.
J'ai trouvé ça de mon coté :
$date_debut_sortie = date_create_from_format('d/m/Y',$date_debut_sortie);
	$date_debut_sortie = date_format($date_debut_sortie, 'Y-m-d')
Et ca marche ;)
Nikel, merci beacuoup

Re: Récuperer des infos sur un XML

par Naroth » 02 févr. 2017, 17:02

ça devrait faire l'affaire
'date_debut_sortie' => $date_debut_sortie->format("Y-m-d"),
'date_fin_sortie' => $date_fin_sortie->format("Y-m-d"),

Re: Récuperer des infos sur un XML

par yoann38 » 02 févr. 2017, 16:56

Oups,
En fait ca correspond à ma requete à savoir :
// Insertion
$req = $bdd->prepare("INSERT INTO `loisirs` (id_simply_user,titre,url_rewrite,price,photo,url_fnac,date_debut_sortie,date_fin_sortie,description,street,postcode,city,id_region,id_departements,id_type_loisirs,number,manufacturer,valide) VALUES ('$id_simply_user','$titre','$url_convertis','$price','$photo','$url_fnac','$date_debut_sortie', '$date_fin_sortie', '$description','$street','$postcode','$city','$region','$departement','$id_type_loisirs','$number','$manufacturer','$valide')");
$req->execute(array(

'id_simply_user'=>$id_simply_user,
'titre'=>$titre,
'url_rewrite'=>$url_convertis,
'price'=>$price,
'photo'=>$photo,
'url_fnac' => $url_fnac,
'date_debut_sortie' => $date_debut_sortie,
'date_fin_sortie' => $date_fin_sortie,
'description' => $description,
'street' => $street,
'postcode'=>$postcode,
'city'=>$city,
'id_region'=>$region,
'id_departements'=>$departement,
'id_type_loisirs'=>$id_type_loisirs,
'number'=>$number,
'manufacturer'=>$manufacturer,
'valide'=>$valide
)) or die('Problème lors de l\'insertion');
}

Re: Récuperer des infos sur un XML

par Naroth » 02 févr. 2017, 09:11

Quelle est la ligne 273 ?

Re: Récuperer des infos sur un XML

par yoann38 » 02 févr. 2017, 08:08

Bon j'ai essayé donc :

et ca retourne la valeur : 2016-February-03 00:00:00

mais j'ai une erreur :
Catchable fatal error: Object of class DateTime could not be converted to string in C:\wamp\www\azerty\integration.php on line 273

Je vais continuer à cherche ;)

Re: Récuperer des infos sur un XML

par Naroth » 02 févr. 2017, 00:21

Tu as mélangé mes deux propositions ^^
// Formatage date
  echo $date_debut_sortie; // Exemple : 11/04/2016
  
  $date_debut_sortie = str_replace('/', '-', $date_debut_sortie); //Le format de la date devient d-m-Y
  $date_debut_sortie = date_create_from_format("d/m/Y", $date_debut_sortie); //Ici tu lui dis que le format initial est d/m/Y (ce qui ne correspond pas à ton format
  echo date('Y-m-d H:i:s',strtotime($date_debut_sortie->format('Y-m-d')));
En résumé commente
$date_debut_sortie = str_replace('/', '-', $date_debut_sortie); //Le format de la date devient d-m-Y
et ça marche

Pour être plus clair
Sur une date du type 02/03/2017, php à du mal a déterminé si c'est le 2 Mars 2017 ou le 3 Février 2017
Le premier paramètre de la fonction date_create_from_format spécifie le format utilisé dans ta date (qui est en deuxième paramètre)
date_create_from_format("d/m/Y", "02/03/2017") // Retournera le 2 Mars 2017
date_create_from_format("m/d/Y", "02/03/2017")  // Retournera le 3 Février 2017
En espérant être clair


Tu peux essayer le bout de code suivant :
$date_debut_sortie = "02/03/2016";  

  $date_debut_sortie = date_create_from_format("m/d/Y", $date_debut_sortie); //Lui retourne 2 Février
//$date_debut_sortie = date_create_from_format("d/m/Y", $date_debut_sortie); // 2 Mars
  echo date('Y-F-d H:i:s',strtotime($date_debut_sortie->format('Y-m-d'))); //Ecris en toute lettre le nom du mois

Re: [RESOLU] Récuperer des infos sur un XML

par yoann38 » 01 févr. 2017, 23:56

Bon il ne me reste que ce soucis de date pour finir.

Récup du fichier xml contenant la date:
$date_debut_sortie = $item->fields->dadman; //
// Formatage date
	echo $date_debut_sortie; // Exemple : 11/04/2016
	
	$date_debut_sortie = str_replace('/', '-', $date_debut_sortie);
	$date_debut_sortie = date_create_from_format("d/m/Y", $date_debut_sortie);
	echo date('Y-m-d H:i:s',strtotime($date_debut_sortie->format('Y-m-d')));
Voila le message d'erreur actuellement :
Call to a member function format() on a non-object in C:\wamp\www\azerty\integration.php on line 130

Re: Récuperer des infos sur un XML

par yoann38 » 01 févr. 2017, 23:34

C'est bon j'ai trouvé c'était mon xml merci encore pour ta disponibilité ;)

Re: Récuperer des infos sur un XML

par Naroth » 01 févr. 2017, 23:27

Hum... je sais pas si c'est lié, mais la syntaxe PDO pour une requête préparé est la suivante :
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories FROM fruit WHERE calories < :calories AND couleur = :couleur');
$sth->execute(array(':calories' => $calories, ':couleur' => $couleur));
les ":" à la place des "$" dans la requête

Source : http://php.net/manual/fr/pdostatement.execute.php

Re: [RESOLU] Récuperer des infos sur un XML

par yoann38 » 01 févr. 2017, 23:19

Bon j'ai tout finis sauf que le champ date ne s'insere pas car si je fait un echo de date_debut_sortie ( il n y a rien je ne sais pas pourquoi et pareil pour postcode )
// On entre les entrees en bdd 
	function multiexplode ($delimiters,$string) {
   
    $ready = str_replace($delimiters, $delimiters[0], $string);
    $launch = explode($delimiters[0], $ready);
    return  $launch;
	}                
    foreach ($flux->product as $item) {
		

    // Récupération des données en fonction du tagname du XML
	$number = addslashes($item->TDProductId);
    $titre = addslashes($item->name);
    $price = $item->price;
    $url_fnac = $item->productUrl;
	$postcode = $item->cptsal;
	$street = $item->adrsal; //
	$date_debut_sortie = $item->dadman; //
    $date_fin_sortie = $item->dafman; //
    $photo = $item->grvisu;
	$manufacturer = $item->nomsal;
    $genre = $item->description;
	$city = $item->fields->villesal;

	// on parcourt le tag longDescription du XML
	$genre = addslashes($item->description);
	$decoupe = multiexplode(array(";"),$genre);
	
	echo $postcode;
	
	// Début événement
	$style_one = $decoupe[0];
	
	// Département
	$departement = substr($item->fields->cptsal, 0, 2);  // retourne "abcde"

	// Région
	$region = regionIdByDepartement($departement);
     
    // Attribution de la valeur id 1010 pour la fnac
    $id_simply_user = '999';
     
    // On valide la sortie par default
    $valide = '1';
	
	$url_convertis = simplification($titre);

	// Si il n y a pas de salle
	$salle = !empty($manufacturer) ? ucfirst(strtolower($manufacturer)) : NULL;
	

	foreach (explode(' ; ', $item->description) as $subtype) {
	$id_type_loisirs = $type[$subtype];
	}  

	
    // incrémenter le nombre de ce type
    if(isset($tab_nbre[$id_type_loisirs]))
    {
		
       // vérifier de ne pas dépasser le nombre de textes que tu a défini
       if ($tab_nbre[$id_type_loisirs] >= count($tab_sortie[$id_type_loisirs]))
       {
          $tab_nbre[$id_type_loisirs] = 0;
        }else{
          $tab_nbre[$id_type_loisirs]++;
        }
    }else{
       $tab_nbre[$id_type_loisirs] = 0;
    }
  
	 if( isset($tab_sortie[$id_type_loisirs]) && isset($tab_nbre[$id_type_loisirs]) && isset($tab_sortie[$id_type_loisirs][$tab_nbre[$id_type_loisirs]])) {
	$description = $tab_sortie[$id_type_loisirs][$tab_nbre[$id_type_loisirs]];
	}else {
	// log d'une erreur que tu retrouveras facilement
	continue; // passe à l'itération suivante ça sert à rien d'aller plus loin cette ligne est en errreur. 
	}
	// Le tableau
    $tab_sortie = [];
	

        // Requete pour calculer le nombre d'annonces en cours de validité
        $sql = "SELECT id_loisirs FROM loisirs WHERE number = '".$number."'";
        $req = $bdd->query($sql);
        $nbResult = $req->rowCount();
             
        //Entrée déjà existante
        if ($nbResult > 0) {  
        echo '"' . $number. '" existe déjà en ' . $nbResult . ' exemplaire(s)';
        } else { //  libre
             
               
   // Insertion
        $req = $bdd->prepare("INSERT INTO `loisirs` (id_simply_user,titre,url_rewrite,price,photo,url_fnac,date_debut_sortie,date_fin_sortie,description,street,codepostal,city,id_region,id_departements,id_type_loisirs,number,manufacturer,valide) VALUES ('$id_simply_user','$titre','$url_convertis','$price','$photo','$url_fnac','$date_debut_sortie', '$date_fin_sortie', '$description','$street','$codepostal','$city','$region','$departement','$id_type_loisirs','$number','$manufacturer','$valide')");
        $req->execute(array(
             
                      'id_simply_user'=>$id_simply_user,
                      'titre'=>$titre,
                      'url_rewrite'=>$url_convertis,
                      'price'=>$price,
                      'photo'=>$photo,
                      'url_fnac' => $url_fnac,
                      'date_debut_sortie' => $date_debut_sortie,
                      'date_fin_sortie' => $date_fin_sortie,
                      'description' => $description,
                      'street' => $street,
                      'codepostal'=>$codepostal,
                      'city'=>$city,
                      'id_region'=>$region,
                      'id_departements'=>$departement,
                      'id_type_loisirs'=>$id_type_loisirs,
                      'number'=>$number,
                      'manufacturer'=>$manufacturer,
                      'valide'=>$valide
                      )) or die('Problème lors de l\'insertion');
            }
			
        }

Re: [RESOLU] Récuperer des infos sur un XML

par Naroth » 01 févr. 2017, 22:02

Sinon en gardant les changements de format tu peux faire ceci :
$date_debut = '31/12/2017';
$date_debut = date_create_from_format("d/m/Y", $date_debut);
echo date('Y-m-d H:i:s',strtotime($date_debut->format('Y-m-d')));

Re: Récuperer des infos sur un XML

par yoann38 » 01 févr. 2017, 22:00

Franchement au top.
Encore pas mal de chose à apprendre.
Merci beaucoup

Re: Récuperer des infos sur un XML

par Naroth » 01 févr. 2017, 21:56

Visiblement PHP n'est pas très à l'aise avec le format "d/m/Y" il faut donc le convertir brutalement dans un truc supporté
$date_debut = '31/12/2017';
$date_debut = str_replace('/', '-', $date_debut);
echo date('Y-m-d', strtotime($date_debut));

Re: Récuperer des infos sur un XML

par yoann38 » 01 févr. 2017, 21:41

Alors c'est bon pour mon soucis mais j'en profite pour poser une question toujours sur le XML.
Dans mon xml je recupére la date mais souhaite pouvoir la transformer pour mysql

Actuellement la date est :
$date_debut = $item->dadman;
Nous donne 31/12/2017

J'ai donc essayé :
//conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)
	 $date_debut = date_create_from_format('d/m/Y',$date_debut);
	$date_debut = date_format($date_debut, 'Y-m-d');

Mais problème format retourne par ma page ...

Re: Récuperer des infos sur un XML

par yoann38 » 01 févr. 2017, 17:34

Merci pour tes explications ;)