What's new

Help Import excel to php?

loktoy

Eternal Poster
Joined
Oct 20, 2014
Posts
1,168
Solutions
2
Reaction
103
Points
497
Age
30
bakit kaya nadodouble yun last part ng excel ko kapag inauupload ko na sya sa table.php tapos pag upload ko mag didisplay yun inaupload tapos nadodouble yun pinaka last
ito code ko

<?php
include "../config/config.php";


?>
<!DOCTYPE html>
<HTMl:5>
<head>
<title>sample Design</title>
<link rel="stylesheet" href="../Innerjoin/css/bootstrap.css">
<link rel="stylesheet" href="../Innerjoin/css/style.css">
<script src="../Newproject/js/bootstrap.bundle.js"></script>

</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file" value="">
<br>
<input type="submit" name="btnUpload" value="Upload LDDAP_ADA">
</form>
<div class="pt-3 " >
<table class="table table-sm ">
<div class="text-align">
<thead>
<tr >
<th>Payee Name</th>
<th>Particular</th>
<th>Amount</th>
<th>LDDAP ADA</th>
<th>Date</th>
<th>Status</th>
</tr>
<tr>
<td colspan='6'><hr></td>
</tr>
</thead>
<tbody>
<?php
if(isset($_POST['btnAdd'])){
$particular = $_POST['particular'];
$amount = $_POST['amount'];
$lddapada = $_POST['lddapada'];
$date = $_POST['date'];
$status = $_POST['status'];
foreach($_POST['payeename'] as $index => $value){
$new_payeename = $value;
$new_particular = $particular[$index];
$new_amount = $amount[$index];
$new_lddapada = $lddapada[$index];
$new_date = $date[$index];
$new_status = $status[$index];
mysqli_query($con, "INSERT INTO lddap (payee_name, particular, amount, lddap_ada, date, status) VALUES ('$new_payeename', '$new_particular', '$new_amount', '$new_lddapada', '$new_date', '$new_status')");
echo "<script> window.location.href = voucher.php?notify = <font color= green>items uploaded</font>';</script>";
}
}
if(isset($_POST['btnUpload'])){
echo "<hr>";
echo "<table border='1' width='40%'>";
echo "<tr>
<td width='70%'><b>Payee Name</b></td>
<td width='70%'><b>Particular</b></td>
<td width='70%'><b>Amount</b></td>
<td width='70%'><b>LDDAP-ADA</b></td>
<td width='70%'><b>Date</b></td>
<td width='70%'><b>Status</b></td>
</tr>
<tr>
<td colspan='2'><hr></td>
</tr>

<form method = 'POST'>

";

$btnStatus = "ENABLED";
$filename = $_FILES['file']['tmp_name'];
if($_FILES['file']['size'] > 0) {

$file = fopen($filename, "r");

$row = 1;
$payeename = $particular = $amount = $lddapada = $date = $status = "";
$payeenameErr = $particularErr = $amountErr = $lddapadaErr = $dateErr = $statusErr = "";
while (($data = fgetcsv($file, 10000, ",")) !== false){

if($row == 1){
$row++;
continue;
}
if(empty($data[0])){
$payeenameErr = "Product name is empty";
$btnStatus = "DISABLED";
}else {
$payeename = $data[0];
}
if(empty($data[1])){
$particularErr = "Product name is empty";
$btnStatus = "DISABLED";
}else {
$particular = $data[1];
}
if(empty($data[2])){
$amountErr = "Product name is empty";
$btnStatus = "DISABLED";
}else {
$amount = $data[2];
}
if(empty($data[3])){
$lddapadaErr = "Product name is empty";
$btnStatus = "DISABLED";
}else {
$lddapada = $data[3];
}
if(empty($data[4])){
$dateErr = "Product name is empty";
$btnStatus = "DISABLED";
}else {
$date = $data[4];
}
if(empty($data[5])){
$statusErr = "Product name is empty";
$btnStatus = "DISABLED";
}else {
$status = $data[5];
}
echo "<input type = 'hidden' name = 'payeename[]' value ='$payeename'>";
echo "<input type = 'hidden' name = 'particular[]' value ='$particular'>";
echo "<input type = 'hidden' name = 'amount[]' value = '$amount'>";
echo "<input type = 'hidden' name = 'lddapada[]' value = '$lddapada'>";
echo "<input type = 'hidden' name = 'date[]' value = '$date'>";
echo "<input type = 'hidden' name = 'status[]' value = '$status'>";
echo "<tr>
<td>$payeename</td>
<td>$particular</td>
<td>$amount</td>
<td>$lddapada</td>
<td>$date</td>
<td>$status</td>

</tr>";
}
}
echo "<tr>
<td width='100%'>
<div align ='center'>
<input type = 'submit' $btnStatus name = 'btnAdd' value = 'Add this item'>
</div>
</td>
</tr>

</form>

";

echo "</table>";
}

?>
</body>
</HTMl:5>
 
Ang problema sa code mo ay na-double yung pinaka-last na part ng excel file mo kapag ina-upload sa table.php. Ang dahilan ng ganitong pangyayari ay dahil sa pagkakasulat ng code mo.

Sa line na ito ng code mo:

PHP:
foreach($_POST['payeename'] as $index => $value){
   $new_payeename = $value;
   $new_particular = $particular[$index];
   $new_amount = $amount[$index];
   $new_lddapada = $lddapada[$index];
   $new_date = $date[$index];
   $new_status = $status[$index];
   mysqli_query($con, "INSERT INTO lddap (payee_name, particular, amount, lddap_ada, date, status) VALUES ('$new_payeename', '$new_particular', '$new_amount', '$new_lddapada', '$new_date', '$new_status')");
   echo "<script> window.location.href = voucher.php?notify = <font color= green>items uploaded</font>';</script>";
}

