{MySQL} Saut de ligne intempestif dans export

Fermé
magicpp - 28 oct. 2009 à 10:31
 magicpp - 29 oct. 2009 à 09:13
Bonjour,
je me casse la tête depuis plusieurs jours sur un export au format CSV

Avec le fichier PHP ci-dessous j'obtiens une bonne sortie des données sous Word Pad ou le bloc note. Mais dès que j'ouvre le fichier CSV dans Excel j'obtiens sur certains produits des sauts de lignes à l'intérieur de la cellule Excel (toutes les données sont dans la même cellule mais sur plusieurs lignes).

Après vérification sur les lignes faisant défaut, je ne vois pas de caractères spéciaux pouvant causer ces sauts de lignes? Voyez vous une solution? Je suis loin d'être un expert en SQL / PHP, j'ai peut être commis une erreur grossière mais je ne vois pas où.

Par exemple, Export correct:
Ritchey|WCS OS plat Wet black|29|http://www.go1bike.com//index.php?page=shop.product_details&flypage=shop.flypage&product_id=746&category_id=23&manufacturer_id=0&option=com_virtuemart&Itemid=62| - Cinte plat Ritchey WCS OS Wet Black Ø 31.8 x 580mm - - - Réalisé en aluminium TRX50 triple butted - - Diamètre 31.8mm pour plus de résistance et de rigidité - - Largeur 580mm - - Nouvelle finition noir brillant - |http://www.go1bike.com/components/com_virtuemart/shop_image/product/7ef320173167504719fa63f9989cd361.jpg|Cintre|RIT09HBWCSFLAT|O|5|0


Et j'ai parfois ceci:
Thomson|Elite Setback BLACK 27.2 x 410
mm|59.9|http://www.go1bike.com//index.php?page=shop.product_details&flypage=shop.flypage&product_id=83&category_id=26&manufacturer_id=0&option=com_virtuemart&Itemid=62| - Tige de selle Thomson Elite
Setback 27.2 x 410mm noire - - La référence en matière de finition et de fiabilité. Modèle éprouvé depuis près de 15 ans sur les circuits de coupe du monde. - - Aluminium 7000 CNC - Chariot et têtes usinés - Graduations
d'angulation - |http://www.go1bike.com/components/com_virtuemart/shop_image/product/b8aa2664a93748fa172eb5b5bf41558f.jpg|Tige de selle|0268|O|5|0


Fichier PHP:

<?
// sélection de la base de données

$host =      "xxxxxxx";	

$user =     "xxxxxxx";	// ici indiquer l'utilisateur

$bdd =      "xxxxxxx";	// merci d'indiquer le nom de la base de données

$password  = "xxxxxxx";	// un mot de passe est en général necessaire à une connexion



// connexion à la base

mysql_connect($host, $user,$password) or die("erreur de connexion au serveur");

mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");





// envoi de la requête sur la base

$query1="SELECT product_id, product_sku, product_desc, product_full_image, product_name, product_in_stock FROM jos_vm_product WHERE product_in_stock >0 " ;

$result1=mysql_query($query1);

$nbe_produits=mysql_num_rows($result1);




echo "brand|designation|price|product_url|description|image_url|category|merchant_id|in_stock|shipping_cost|ship_to|<br/>";



while($var1=mysql_fetch_array($result1)) {



		$product_id             = $var1[0];

		$product_sku            = $var1[1];

		$product_desc           = $var1[2];

		$product_full_image     = $var1[3];

		$product_name           = $var1[4];

		$product_in_stock       = $var1[5];

		

		

		if($product_in_stock <> "0"){

		$disponibilitepdt = "O";

		}
		

		

		$reference = $product_sku;

		$nomproduit = $product_name;

		$description = $product_desc;

		$adresseimage = "http://www.go1bike.com/components/com_virtuemart/shop_image/product/".$product_full_image;

	
		


		

		$query2="SELECT category_id FROM jos_vm_product_category_xref WHERE product_id='$product_id'";

		$result2=mysql_query($query2);

		while($var2=mysql_fetch_row($result2)) {

		

				$category_id = $var2[0];

				$adresseproduit = "http://www.go1bike.com//index.php?page=shop.product_details&flypage=shop.flypage&product_id=".$product_id."&category_id=".$category_id."&manufacturer_id=0&option=com_virtuemart&Itemid=62";

				

				$query3="SELECT category_name FROM jos_vm_category WHERE category_id='$category_id'";

				$result3=mysql_query($query3);

				while($var3=mysql_fetch_row($result3)) {

				

						$category_name = $var3[0];

						$categorie = $category_name;

						

			

				}

				

		}

		

		

		

		$query4="SELECT manufacturer_id FROM jos_vm_product_mf_xref WHERE product_id='$product_id'";

		$result4=mysql_query($query4);

		while($var4=mysql_fetch_row($result4)) {

		

				$manufacturer_id = $var4[0];

				

				$query5="SELECT mf_name FROM jos_vm_manufacturer WHERE manufacturer_id='$manufacturer_id'";

				$result5=mysql_query($query5);

				while($var5=mysql_fetch_row($result5)) {

				

						$mf_name = $var5[0];

						$marqueproduit = $mf_name;

				

				}

		

		}

		

		

		$query6="SELECT product_price FROM jos_vm_product_price WHERE product_id='$product_id'";

		$result6=mysql_query($query6);

		while($var6=mysql_fetch_row($result6)) {

		

				$product_price = $var6[0]*1.196;

				$prixnormal = round($product_price,2);

				
	

		}



echo "$marqueproduit|$nomproduit|$prixnormal|$adresseproduit|";


$string = $description;
$patterns[0] = '%<br />%';
$patterns[1] = '%&bull;%';
$patterns[2] = '%</p>%';
$patterns[3] = '%<p>%';
$replacements[0] = ' - ';
$replacements[1] = ' - ';
$replacements[2] = ' - ';
$replacements[3] = ' - ';
echo preg_replace($patterns, $replacements, $string);

echo "|$adresseimage|$categorie|$reference|$disponibilitepdt|5|0<br/>";



}


?>

A voir également:

1 réponse

Bonjour,
personne ne voit d'où peut venir le problème?
0