1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
| <?php
session_start();
include('envoi.php'); //fonction d'envoi de fichier
$caractereDeSeparation = $_POST['caractereDeSeparation'];
$nomDeTable = $_POST['nomDeTable'];
$_SESSION['SQLRequeteComplete'] = '';
$SQLRequeteINTO = 'INSERT INTO ' . $nomDeTable;
$compteur = 1;
$premiereBoucle = true;
$CSVcontientNomsChamps = $_POST['CSVcontientNomsChamps'];
// On ouvre le fichier CSV aléatoire créé
$fichierCSV = fopen($nomAleatoire, "r+");
while(!feof($fichierCSV)) // Boucle de lecture de fichierCSV...
{
/* ... on lit fichierCSV ligne par ligne avec fgets()
et on place dans un tableau $valeurs le contenu de la ligne en cours */
$ligneEnCours = fgets($fichierCSV);
// traitements....
$ligneEnCours = preg_replace('/\n/', '', $ligneEnCours); // on vire les retours à la ligne si il y en a
$ligneEnCours = preg_replace('/\'/', '', $ligneEnCours); // on vire les ' si il y en a
$ligneEnCours = preg_replace('/"/', '', $ligneEnCours); // on vire les " si il y en a
// fin traitements....
$valeurs = explode($caractereDeSeparation, $ligneEnCours); // on place chaque élément dans un tableau $valeurs[]
$nombreChamps = sizeof($valeurs); // on compte le nombre d'éléments du tableau
if($premiereBoucle) // Première lecture pour récupérer les champs
{
if($CSVcontientNomsChamps == 'true') // si le nom des champs se trouve dans le fichier CSV...
{
$SQLRequeteINTO .= ' (';
foreach($valeurs as $champ) // On lit chaque champ séparément pour les placer dans la requète
{
if($compteur < $nombreChamps) // tant que l'on n'est pas au dernier champ...
{
$SQLRequeteINTO = $SQLRequeteINTO . $champ . ', '; // ...on place des virgules pour compléter la requète
$compteur++;
}
else // une fois arrivé au dernier champ...
{
$SQLRequeteINTO = $SQLRequeteINTO . $champ . ')
'; // ...on termine par une parenthèse
}
}
$compteur = 1; // on réinitialise le compteur
}
else // si il n'y a pas le nom des champs, on est direct sur SQLRequeteVALUES
{
$SQLRequeteINTO .= '
';
$SQLRequeteVALUES = 'VALUES (';
foreach($valeurs as $valeur) // On lit chaque champ séparément pour les placer dans la requète
{
if($compteur < $nombreChamps) // tant que l'on n'est pas au dernier champ...
{
$SQLRequeteVALUES .= '\'' . $valeur . '\'' . ', '; // ...on place des virgules pour compléter la requète
$compteur++;
}
else // une fois arrivé au dernier champ...
{
$SQLRequeteVALUES .= '\'' . $valeur . '\'' . ');
'; // ...on termine par une parenthèse
}
}
$compteur = 1; // on réinitialise le compteur
}
}
else // lecture des valeurs
{
$SQLRequeteVALUES = 'VALUES (';
foreach($valeurs as $valeur) // On lit chaque champ séparément pour les placer dans la requète
{
if($compteur < $nombreChamps) // tant que l'on n'est pas au dernier champ...
{
$SQLRequeteVALUES .= '\'' . $valeur . '\'' . ', '; // ...on place des virgules pour compléter la requète
$compteur++;
}
else // une fois arrivé au dernier champ...
{
$SQLRequeteVALUES .= '\'' . $valeur . '\'' . ');
'; // ...on termine par une parenthèse
}
}
$compteur = 1; // on réinitialise le compteur
}
/* Le premier tour de boucle ne sert qu'à générer les colonnes du INSERT INTO
Le dernier tour de boucle génère un VALUES vide
Donc on ne les inclus pas dans la génération de la requète SQL finale.
*/
if($CSVcontientNomsChamps == 'true')
{
if(!$premiereBoucle AND !feof($fichierCSV))
{
$_SESSION['SQLRequeteComplete'] .= $SQLRequeteINTO . $SQLRequeteVALUES;
$_SESSION['SQLRequeteComplete'] = str_replace('\'NULL\'', 'NULL', $_SESSION['SQLRequeteComplete']);
}
}
else
{
if(!feof($fichierCSV))
{
$_SESSION['SQLRequeteComplete'] .= $SQLRequeteINTO . $SQLRequeteVALUES;
$_SESSION['SQLRequeteComplete'] = str_replace('\'NULL\'', 'NULL', $_SESSION['SQLRequeteComplete']);
}
}
$premiereBoucle = false;
}
echo '<a href="telechargement.php?fichier=' . $_SESSION['nomFichier'] .'">Télécharger le fichier SQL</a><br /><br />';
echo nl2br($_SESSION['SQLRequeteComplete']);
fclose($fichierCSV);
unlink($nomAleatoire); // on efface le fichier aléatoire créé
?> |
Partager