2016-06-16 3 views
0

Je dois vérifier si l'insertion de valeur dans la base de données tandis que importer fichier Excel, si elle a déjà la valeur dans la base de données alors il devrait être mis à jour.Mise à jour sur l'entrée dulipcate lors de l'importation fichier Excel - php mysql

Ci-dessous est la valeur de la table producttab dans la base

prdid | prdname 
00A | prd1 
00B | prd2 
00C | prd3 
00D | prd4 

Ci-dessous est EXCEL des données du fichier

prdid | prdname 
00A | prdnew 
00B | prd2new 
00E | prd8 
00H | prd9 

Donc, si je télécharger Excel fichier ci-dessus puis,

00A , 00B devrait obtenir UPDATE IN produc table ttab comme ils sont déjà présents là ... mais 00E, 00H devrait obtenir insert

* ci-dessous est ce que j'ai essayé, la valeur est en train d'insérer correctement seulement MISE À JOUR NE PAS HAPPENING, je veux dire IF..ELSE condition est parfait, seulement UPDATE ne va pas correcte *

if(isset($_POST["Upload"])) 
{ 
    $fileinfo = pathinfo($_FILES["uploadFile"]["name"]); 

    $filetype = $_FILES["uploadFile"]["type"]; 
    $remark = NULL; 

    //Validate File Type 
    if(strtolower(trim($fileinfo["extension"])) != "csv") 
    { 
     $_SESSION['msg_r'] = "Please select CSV file"; 
     header("location:importfile.php"); 
     exit; 
    } 
    else 
    { 
     $file_path = $_FILES["uploadFile"]["tmp_name"]; 
    } 

$row = 0; 

$tempFileName = time().".csv"; 

if (is_uploaded_file($file_path)) { 
    $fileCopied = copy($file_path , $tempFileName); 


if (($handle = fopen($tempFileName, "r")) !== FALSE) { 
    fgetcsv($handle); 
    while (($data = fgetcsv($handle, 6000, ",")) !== FALSE) { 
     $num = count($data); 
     for ($c=0; $c < $num; $c++) { 
      $col[$c] = $data[$c]; 
     } 

$col1 = $col[0]; // prdid 
$col2 = $col[1]; // prdname 

$sql = "SELECT prdid FROM producttab WHERE prdid = '".$col1."' "; 
$query = db_query($sql); 
$pfetech = db_fetch($query); 

// ABOVE select QUERY IS PERFECT , it taking me to if conditions 

if($col1 == $pfetech['prdid']){ 

    // only below update not happening 

    $sqlup = "UPDATE producttab 
       SET prdid = ".$pfetech['prdid'].", 
        prdname = ".$col2." "; 
    $sqlup .= " WHERE prdid = ".$pfetech['prdid']." ";  
    $resultsqlupdate = mysql_query($sqlup); 

}else{  

$query = "INSERT INTO producttab(prdid,prdname) VALUES('".$col1."','".$col2.")"; 
$s = mysql_query($query); 

} 


} 
    fclose($handle); 
} 
    echo "<center>File data imported to database!!</center>";        
} 
} 

} 

Ci-dessous impression/écho de requête UPDATE,

update producttab set prdname='prdnew' WHERE prdid='00A' 
update producttab set prdname='prd2new' WHERE prdid='00B' 

Valeur prdname est montrée appropriée comme par fichier excel .... que la mise à jour est ne se passe pas ....

+0

ici ... s'il vous plaît laissez-moi ce qui est question .... – user3209031

+0

u peut utiliser la requête alors u existe peut mettre à jour ou insérer sur la base de si la décision. – Asad

+0

u signifie dire EN CLAUSE ?? ... mais comment je peux comme la valeur de $ col1 venant comme ... 00A00B ... ensemble ... peut-on m'aider s'il vous plaît – user3209031

Répondre

2

vous pouvez utiliser existe requête pour vérifier si est existe ou non dans la base de données, ci-après requête

select exists(select 1 from producttab where prdid='".$col1."'); 

il donnera u 1 si elle sort et 0 sinon, faire plus insertion ou updation sur le cas d'autre état

et seulement mettre une chose pas d'autres comme celui-ci

"UPDATE producttab 
      SET prdname = ".$col2." 
    $sqlup .= " WHERE prdid = ".$pfetech['prdid']." "; 

oh désolé u besoin de mettre à jour prdname pas PRDID. a modifié ma réponse

ps. u devrait utiliser l'importation mysql de requête csv pour ce ici est le lien pour toute personne aide http://www.mysqltutorial.org/import-csv-file-mysql-table/

+0

Salut Asad, merci pour la réponse ... mais le problème n'est pas sur la sélection ..le problème est sur UPDATE ... quand je echo/imprime ma requête de mise à jour ... il résulte comme ci-dessous ... update producttab set prdid = '00A 'O WH prdid =' 00A 'mise à jour produit set prdid =' 00B 'O WH prdid =' 00B '... ne sais pas ce qui ne va pas .. – user3209031

+0

désolé @ user3209031 u besoin de mettre à jour prdname pas prdid, Ive l'a édité – Asad

+0

J'ai fait. .. mais ne fonctionne pas je reçois le message "Données de fichier importées à la base de données !!"mais dans la base de données VALEUR N'EST PAS UPDATE ..I MEANS prdname n'est pas mis à jour ..il en montrant la même vieille valeur – user3209031