[RESOLU] Récupérer le contenu avec un explode

Eléphant du PHP | 372 Messages

24 juin 2015, 07:30

Salut à tous.
J'ouvre un nouveau sujet car je me suis apercu d'un truc,
lorsque je récupère un contenu sur mon XML.
Je récupère que le ST
sur l'explode de : 42130 | ST ETIENNE LE MOLARD

Merci à vous

Le code:
// le code ...                  
    foreach ($flux->product as $item) {
		

  
    $titre = addslashes($item->name);
    $price = $item->price;
    $url_fnac = $item->deepLink;
    $date_debut_sortie = $item->validFrom;
    $date_fin_sortie = $item->validTo;
    $street = addslashes($item->terms);
    $photo = $item->largeImage;
    $genre = $item->merchantCategoryPath;
   $description = 'blabla';
	
    // On fait un explode afin de récupérer ce qu'il nous interesse
    $postcode  = $item->extra2;
    $pieces = explode(" ", $postcode);
    echo $pieces[2];

// On attribut le département en fonction des 2 premiers chiffre du code postal
    $departement = substr($postcode, 0, 2);
     
    $region = regionIdByDepartement($departement);
     
    // Attribution de la valeur id 1010 pour la fnac
    $id_simply_user = '999';
     
    // On valide la sortie par default
    $valide = '1';
	
	
	foreach (explode(' ; ', /*(string)*/ $item->merchantCategoryPath) as $subtype) {
	$id_type_loisirs = $type[$subtype];
	
	}  
	
	
	/* $result = mysql_query("SELECT id_loisirs FROM loisirs WHERE titre = ".$titre.", city = ".$pieces[2].", postcode = ".$pieces[0].", date_debut_sortie = ".$date_debut_sortie.", date_fin_sortie = ".$date_fin_sortie."");
	if(mysql_num_rows($result) == 1){
		
	echo 'Cette entrée existe déjà';
	
	}else{
		
	// Pseudo libre
	$sql = "INSERT INTO `matable` (id_simply_user,titre,price,photo,url_fnac,date_debut_sortie,date_fin_sortie,description,street,postcode,city,id_region,id_departements,id_type_loisirs,valide) VALUES ('$id_simply_user','$titre','$price','$photo','$url_fnac','$date_debut_sortie','$date_fin_sortie','$description','$street','$pieces[0]','$pieces[2]','$region','$departement','$id_type_loisirs','$valide')";
	$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	echo 'Insertion en bdd';
	}*/ 
	}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 juin 2015, 08:26

Bonjour,
$postcode  = $item->extra2; // ex : 42130 | ST ETIENNE LE MOLARD
$pieces = explode(" ", $postcode);
echo $pieces[2];
Vu le code ci-dessus, tu fais un explode sur le caractère espace et que tu récupères l'élément avec l'index 2, ça me semble normal que tu récupères ST.
Si tu veux récupérer la ville, il vaudrait mieux faire ton explode sur le caractère pipe
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 372 Messages

24 juin 2015, 09:30

Salut.
Le caractere pipe ?
C'est le point virgule ?
Et ui jviens de voir lexplode sur lespace pas top ....

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 juin 2015, 09:53

Nan, le "pipe" (prononcé "paille-peu") c'est la barre verticale " | " (alt-gr + 6)
Tu aurais ainsi le tableau suivant
$pieces (
   0 => "42130 ",
   1 => " ST ETIENNE LE MOLARD"
)
Et tu peux utiliser la fonction trim() de php pour te débarrasser des espaces superflux :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 juin 2015, 20:27

Ou faire un explode sur " | " pour éviter d'avoir à faire un trim ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...