<?php
include("include/configuration.inc.php");

//necessite_identification();

//necessite_priv("admin");

$DOC_TITLE = "Gérer les produits";
include("include/mysql.inc.php");
connect();
if (isset($_POST['categorie'])) $categorie=$_POST['categorie'];else $categorie='Divers';
if (isset($_POST['tva'])) $tva=$_POST['tva']; else $tva='1';
if (isset($_POST['datafile'])) $fichier=$_POST['datafile'];
$tableprod = "articles";
$tablecat = "shop_prod_cat";
$tableref = "shop_prod_ref";
$separateur = ";";
$getcatid='SELECT id FROM shop_categories';// WHERE nom='.$categorie ;
$catid=mysql_query($getcatid);

####################  DEBUT DES FONCTIONS PHP ###########################

/* Cette fonction retourne la longueur de chaine maximale d'une colonne et
renvoie aussi "Y" pour signifier qu'il n'y a que des chiffres */
function FindMaxType($lignes, $col)
{
	$i = 1;
	$max = 0;
	$num = "Y";
	while(isset($lignes[$i])){
		if(isset($lignes[$i][$col])){
			$lignes[$i][$col] = trim($lignes[$i][$col]);
			$max = ((strlen($lignes[$i][$col]) > $max) ? strlen($lignes[$i][$col]) : $max);
			$num = ((!is_numeric($lignes[$i][$col])) ? "N" : $num);
		}
		$i++;
	}
	return array($max, $num);
}

##################### FIN DES FONCTIONS #################################

