Bon, c'est bof optimisé, mais si ça vous fait plaisir, essayez-le !
<?
/* PROCESSUS DE CHARGEMENT */
$fp = fopen ("csv.csv","r"); // ON OUVRE LE FICHIER CSV
$lignes=0; // ON INITIALISE LE COMPTEUR DU NOMBRE D'ENREGISREMENTS
while ($data = fgetcsv ($fp, 1000, ",")) { // TANT QU'IL Y AURA DES DONNEES
$num = count ($data); // NOMBRE D'ENREGITREMENTS PAR LIGNE
for ($c=0; $c<$num; $c++) { // POUR CHAQUE CASE DE CHAQUE ENREGISTREMENT
$tabannonces[$lignes][$c]=$data[$c]; // ON CHARGE CA DANS UN TABLEAU
}
$lignes++; // INCREMENTATION DU NOMBRE DE LIGNES
}
fclose ($fp); // ON FERME LE FICHIER (PROPREMENT)
echo "Il y a ".$num." colonnes et ".$lignes." enregistrements"; // SANS BLAGUES !?
/* ON COMMENCE L'AFFICHAGE DANS LE TABLEAU HTML (RIEN DE SORCIER) */
echo "<table bgcolor='#000000' cellspacing='1'><tr>";
for ($i=1 ; $i<=$num ; $i++) {
echo "<td bgcolor='#DDDDDD'><font face='Verdana' size='2'><b> C".$i." </b></font></td>";
}
echo "</tr>";
for ($ligne=1 ; $ligne<=$lignes ; $ligne++) {
echo "<tr>";
for ($colonne=1 ; $colonne<=$num ; $colonne++) {
echo "<td bgcolor='#FFFFFF' nowrap> ".$tabannonces[$ligne-1][$colonne-1]." </td>";
}
echo "</tr>";
}
echo "</table><p>";
?>