Sa loob ng foreach loop na ito, nilalagay mo sa database ang bawat value ng $payeename, $particular, $amount, $lddapada, $date, at $status na nakuha mo mula sa $_POST array. Ang kaso, hindi mo na-validate kung mayroong mga duplicate values sa mga arrays na ito bago mo sila i-insert sa database. Kaya nangyayari, nagkakaroon ng duplicates sa database.

Para maayos ito, puwede mong gamitin ang array_unique function para alisin ang mga duplicate values bago mo sila i-insert sa database. Pwede mo baguhin ang code mo tulad nito:

PHP:
$unique_payeename = array_unique($_POST['payeename']);
$unique_particular = array_unique($particular);
$unique_amount = array_unique($amount);
$unique_lddapada = array_unique($lddapada);
$unique_date = array_unique($date);
$unique_status = array_unique($status);

foreach($unique_payeename as $index => $value){
   $new_payeename = $value;
   $new_particular = $unique_particular[$index];
   $new_amount = $unique_amount[$index];
   $new_lddapada = $unique_lddapada[$index];
   $new_date = $unique_date[$index];
   $new_status = $unique_status[$index];
   mysqli_query($con, "INSERT INTO lddap (payee_name, particular, amount, lddap_ada, date, status) VALUES ('$new_payeename', '$new_particular', '$new_amount', '$new_lddapada', '$new_date', '$new_status')");
   echo "<script> window.location.href = voucher.php?notify=<font color=green>items uploaded</font>';</script>";
}

Sa code na ito, ginamit natin ang array_unique function para alisin ang mga duplicate values sa arrays bago mo sila gamitin sa foreach loop. Ito ay mag-aalis ng mga duplicate values at maiiwasan ang pagkakaroon ng duplicates sa database.

Sana makatulong itong solusyon na ito sa iyong isyu. Kung mayroon ka pang ibang katanungan, huwag kang mag-atubiling magtanong ulit. Salamat!
 
Ang problema sa code mo ay na-double yung pinaka-last na part ng excel file mo kapag ina-upload sa table.php. Ang dahilan ng ganitong pangyayari ay dahil sa pagkakasulat ng code mo.

Sa line na ito ng code mo:

PHP:
foreach($_POST['payeename'] as $index => $value){
   $new_payeename = $value;
   $new_particular = $particular[$index];
   $new_amount = $amount[$index];
   $new_lddapada = $lddapada[$index];
   $new_date = $date[$index];
   $new_status = $status[$index];
   mysqli_query($con, "INSERT INTO lddap (payee_name, particular, amount, lddap_ada, date, status) VALUES ('$new_payeename', '$new_particular', '$new_amount', '$new_lddapada', '$new_date', '$new_status')");
   echo "<script> window.location.href = voucher.php?notify = <font color= green>items uploaded</font>';</script>";
}

Sa loob ng foreach loop na ito, nilalagay mo sa database ang bawat value ng $payeename, $particular, $amount, $lddapada, $date, at $status na nakuha mo mula sa $_POST array. Ang kaso, hindi mo na-validate kung mayroong mga duplicate values sa mga arrays na ito bago mo sila i-insert sa database. Kaya nangyayari, nagkakaroon ng duplicates sa database.

Para maayos ito, puwede mong gamitin ang array_unique function para alisin ang mga duplicate values bago mo sila i-insert sa database. Pwede mo baguhin ang code mo tulad nito:

PHP:
$unique_payeename = array_unique($_POST['payeename']);
$unique_particular = array_unique($particular);
$unique_amount = array_unique($amount);
$unique_lddapada = array_unique($lddapada);
$unique_date = array_unique($date);
$unique_status = array_unique($status);

foreach($unique_payeename as $index => $value){
   $new_payeename = $value;
   $new_particular = $unique_particular[$index];
   $new_amount = $unique_amount[$index];
   $new_lddapada = $unique_lddapada[$index];
   $new_date = $unique_date[$index];
   $new_status = $unique_status[$index];
   mysqli_query($con, "INSERT INTO lddap (payee_name, particular, amount, lddap_ada, date, status) VALUES ('$new_payeename', '$new_particular', '$new_amount', '$new_lddapada', '$new_date', '$new_status')");
   echo "<script> window.location.href = voucher.php?notify=<font color=green>items uploaded</font>';</script>";
}

Sa code na ito, ginamit natin ang array_unique function para alisin ang mga duplicate values sa arrays bago mo sila gamitin sa foreach loop. Ito ay mag-aalis ng mga duplicate values at maiiwasan ang pagkakaroon ng duplicates sa database.

Sana makatulong itong solusyon na ito sa iyong isyu. Kung mayroon ka pang ibang katanungan, huwag kang mag-atubiling magtanong ulit. Salamat!
ganun pa din po
 
ganun pa din po
Kung ganun pa rin po ang problema, maaaring may ibang isyu sa code mo kung bakit nadodoble yung pinaka-last na bahagi ng excel file mo kapag ini-upload sa table.php. Narito ang ilang posibleng mga isyu at solusyon para maayos ito:

1. Pagkakaroon ng duplicate entries sa database: Siguraduhin na hindi na nag-eexist sa database ang mga entries na nasa excel file mo bago mo sila i-insert. Pwede mo gamitin ang database queries tulad ng SELECT o UNIQUE constraint sa pag-insert para masiguro na walang duplicate entries.

2. Pagkakaroon ng duplicate values sa $_POST arrays: I-check mo kung mayroong mga duplicate values sa $_POST arrays bago mo sila i-insert sa database. Pwede mong gamitin ang array_unique function para alisin ang mga duplicate values.

```
$unique_payeename = array_unique($_POST
 

Similar threads

Back
Top