switch(isset($_POST['action'])){
	case "ajouter":

	/* Variables */
	$lignes = array();
	$erreurs = array();
	$separateur = (empty($_POST['separateur'])) ? ";" : $_POST['separateur'];
	$table = ((empty($_POST['table'])) ? "no_title" : $_POST['table']);

	/* En cas d'upload */
	if($_POST['type'] == "upload") {
		$fichier = $_FILES['fichier_u']['tmp_name'];
	}
	else {
		/* Vérifie que le fichier existe sur le serveur */
		$fichier = $_POST['fichier_s'];
		if (!file_exists($fichier))	{
			echo "<span class='erreur'>Fichier introuvable !<br>Importation stoppée.</span>";
			exit;
		}
	}

	/* Ouvre le fichier */
	$fichier = file($fichier);

	/* Enleve les caracteres speciaux de fin de ligne */
	$fichier = str_replace(chr(10), "", $fichier);
	$fichier = str_replace(chr(13), "", $fichier);

	/* Place tout dans un tableau */
	foreach($fichier as $ligne)	{
		$champs = explode($separateur, $ligne);
		array_push($lignes, $champs);
	}

	$requete = "";
	if(isset($_POST['firstline']) AND $_POST['firstline'] == "oui")	{
		/* Insertion des commentaires */
		//$requete .="<span class='comment'># CREATION DE LA TABLE</span><br>";
		$i = 0;
		$nb_col = count($lignes[0]);
		//$requete .= "CREATE TABLE $table (";

		while(isset($lignes[0][$i])) {
			/* Trouve le max et le type */
			$retour = FindMaxType($lignes, $i);
			/* Si champ sans nom, attribution d'un nom automatique */
			$lignes[0][$i] = (($lignes[0][$i] == "") ? "no_title$i" : $lignes[0][$i]);
			/* Mets la ligne */
			$requete .= "`".Connection::getConnection()->quote(strtr($lignes[0][$i], " ", "_"))."`";
			/* Ajoute le type de champ */
			$requete .= (($retour[1] == "Y") ? " INT($retour[0])" : " VARCHAR($retour[0])");
			/* Cree l'identifiant si necessaire & si possible */
			if($i==0 AND isset($_POST['firstcol']) AND $_POST['firstcol']=="oui") {
				if($retour[1]=="Y"){ # Si que des chiffres
					$requete .= " PRIMARY KEY NOT NULL AUTO_INCREMENT";
				}
				else {
					array_push($erreurs,"La première colonne ne peut pas être un identifiant car elle ne contient pas que des valeurs numériques.");
				}
			}
			$i++;
			/* Termine l'affichage par , ou par ; */
			$requete .= ((isset($lignes[0][$i])) ? ", " : ");");
		}
		/* Supprime la premiere ligne du tableau */
		array_shift($lignes);
		$requete .= "<br><br>";
	}

	/* Insertion des commentaires */
	//$requete .="<span class='comment'># INSERTION DES ENREGISTREMENTS (survolez les lignes pour connaitre le nombre d'enregistrements)</span><br>";

	$j = 2;

	/* Génère les enregistrements */
	foreach($lignes as $ligne){
		unset($classe, $title);
		$classe = "";
		$title = "Nombre d&#039;enregistrements : ".count($ligne);
		$i = 0;

		/* Erreur dans le fichier */
		if(isset($_POST['firstline']) AND $_POST['firstline'] == "oui" AND count($ligne)!=$nb_col) {
			$title = "Ligne $j: nombre d&#039;enregistrements (".count($ligne).") différent du nombre de champs de la table ($nb_col).";
			$classe = "erreur";
			if(!in_array("Des erreurs de nombre de champs ont été détectées dans le fichier !",$erreurs)) {
				array_push($erreurs,"Des erreurs de nombre de champs ont été détectées dans le fichier !");
			}
		}

		$today=date('d-m-Y');
		$ligne = str_replace('"', '', $ligne);
		$reqid='SELECT id FROM '.$tableprod.' order by id DESC limit 1';
		$resid = mysql_query($reqid);
		$getid=mysql_fetch_array($resid)or Connection::getConnection()->errorInfo().'<BR>';
		if(Connection::getConnection()->errorInfo()){
			echo'<BR>Il y a une erreur sl lors de la recuperation de l ID dans la base de donnee : '.Connection::getConnection()->errorInfo().'<BR>' ;
			} else {
				echo'<BR>recuperation de l ID reussie !<BR>';
			}
			$id=$getid['id']+1;
	while(isset($ligne[$i])){			
		//if(!empty($ligne[0]))$id=$ligne[0]; else $id='';
		if(!empty($ligne[0]))$reference=$ligne[0];else $reference='';
		if(!empty($ligne[1]))$nom=$ligne[1];else $nom='';
		if(!empty($ligne[2]))$description=$ligne[2];else $description='';
		if(!empty($ligne[9]))$image1=$ligne[9];else $image1=NULL;
		if(!empty($ligne[10]))$image2=$ligne[10];else $image2=NULL;
		if(!empty($ligne[11]))$image3=$ligne[11];else $image3=NULL;
		if(!empty($ligne[4]))$prix=str_replace(' ', '', $ligne[4]);else $prix='0.00';
		if(!empty($ligne[7]))$on_special=$ligne[7];else $on_special='0';
		//if(!empty($ligne[9]))$date_insere=$ligne[9];else 
		$date_insere=$today;
		//if(!empty($ligne[10]))$date_maj=$ligne[10];else 
		$date_maj=$today;
				//if(!empty($ligne[]))$lang1=strtolower($ligne[11]); 
				//if(!empty($lang1))$lang=str_replace(' ', '', $lang1);else 
			$lang='fr';
		if(!empty($ligne[12]))$image4=$ligne[12];else $image4=NULL;
		if(!empty($ligne[3]))$descriptif=$ligne[3];else $descriptif='';
		if(!empty($ligne[8]))$promotion=$ligne[8];else $promotion='';
		if(!empty($ligne[5]))$tva=$ligne[5];else $tva='0';
		if(!empty($ligne[19]))$etat=$ligne[19];else $etat='1';
		if(!empty($ligne[13]))$pdf=$ligne[13];else $pdf='';
		if(!empty($ligne[14]))$color=$ligne[14];else $color='';
		if(!empty($ligne[15]))$taille=$ligne[15];else $taille='';
		if(!empty($ligne[16]))$sexe=$ligne[16];else $sexe='';
			//if(!empty($ligne[]))$produit_id=$ligne[21];else 
		$produit_id=$reference;
		if(!empty($ligne[18]))$categorie_id=$ligne[18];else $categorie_id=$categorie;
			//if(!empty($ligne[]))$reference_id=$ligne[23];else 
		$reference_id='1';
		if(!empty($ligne[17]))$fabriquant=$ligne[17];else $fabriquant=$_POST['Fabriquant'];
			$i++;
		}
/* **********   JUST AN HELP FOR IMPORT 
 NoArticle;Nom;Description ;Descriptif;Prix;TVA;GM;OnSpecial;Promotion;Image1;Image2;Image3;Image4;PDF;Couleur;Taille;Sexe;Fabriquant;CategorieID;Etat;MotoPilote
	0		1		2			3		4	 5	6		7		8		 9		10		11		12	13	  14	 15		16		17		18			19		20
 PRV270S ;DICKINSON Veste;;PRV270;679;-7.6;24;;;PRV270IMG1.jpg;PRV270IMG2.jpg;PRV270IMG3.jpg;PRV270IMG4.jpg;PRV270.pdf;Noir;S;H;Bering;27;2;P
 */
 
$requete = 'INSERT INTO '.$tableprod.' (NoArticle, Description, )
				VALUES("'.$reference.'","'.$nom.'","'.$description.'","'.$image1.'","'.$image2.'","'.$image3.'","'.$prix.'","'.$on_special.'","'.$date_insere.'","'.$date_maj.'","'.$lang.'","'.$image4.'","'.$descriptif.'","'.$promotion.'","'.$tva.'","'.$etat.'","'.$pdf.'","'.$color.'","'.$taille.'","'.$sexe.'","'.$fabriquant.'");';

$requete2 = 'INSERT INTO '.$tablecat.' (produit_id, categorie_id) VALUES ("'.$id.'","'.$categorie_id.'");';
$requete3 = 'INSERT INTO '.$tableref.' (produit_id, reference_id) VALUES ("'.$id.'","'.$reference_id.'");';

		mysql_query($requete) or Connection::getConnection()->errorInfo().'<BR>';
		if(Connection::getConnection()->errorInfo()){ echo'<BR>Il y a une erreur dans la base de donner : '.Connection::getConnection()->errorInfo().'<BR>' ;	} 
		else { echo'<BR>Insersion des données réeussite !<BR>'; }
		mysql_query($requete2) or Connection::getConnection()->errorInfo().'<BR>';
		if(Connection::getConnection()->errorInfo()){ echo'<BR>Il y a une erreur dans la base de donner : '.Connection::getConnection()->errorInfo().'<BR>' ;	} 
		else { echo'<BR>Insersion des données réeussite !<BR>';	}
		mysql_query($requete3) or Connection::getConnection()->errorInfo().'<BR>';
		if(Connection::getConnection()->errorInfo()){ echo'<BR>Il y a une erreur dans la base de donner : '.Connection::getConnection()->errorInfo().'<BR>' ; } 
		else { echo'<BR>Insersion des données réeussite !<BR>';	}
		$j++;
	}

	/* Affichage des erreurs */
	foreach($erreurs as $value)	{
		echo "<li><span class='erreur'>$value</span></li>";
	}

	/* Affichage des requetes */
	echo "<br><hr size=1>$requete";
	echo "<br><hr size=1>$requete2";
	echo "<br><hr size=1>$requete3";
	break;

	default:
	echo "<form name='form1' method='post' action=".$_SERVER['PHP_SELF']." enctype='multipart/form-data'>"; ?>
	<h2><center>Importation d'un fichier .csv dans la Base MySql</center></h2><br>
	<p><b>Selectionnez une Marque</b><br>
	   <select name="Fabriquant" class="formulaire1">
	    <?php						
						$sql0 = "SELECT DISTINCT NoArticle, Fabriquant FROM articles GROUP BY Fabriquant ORDER BY Fabriquant ASC";						
						$result0 = mysql_query($sql0) ;
						if (mysql_num_rows($result0)) {
							if (mysql_num_rows($result0) > 0) {
								while ($arr0 = mysql_fetch_array($result0)) {									
									if ($arr0['Fabriquant'] == 0 ) {$selectionne = "selected";} else {$selectionne = "";}									
									echo "<option value=\"".$arr0['Fabriquant']."\" $selectionne>".$arr0['Fabriquant']."</option>";									
								}
							}
						}
						?>
		</select></p>
	<p><b>Choisissez une Catégories</b><br>
	   <select name="categorie" class="formulaire1">
	    <option value="null">Toutes les catégories</option>
		<?php						
						$sql1 = "SELECT DISTINCT ID, Nom, Description FROM shop_categories GROUP BY Nom ORDER BY Nom ASC";						
						$result1 = mysql_query($sql1) ;
						if (mysql_num_rows($result1)) {
							if (mysql_num_rows($result1) > 0) {
								while ($arr1 = mysql_fetch_array($result1)) {									
									if ($arr1['Nom'] == vb($frm['Nom'])) {$selectionne = "selected";} else {$selectionne = "";}									
									echo "<option value=\"".$arr1['Nom']."\" $selectionne>".$arr1['Nom']."</option>";									
								}
							}
						}
						?>
		</select></p>	
		<p><b>Choisissez Taux de TVA</b><br />
			<select class="formulaire1" name="tva">		
						<?php						
						$sql2 = "SELECT DISTINCT PDF, TVA FROM articles GROUP BY TVA ORDER BY TVA DESC";						
						$result2 = mysql_query($sql2) ;
						if (mysql_num_rows($result2)) {
							if (mysql_num_rows($result2) > 0) {
								while ($arr = mysql_fetch_array($result2)) {									
									if ($arr['TVA'] == vb($frm['TVA'])) {$selectionne = "selected";} else {$selectionne = "";}									
									echo "<option value=\"".$arr['TVA']."\" $selectionne>".$arr['TVA']."</option>";									
								}
							}
						}
						?>
					</select></p>

	<p><b>Séparateur :</b><input type="text" size="2" maxlength="2" name="separateur" value=";"></p>
	<p><label for="firstline">La première ligne <br />correspond aux labels :</label><input type="checkbox" name="firstline" id="firstline" value="oui" /></p>	
	<p><b>Fichier à convertir:</b><br>
		<!--- <input type="radio" name="type" value="onserver"><input type="text" name="fichier_s" onFocus="form1.type[0].checked=true;">
		<span class='comment'>Le fichier existe sur le serveur</span> --->
	</p>
	<p><input type="radio" name="type" value="upload" checked="checked"><input type="file" name="fichier_u" ><span class='comment'>Le fichier à importer</span></p>	
	<p><input type="submit" name="submit" value="Importer !" title="Lancez l importation"></p>
	<p><input type="hidden" name="action" value="ajouter"></p>
	</form>
	<?php
	break;
}

?>