Modifier les doublons
Meryem
-
Meryem -
Meryem -
Bonjour!
je me bloque et j'au besoin de l'aide s'il vous plait!
Bon, j'importe un fichier excel dans ma base de données avec PHPEXCEL et j'affiche le resultat dans un tableau
voila mon code
EDIT : Ajout de la coloration syntaxique dans les balises de code (jordane)
je veux quand j'importe un autre classeur excel, les lignes dont le titre_ouv se ressemble ne s'ajoute pas, par contre le nbre_ouv se modifie avec la nouvelle valeur
MERCI!
je me bloque et j'au besoin de l'aide s'il vous plait!
Bon, j'importe un fichier excel dans ma base de données avec PHPEXCEL et j'affiche le resultat dans un tableau
voila mon code
if(isset($_FILES['doc'])){ $errors= array(); $file_name =mssql_escape_string($_FILES['doc']['name']); $file_size =mssql_escape_string($_FILES['doc']['size']); $file_tmp =mssql_escape_string($_FILES['doc']['tmp_name']); $file_type =mssql_escape_string($_FILES['doc']['type']); $file_ext =mssql_escape_string(strtolower(end(explode('.',$_FILES['doc']['name'])))); $expensions= mssql_escape_string(array("xlsx")); if(in_array($file_ext,$expensions)=== false){ $errors[]="extension not allowed, please choose a xlsx file."; } if($file_size > 2097152){ $errors[]='File size must be excately 2 MB'; } move_uploaded_file($file_tmp,"doc/".$file_name); $file_tmp =$_FILES['doc']['tmp_name']; set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/'); include 'PHPExcel/IOFactory.php'; // This is the file path to be uploaded. $inputFileName = 'doc/'.$file_name; try { $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); } catch(Exception $e) { die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); } $allDataInSheet = $objPHPExcel->getActiveSheet()->toArray('',true,true,true); $arrayCount = count($allDataInSheet); // Here get total count of row in that Excel sheet for($i=2;$i<=$arrayCount;$i++){ $titre_ouv =mssql_escape_string(trim($allDataInSheet[$i]["A"])); $auteur_ouv =mssql_escape_string(trim($allDataInSheet[$i]["B"])); $nbre_ouv =mssql_escape_string(trim($allDataInSheet[$i]["C"])); $source_ouv =mssql_escape_string(trim($allDataInSheet[$i]["D"])); $anneepub_ouv=mssql_escape_string(trim($allDataInSheet[$i]["F"])); $id_cat =mssql_escape_string(trim($allDataInSheet[$i]["G"])); if ( !empty($titre_ouv) || !empty($auteur_ouv) || !empty($nbre_ouv) || !empty($source_ouv) || !empty($anneepub_ouv) || !empty($id_cat)) { $insertTable= mysql_query("insert into ouvrages (titre_ouv,auteur_ouv,nbre_ouv,source_ouv,anneepub_ouv,id_cat) values('".$titre_ouv."', '".$auteur_ouv."' ,'".$nbre_ouv."','".$source_ouv."', '".$anneepub_ouv."','".$id_cat."');" ); }}} ?>
EDIT : Ajout de la coloration syntaxique dans les balises de code (jordane)
je veux quand j'importe un autre classeur excel, les lignes dont le titre_ouv se ressemble ne s'ajoute pas, par contre le nbre_ouv se modifie avec la nouvelle valeur
MERCI!
A voir également:
- Modifier les doublons
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Doublons photos - Guide
- Modifier story facebook - Guide
- Modifier extension fichier - Guide
1 réponse
Bonjour,
Déjà... tu n'as visiblement pas tenu compte des mes remarques précédentes concernant ton code.
Il serait bien de commencer par corriger ce qu'on t'indique !
Ensuite, quand tu dis
Tu n'auras pas les titres qui se "ressemblent". Soit il sont identiques... soit ils ne le sont pas !
(les algo de "ressemblance" étant compliqués à mettre en place )
Quoi qu'il en soit, comme pour tes lignes vides (voir ta question précédente.....) il te suffit de faire un IF pour vérifier si une valeur précédente correspond à la nouvelle valeur ou non.
A la limite, tu peux stocker les $titre_ouv dans un Array au fur et à mesure que tu parcours ton fichier excel et envuite vérifier si la valeur existe ou non dans l'array.
https://www.php.net/manual/fr/function.in-array.php
Déjà... tu n'as visiblement pas tenu compte des mes remarques précédentes concernant ton code.
Il serait bien de commencer par corriger ce qu'on t'indique !
Ensuite, quand tu dis
le titre_ouv se ressemble
Tu n'auras pas les titres qui se "ressemblent". Soit il sont identiques... soit ils ne le sont pas !
(les algo de "ressemblance" étant compliqués à mettre en place )
Quoi qu'il en soit, comme pour tes lignes vides (voir ta question précédente.....) il te suffit de faire un IF pour vérifier si une valeur précédente correspond à la nouvelle valeur ou non.
A la limite, tu peux stocker les $titre_ouv dans un Array au fur et à mesure que tu parcours ton fichier excel et envuite vérifier si la valeur existe ou non dans l'array.
https://www.php.net/manual/fr/function.in-array.php
Je suis nul en php et j'ai pas suffisamment de temps pour faire un code parfait, j'ai juste besoin de terminer mon mini projet.
Je veux dire identiques pas ressemblance je m'excuse.
tu peux me dire comment je peux faire avec un simple IF
merci
Si dans le même document, tu utilises l'array comme je te l'ai indiqué.
Si tu veux regarder dans la bdd... ben tu fais une requête pour voir si le titre y existe déjà ou non.
et ça marche.
mais comme j'ai déjà cité, Si le titre est identiques on écrase l'ancienne valeur de nbre_ouv et on la remplace par la nouvelle valeur.
Donc je pense que à la place de "echo 'cette entrée existe déjà !';" Il me faut une requête.
Oui. Une requête UPDATE ....