Oui, ce sont des types de fichiers avec séparateurs qui peuvent être
;
-
:
.
ou autre, voilàààà
comma separated je sais plus quoi, non ?
#3 >> Oué, c un truk comme ça je crois, même si c'est pas toujours séparé par des virgules (parfois des points, des points-virgules, les slashes, des tranches de poulet... etc...).
Bref, vous avez essayé ???
bah, je crois que les tableurs tel excel peuvent exporter des donnes dans ce format...
m'enfin, ca va surement disparaitre pr laisser place au xml, je suppose, non ?
Oui, mais je sais que c'est très utilisé dans mon boulot. +de 500 enregistrement par semaine me parviennent dans ce format.
Bon, le code a complêtement été amélioré, mais il est fait à l'arrache, sans commentaires ni que dalle), essayez-le vous n'allez pas être déçu.
Ne me critiquez pas s'il n'est pas optimisé au top, comme je l'ai dit précédemmtn, il est à l'arrache.
NOUVELLE POSSIBILITES : CREER UNE BDD, CREER UNE TABLE, TRANSFERER "SIMPLEMENT" VOS *.CSV (ou autres formats avec séparateurs) DANS VOTRE BDD mySQL.
<link title="test" type="text/css" rel="stylesheet" href="csvstyle.css">
<?
echo "<form method='post' action='lecsveur.php'>";
mysql_connect("127.0.0.1","root","");
mysql_select_db("default");
/* PROCESSUS DE CHARGEMENT */
$fp = @fopen ("csv.csv","r") or die ("Impossible d'ouvrir le fichier *.csv"); // ON OUVRE LE FICHIER CSV
$lignes=0; // ON INITIALISE LE COMPTEUR DU NOMBRE D'ENREGISREMENTS
while ($data = @fgetcsv ($fp, 1000, ",")) { // TANT QU'IL Y AURA DES DONNEES
$num = count ($data); // NOMBRE D'ENREGITREMENTS PAR LIGNE
for ($c=0; $c<$num; $c++) { // POUR CHAQUE CASE DE CHAQUE ENREGISTREMENT
$tabannonces[$lignes][$c]=$data[$c]; // ON CHARGE CA DANS UN TABLEAU
}
$lignes++; // INCREMENTATION DU NOMBRE DE LIGNES
}
fclose ($fp); // ON FERME LE FICHIER (PROPREMENT)
echo "<font class='titre'>Tout transférer vers la table : <input type='text' name='nomtable' class='monform'> de la base : <input type='text' name='labase' class='monform'></font><p>";
echo "Remplissez les noms des champs des tables correspondantes ou laissez vide si vous ne souhaitez pas ajouter ces champs";
/* ON COMMENCE L'AFFICHAGE DANS LE TABLEAU HTML (RIEN DE SORCIER) */
echo "<table bgcolor='#000000' cellspacing='1'><tr>";
for ($i=1 ; $i<=$num ; $i++) {
echo "<td bgcolor='#DDDDDD'><b><input type='text' name='champ[]' class='monformbarb'></b></td>";
}
echo "</tr>";
for ($ligne=1 ; $ligne<=$lignes ; $ligne++) {
echo "<tr>";
for ($colonne=1 ; $colonne<=$num ; $colonne++) {
echo "<td bgcolor='#FFFFFF' nowrap> ".$tabannonces[$ligne-1][$colonne-1]." </td>";
}
echo "</tr>";
}
$nbcolspans=$num-1;
echo "<tr><td bgcolor='#FFFFFF' colspan='".$nbcolspans."'> </td><td align='right' bgcolor='#FFFFFF'><input type='Submit' value='Enregistrer' class='monform'></td></tr>";
echo "</table>";
echo "</form><p>";
if (($nomtable)&&(!$nouvellebase)&&($labase)) {
mysql_select_db($labase);
mysql_query("CREATE DATABASE erf");
for ($ligne=1 ; $ligne<=$lignes ; $ligne++) {
$requete="INSERT INTO ".$nomtable." (";
$compteur=0;
$nbcolssql=0;
foreach ($champ as $kellabel) {
$compteur++;
if ($kellabel) {
$nbcolssql++;
if ($compteur==1) {
$requete.=$kellabel;
} else {
$requete.=",".$kellabel;
}
}
}
$requete.=") VALUES (";
for ($i=1 ; $i<=$nbcolssql ; $i++) {
$tabannonces[$ligne-1][$i-1]=str_replace('<','<',$tabannonces[$ligne-1][$i-1]);
$tabannonces[$ligne-1][$i-1]=str_replace('>','>',$tabannonces[$ligne-1][$i-1]);
$tabannonces[$ligne-1][$i-1]=str_replace('"','"',$tabannonces[$ligne-1][$i-1]);
if ($i==1) {
$requete.="'".$tabannonces[$ligne-1][$i-1]."'";
} else {
$requete.=",'".$tabannonces[$ligne-1][$i-1]."'";
}
}
$requete.=");";
echo $requete."<br>";
mysql_query($requete) or die ("<font color='#FF0000'><b>!!! Enregistrement non effectué !!!</b><br></font>");
echo "<font color='#FF0000'><b>Enregistrement effectué</b><br></font>";
}
}
echo "<form action='lecsveur.php' method='post'><font class='titre'>Si cela est nécessaire, vous pouvez créer une base de données</font>";
echo "<br>Saisissez son nom : <input type='text' name='nouvellebase' class='monform'> <input type='submit' value='Créer la base' class='monform'></form>";
if ($nouvellebase) {
mysql_query("CREATE DATABASE ".$nouvellebase) or die ("<font color='#FF0000'>Base non créée</font>");
echo "<font color='#FF0000'>Base ".$nouvellebase." créée</font>";
}
echo "<form action='lecsveur.php?act=nouvtable' method='post'><font class='titre'>Et si vous n'avez pas créé de table, choisissez le nom de la table : <input type='text' name='basetable' class='monform'> dans la base <input type='text' name='nombase' class='monform'><br>
et remplissez les noms des tables à l'aide du formulaire ci-dessous
</font>
<input type='hidden' name='nbchamps' value=".$num.">";
echo "<table bgcolor='#000000' cellspacing='1'>";
echo "<tr>
<td bgcolor='#DDDDDD' nowrap>
<b> Nom du champ </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Type </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Taille/Valeur </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Attributs </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Null </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Défaut </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Extra </b>
</td>
<td bgcolor='#DDDDDD' nowrap>
<b> Clés </b>
</td>
</tr>";
for ($i=1 ; $i<=$num ; $i++) {
echo "<tr>
<td bgcolor='#DDDDDD'>
<input type='text' class='monformbarb' name='champ[".$i."]'>
</td>
<td bgcolor='#DDDDDD'>
<select class='monform' name='type[".$i."]'>
<option value='varchar'>VARCHAR</option>
<option value='tinyint'>TINYINT</option>
<option value='text'>TEXT</option>
<option value='date'>DATE</option>
<option value='smallint'>SMALLINT</option>
<option value='mediumint'>MEDIUMINT</option>
<option value='int'>INT</option>
<option value='bigint'>BIGINT</option>
<option value='float'>FLOAT</option>
<option value='double'>DOUBLE</option>
<option value='decimal'>DECIMAL</option>
<option value='datetime'>DATETIME</option>
<option value='timestamp'>TIMESTAMP</option>
<option value='time'>TIME</option>
<option value='year'>YEAR</option>
<option value='char'>CHAR</option>
<option value='tinyblob'>TINYBLOB</option>
<option value='tinytext'>TINYTEXT</option>
<option value='blob'>BLOB</option>
<option value='mediumblob'>MEDIUMBLOB</option>
<option value='mediumtext'>MEDIUMTEXT</option>
<option value='longblob'>LONGBLOB</option>
<option value='longtext'>LONGTEXT</option>
<option value='enum'>ENUM</option>
<option value='set'>SET</option>
</select>
</td>
<td bgcolor='#DDDDDD' name='type[".$i."]'>
<input name='taille[".$i."]' type='text' class='monformbarb'>
</td>
<td bgcolor='#DDDDDD'>
<select class='monform' name='attribut[".$i."]'>
<option value='' selected='selected'></option>
<option value='BINARY'>BINARY</option>
<option value='UNSIGNED'>UNSIGNED</option>
<option value='UNSIGNED ZEROFILL'>UNSIGNED ZEROFILL</option>
</select>
</td>
<td bgcolor='#DDDDDD'>
<select class='monform' name='nullite[".$i."]'>
<option value='NOT NULL'>NON</option>
<option value='NULL'>OUI</option>
</select>
</td>
<td bgcolor='#DDDDDD'>
<input name='defaut[".$i."]' type='text' class='monformbarb'>
</td>
<td bgcolor='#DDDDDD'>
<select class='monform' name='extra[".$i."]'>
<option value='' selected='selected'></option>
<option value='auto_increment'>AUTO_INCREMENT</option>
</select>
</td>
<td bgcolor='#DDDDDD'>
<select class='monform' name='cle[".$i."]'>
<option value='' selected='selected'></option>
<option value='PRIMARY KEY'>PRIMAIRE</option>
<option value='INDEX'>INDEX</option>
<option value='UNIQUE'>UNIQUE</option>
</select>
</td>
</tr>";
}
echo "<tr>";
echo "<td colspan='8' bgcolor='#DDDDDD'>";
echo " <input type='Submit' value='Enregistrer' class='monform'>";
echo "</td>";
echo "</tr>";
echo "</table></form>";
if ($act=='nouvtable') {
mysql_select_db($nombase) or die ("<font color='#FF0000'><b>!!! La base spécifiée n'existe pas !!!</b></font>");
$requete="CREATE TABLE ".$basetable." ( ";
for ($i=1 ; $i<=$nbchamps ; $i++) {
if ($champ[$i]) {
if ($i>=2) {
$requete.=", ";
}
$requete.=$champ[$i]." ".$type[$i];
if ($taille[$i]) {
$requete.="(".$taille[$i].")";
} else {
switch($type[$i]) {
case 'int' : $requete.="(11)"; break;
case 'timestamp' : $requete.="(14)"; break;
default : $requete.="";
}
}
$requete.=" ";
if ($attribut[$i]) {
$requete.=$attribut[$i]." ";
}
if ($nullite[$i]) {
$requete.=$nullite[$i]." ";
}
if ($defaut[$i]) {
$defaut[$i]=str_replace('"','"',$defaut[$i]);
$requete.="default '".$defaut[$i]."' ";;
}
if ($extra[$i]) {
$requete.=$extra[$i]." ";
}
if ($cle[$i]) {
$requete.=$cle[$i]." ";
}
}
}
$requete.=")";
echo $requete;
mysql_query($requete) or die ("<font color='#FF0000'><b>!!! TABLE NON CREEE !!!</b></font>");
echo "<font color='#FF0000'><b>!!! La table a correctement été créée</b></font>";
}
?>
