Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Par mon formulaire en PHP, les données sont enregistrées dans MySql et dans un fichier csv.
J’ai des problèmes avec mon fichier csv sous Excel…
Je vous pose 2 questions
1- lorsque l'utilisateur écrit le point-virgule [;] dans un champ de texte (input type="text") au niveau du fichier csv, il y a un problème : à cause de ce point-virgule, il y a une colonne supplémentaire dans mon fichier sous Excel : puisqu’il y a les séparateurs [;] dans un fichier csv.
Comment je peux remédier ce problème ? (dans mysql, tout est correct) :?:
Voici mon code pour la création du fichier
2- Si j'utilise la zone de texte [textarea] avec 5 lignes que l'utilisateur passe à la ligne en appuyant sur la touche "Entrée", dans mon fichier csv sous Excel, le 2e paragraphe est en 2e ligne au lieu de rester dans la même ligne. Pourtant dans mon MySql, tout est correct : sur la même ligne (enregistrement)
Comment je peux remédier ce problème (dans mysql tout est correct) :?:
Bon week-end
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
salut,
pour ce qui est du problème du ; il n'y a malheureusement pas d'équivalent html (simplement parce qu'il est utilisé dedans, comme dans le &).
tu peut le remplacer par autre chose, un point ou une virgule, même si je sais que cela ne signifie pas la même chose en français.
Pour le p'tit 2, faut savoir que mysql et excel c'est pas pareil (si si)
lorsque tu dit : dans mon mysql tous est sur la même ligne, tu parle de ce que tu vois quand tu regarde le contenu avec phpmyadmin (ou équivalent) ou que tu l'affiche sur une page web ? si c'est le c'est normal, essai la fonction nl2br et tu verra une différence. Ceci est du au fait que html n'interprete pas seul les retour chariot (\r\n). si tu fait un select * sur ta table a partir du shell mysql tu verra les retour chariot.
si tu veut les supprimers, utiliser preg_replace et cherche les \r\n
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
dans le format csv, les chaines doivent être entre cotes de porc
"lkkljkl",10.5;"une chaine avec un ; et plus";100
a++
Hors ligne
Bonjour,
Merci pour vos aides…
J’ai réglé mon problème avec la fonction preg_remplace comme vous voyez ci-dessous…
Du coup, j’ai trois questions :
1- Comment je peux optimiser mon code qui se trouve dans la partie de fonction preg_replace ?
2- est-ce qu’il y a un script php ou javascript qui empêche d’écrire ou transformer les minuscules en majuscule dans un champ de texte ( input / textbox)
3- est ce qu’il y a un script php ou javascript qui transforme les accents dans un champ de texte ( input / textbox)
Bonne journée
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
salut,
utilise des tableaux pour preg_replace (voir exemple 2 de la doc http://php.net/preg_replace)
2 et 3 oublie JS c'est pas fiable !
2/ soit tout soit rien en majuscule : strtoupper / strtolower
3/ preg_replace avec des tableaux
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Bonjour Moogli,
Comme tu m'as dit, j'ai fait un table...
$tb_tableau_replacer = array();
$tb_tableau_replacer[0] = '.,';
$tb_tableau_replacer[1] = '--->';
$var_ville = preg_replace($tb_tableau_nettoyage, $tb_tableau_replacer, $var_ville);
$var_nom = preg_replace($tb_tableau_nettoyage, $tb_tableau_replacer, $var_nom);
$var_prenom = preg_replace($tb_tableau_nettoyage, $tb_tableau_replacer, $var_prenom);
$var_pays = preg_replace($tb_tableau_nettoyage, $tb_tableau_replacer, $var_pays);
//ecriture fichier csv
fputs($ouvrir_FD, utf8_decode($var_ville).';'.utf8_decode($var_nom).';'.utf8_decode($var_prenom).';'.utf8_decode($var_pays).';'."\n");
Ca marche mais il y a toujours trop de répétitions...
Alors j'aimerais bien l'optimiser... J'ai fait une fonction :
Mais je n’arrive pas… Dans les fichiers CSV; les colonnes (ceux que j’ai appliqué la fonction « nettoyage ») sont vides, sans valeur…
Alors à votre avis, comment je peux alléger mon code? ? Je vais surtout faire cela pour apprendre pas pour la vitesse.
Merci:)
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
salut,
tu a deux { au premier if, ça doit te fournir une erreur !
qui plus ai tu a fait un mélange un peu douteur, avec tes $_POST[xxx] au lieu d'utiliser $chaine ....
comme ça, c'est mieux (à tester)
}
fputs($ouvrir_FD, utf8_decode($var_date).';'.nettoyage($var_votre_nom).';'.nettoyage($var_nom_enfant).';'.nettoyage($var_adresse).';'.nettoyage($var_ville).';'.utf8_decode($var_province).';'.utf8_decode($var_code_postal).';'."\n");
?>
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Bonjour moogli ^_^
Merci pour vos aides... selon les aides et les explications, mes codes marchent...
j'ai deux solutions
la 1ère c'est mon code que j'ai bidouillé pour qu'il marche...
//application utf8_decode — Convertit une chaîne UTF-8 en ISO-8859-1
//des remplacements complexe on utilise preg_replace mais on pourrais aussi utiliser str_replace pusique c'est plus basiques (voir la 2e solution)
return utf8_decode(preg_replace($tb_tableau_nettoyage, $tb_tableau_replacer, $chaine));
}
}
//ecriture du fichier
//fputs qui ne permet pas de formater du texte au format csv puisque c'est pour n'importe quel fichier pour Excel on utilise fputcsv qui permet de formater du texte au format csv
fputs($ouvrir_FD, utf8_decode($var_date).';'.nettoyage($var_votre_nom).';'.nettoyage($var_nom_enfant).';'.nettoyage($var_adresse).';'.nettoyage($var_ville).';'.utf8_decode($var_province).';'.utf8_decode($var_code_postal).';'."\n");
//Enfin fermer le fichier
fclose($ouvrir_FD);
et la 2e c'est la meilleur solution :
//remplacement [rn] (lorsqu'utilisateur appuie sur la touche "Entrée") par [--->] pour qu'il n'y a pas de création des colonnes sup dans Excel
function replace_rn_saut($el)
{
//callback --> La fonction de rappel à exécuter pour chaque élément de chaque tableau.
//str_replace() retourne une chaîne ou un tableau, dont toutes les occurrences de search dans subject ont été remplacées par replace.
//des remplacements basiques on n'utilise str_replace au lieu de preg_replace qui est plus complexe.
return (str_replace("\r\n",' ',$el));
}
// array --> Liste des tableaux à exécuter via la fonction de callback .
//http://php.net/manual/fr/function.array-map.php
$tab_excel = array();
$tab_excel[] = $var_date;
$tab_excel[] = $var_votre_nom;
$tab_excel[] = $var_nom_enfant;
$tab_excel[] = $var_adresse;
$tab_excel[] = $var_ville;
$tab_excel[] = $var_province;
$tab_excel[] = $var_code_postal;
//fonction array_map ----> Applique une fonction sur les éléments d'un tableau
//retourne un tableau après leur avoir appliqué la fonction callback
//utf8_decode — Convertit une chaîne UTF-8 en ISO-8859-1
$tab_excel = array_map('utf8_decode',$tab_excel);
//apliquer la fonction replace_rn_saut
$tab_excel = array_map('replace_rn_saut',$tab_excel);
//Ecriture le fichier
//fputcsv qui permet de formater du texte au format csv
fputcsv($ouvrir_FD, $tab_excel, ';');
//Enfin fermer le fichier
fclose($ouvrir_FD);
?>
merci encore et bonne journée
Brave autiste
Cl... clown
Cl ? Cl ? Est-ce que j'ai une gueule de clowns ?
@*|*@
Hors ligne
Pages :: 1