ExcelScript
arkadaşlar herkese iyi forumlar excel scripti yazdım fakat localhostta calısan kod hostinge yazdıgımda verileri sqle yazmıyor false değeri veriyor ama scriptte sorunyok verileriekrana yazdırabiliyorum
<?php
?>
<!DOCTYPE html>
<html>
<head>
<title>XLSx</title>
</head>
<body>
<form action="#" method="POST" enctype="multipart/form-data">
<input type="file" name="excel">
<input type="submit" name="submit">
</form>
<?php
if(isset($_FILES['excel']['name'])){
$con=mysqli_connect("localhost","admin",""1234"","veriler");
if ($con){
echo 'basarili';
}
include "xlsx.php";
if($con){
$excel=SimpleXLSX::parse($_FILES['excel']['tmp_name']);
echo "<pre>";
// print_r($excel->rows(1));
print_r($excel->dimension(2));
print_r($excel->sheetNames());
for ($sheet=0; $sheet < sizeof($excel->sheetNames()) ; $sheet++) {
$rowcol=$excel->dimension($sheet);
$i=0;
if($rowcol[0]!=1 &&$rowcol[1]!=1){
foreach ($excel->rows($sheet) as $key => $row) {
//print_r($row);
$q="";
foreach ($row as $key => $cell) {
//print_r($cell);echo "<br>";
if($i==0){
$q.=$cell. " varchar(200),";
}else{
$q.="'".$cell. "',";
}
}
if($i==0){
$query1="TRUNCATE veriler";
mysqli_query($con,$query1);
}
if($i==0){
$query="CREATE table ".$excel->sheetName($sheet)." (".rtrim($q,",").");";
}
else{
$query="INSERT INTO ".$excel->sheetName($sheet)." values (".rtrim($q,",").");";
}
echo $query;
if(mysqli_query($con,$query))
{
echo "true";
}
else{
echo "false";
}
echo "<br>";
$i++;
}
}
}
}
}
?>
</body>
</html>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Kodunuz localhost'ta çalışıp uzak sunucuda çalışmıyorsa aklıma gelen 3-4 ihtimal var:
- Kodunuzda localhost'ta çalışmaya uygun yollar/değerler bulunuyordur. Mesela veritabanı şifresi, .htaccess dosyasında belirtilen yollar, include yolları...
- Sunucuda oluşturduğunuz veritabanına bağlandığınız kullanıcı adına, veritabanına yazma yetkisi verilmemiş olabilir.
- Excel dosyasının boyutu çok büyükse ve sunucuda belirlenmiş maksimum upload sınırını aşıyorsa hataya düşüyor olabilirsiniz.
- Sunucudaki PHP ayarlarıyla sizin PHP ayarlarınız farklıdır. Sunucudaki PHP versiyonunu değiştirmeniz veya sunucudaki bazı PHP özelliklerini aktif etmeniz gerekiyor olabilir.
Paylaşımlı sunucular genelde PHP'nin hata gösterme özelliğini kapalı tutarlar. Eğer sunucya attığınızda boş beyaz sayfa görüyorsanız veya istediğiniz bir PHP değerinin olması gereken yerde sadece boşluk varsa muhtemelen orada bir hata vardır ama sunucu bunu göstermiyordur. Hatayı anlamak için bu ayarı açmanız gerekir.
Bir ihtimal de sunucuda hata oluştuğunda kök dizininizde otomatik olarak hataları belirten dosya oluşturuluyor olabilir. FTP'den error_logs.txt, error.log vb bir dosya oluşturulmuş mu diye bakıp oluşan hataları oradan inceleyebilirsiniz.
Hatayı bilmeden yorum yapmak zor.
PHP sürümünü aynı yaptım olmadı mysql version farklıymış varchar 250 yaptım sığmadığıiçin otomatik olarak insert çalışmıyormuş teşekkür derim