8792 sujets

Développement web côté serveur, CMS

Hello à tous,

Un problème somme tout débile, mais je m'acharne et j'y arrive pas Smiley decu
(oui, je sais, il fallait pas sortir hier alors que j'avais du boulot today Smiley lol )

J'ai une base de données pour des exposants, dont certains champs sont au format MySQL "TEXT". Il y a donc des retours à la ligne dans certains d'entre eux.
Cela me pose problème car j'ai écrit un script d'exportation au format texte tabulé, et fatalement lorsque j'exporte, il me rajoute des retour à la ligne au niveau de ces champs texte. Or moi j'en veux pas sinon ça fausse tout le fichier tabulé Smiley decu
J'ai testé des str_replace du contenu du champ, mais je trouve pas la syntaxe pour par exemple remplacer un retour à la ligne par un espace ou quoi...

Une idée pour m'aiguiller Smiley confused ?




Ah oui et aussi, les données sont en UTF-8 dans la base et lorsque je les ressors, Excel n'aime pas les fichiers tabulés à cause de l'encodage UTF-8 et tous les accents déconnent Smiley decu Une idée aussi Smiley lol ?


Merciiiii Smiley cligne
Modifié par Aybee (08 Sep 2006 - 14:48)
Salut !

Avec un
str_replace("\n\r","ce-que-tu-veux-ici",$chaine);

ça devrait rouler pour les sauts de ligne/retour à la ligne.

Pour les tabulations (si jamais) il faut remplacer \n\r par \t
Mmmmmh malheureusement ça ne fonctionne toujours pas, je me retrouve toujours avec des sauts à la ligne Smiley decu


// Tentative de virer les retour à la ligne du champ "specialties1" de la BDD
$specialties1 = str_replace("\n\r"," ",$data['specialties1']);

// Ajout du résultat à la variable $tab qui sera un output complet et tabulé
$tab .= stripslashes($specialties1) . "\t";

Modifié par Aybee (03 Sep 2006 - 11:21)
Bon bonn petite mise à jour:

Les retours à la ligne c'est réglé
L'encodage texte pas Smiley decu

Et j'ai un autre problème:

J'ai besoin d'avoir en une seul requête le contenu de 3 tables. Les 3 sont liées via un ID unique...

$req = mysql_query("SELECT	*
FROM	tb_exhibitors, tb_antica, tb_opening_hours
WHERE tb_antica.exhib_id = tb_exhibitors.id && tb_opening_hours.exhib_id = tb_exhibitors.id
ORDER BY		LOWER(commercial_name) ASC"); // on selectionne les enregistrements
$res = mysql_numrows($req);	


Le problème c'est qu'en faisant comme ça, il ne prend QUE les enregistrements de tb_exhibitors qui ont une entrée à la fois dans tb_antica et dans tb_opening_hours.

Résultat, il me ressort uniquement 102 entrées sur les 143 (102 exposants qui ont une entrée dans chacune des 3 tables si vous voulez...)

Ceci me pose problème, car j'aimerais de toutes façons afficher les 143 exposants, et si ils n'ont pas d'entrée dans tb_antica et tb_opening_hours, ils soient quand même repris...

Je sais pas si je suis clair, mais si quelqu'un sait me dépanner c'est génial Smiley lol


MERCHIIIIII Smiley lol !!
Modifié par Aybee (03 Sep 2006 - 19:29)
Bon bon un petit up pour cette histoire d'encodage, si quelqu'un sait m'aider...

Limite j'envoie le fichier pour que vous regardiez l'ensemble, parce que juste citer des bouts de code ce n'est pas très parlant ...


Merci pour votre aide en tous cas, ça me dépannerait bien...
Avec les sauts de ligne, soyez précis. Ce n'est pas \n\r mais l'inverse : \r\n.

Pour ce qui est de l'encodage, tu peux passer de l'utf8 à l'iso-8859-1 et réciproquement grâce aux fonctions php utf8_encode et utf8_decode.
QuentinC a écrit :
Avec les sauts de ligne, soyez précis. Ce n'est pas \n\r mais l'inverse : \r\n.

Smiley biggol
D'un côté ça dépend aussi de la plateforme (sous unix on a besoin que de \n si je ne m'abuse) et en cherchant 2min tu trouves la solution... Enfin bref..

Pour le SQL, je pense que tu pourrais peut-être utiliser DISTINCT. Je te laisse regarder par toi-même, je ne voudrais pas ne pas être assez précis Smiley lol
Modifié par daitheflu (05 Sep 2006 - 09:58)
Un grand merci à tous pour votre aide!

Il ne me suffit maintenant que de trouver comment écrire un script pour zipper un dossier sur le serveur comprenant des images pour qu'il soit automatiquement téléchargé sur le bureau de l'utilisateur lorsqu'il clique sur un lien...

Je vois le bout du projet, ça fait plaisir Smiley lol