Merhaba. "0" yazdığımda "id" yi çekiyor. "1" Yazdığımda ise "resim.jpg" şeklinde çekiyor. "2" yazdığımda başka bir alan ı çekiyor. Bana şu şekil bir veri çekme işlemi lazım ama nasıl olur bilemedim.
[1][0]
[1][1]
gibi. Döngü içine aldığımda da aynı resmi çekiyor.
Bu kodlarla ben iki ayrı id'de kayıt yapıyorum. Siz, tek satırda birden çok resim adı kaydedebileceğimi yazmıştınız. Nasıl yapabilirim bunu?
Hataları şu şekilde hallettim.
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$filename = "urunadlari.json";
$arr = [".$s_ad.", ".$s_ozellik.", ".$s_kategori.", ".$s_eskifiyat.", ".$s_yenifiyat.", ".$s_indirimlifiyat.", ".$s_urunsayisi.", ".$s_urunalani."];
$dizijson = json_encode($arr);
file_put_contents($filename, $dizijson);
$veriokujson = file_get_contents($filename);
$yeniveri = json_decode($veriokujson);
// foreach($yeniveri as $oku) {
if(move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {
$jsonveriekle = "INSERT INTO indexsayfaurun (urun_resim, urun_ad, urun_ozellik, urun_kategori, urun_eskifiyat, urun_yenifiyat, urun_indirimlifiyat, urun_sayisi, urun_alani)
VALUES ('$dosya_adi', '$s_ad', '$s_ozellik', '$s_kategori', '$s_eskifiyat', '$s_yenifiyat', '$s_indirimlifiyat', '$s_urunsayisi', '$s_urunalani')";
$jsonverieklesorgu = mysqli_query($db, $jsonveriekle);
// }
}
}
if ($jsonverieklesorgu) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Kaydedildi";
header("Refresh:3; url=urunekle.php");
?>
</div>
<?php }
Dediğiniz gibi, verileri aşağıdaki gibi json dosyasına kaydettim ama verileri veritabanına yazdırırken 30 sıra şöyle bir hata verdi
Warning: Illegal string offset 'urun_ad' in sayfa 51
Warning: Illegal string offset 'urun_ad' in sayfa 52
gibi. Bir de veritabanına veritabanı alanı kadar da boş kayıt girdi. Kodlar
if(isset($_FILES['dosya'])) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$filename = "urunadlari.json";
$arr = [".$s_ad.", ".$s_ozellik.", ".$s_kategori.", ".$s_eskifiyat.", ".$s_yenifiyat.", ".$s_indirimlifiyat.", ".$s_urunsayisi.", ".$s_urunalani."];
$dizijson = json_encode($arr);
file_put_contents($filename, $dizijson);
$veriokujson = file_get_contents($filename);
$yeniveri = json_decode($veriokujson);
foreach($yeniveri as $oku) {
$jsonveriekle = "INSERT INTO indexsayfaurun (urun_ad, urun_ozellik, urun_kategori, urun_eskifiyat, urun_yenifiyat, urun_indirimlifiyat, urun_sayisi, urun_alani)
VALUES ('".$oku["urun_ad"]."', '".$oku["urun_ozellik"]."', '".$oku["urun_kategori"]."', '".$oku["urun_eskifiyat"]."', '".$oku["urun_yenifiyat"]."', '".$oku["urun_indirimlifiyat"]."', '".$oku["urun_sayisi"]."', '".$oku["urun_alani"]."')";
$jsonverieklesorgu = mysqli_query($db, $jsonveriekle);
}
if($jsonverieklesorgu) {
echo "tamam";
} else {
echo "olmadı";
}
}
}
?>
Kodları bu şekilde çalıştırdım. Ben, öncesiyle aradaki farkı anlamadım ama kodlar üzerinde oynamadan evvel yani çalışırken kaydettiydim. Tekrar çalıştı. Kodlar aşağıda. ckeditor le de çalışıyor şu an.
<?php
if(isset($_FILES['dosya'])) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$dosya_sayisi = count($_FILES['dosya']["name"]);
for($i=0; $i<$dosya_sayisi; $i++) {
$dosya_adi = $_FILES['dosya']["name"][$i];
$gecici_yol = $_FILES['dosya']["tmp_name"][$i];
$dosya_tipi = $_FILES['dosya']["type"][$i];
$dosya_boyutu = $_FILES['dosya']["size"][$i];
if($dosya_boyutu > (1024*1024*3)) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Dosya Boyutu 3 MB'dan Büyük Olamaz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(!($dosya_tipi=="image/jpeg" || $dosya_tipi=="image/jpg" || $dosya_tipi=="image/png")) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Sadece Jpeg, Jpg ve Png Yükleyebilirsiniz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(move_uploaded_file($gecici_yol,"../../images/indexurunler/" . $dosya_adi)) {
$sorgualani = "INSERT INTO indexsayfaurun (urun_resim, urun_ad, urun_ozellik, urun_kategori,
urun_eskifiyat, urun_yenifiyat, urun_indirimlifiyat,
urun_sayisi, urun_alani)
VALUES ('$dosya_adi', '$s_ad', '$s_ozellik', '$s_kategori', '$s_eskifiyat', '$s_yenifiyat', '$s_indirimlifiyat', '$s_urunsayisi', '$s_urunalani')";
$sorgu = mysqli_query($db, $sorgualani);
}
}
}
if($sorgu) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Kaydedildi";
// header("Refresh:3; url=urunekle.php");
?>
</div>
<?php
// header("Refresh:3; url=urunekle.php");
} else { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Eklenemedi <br>";
header("Refresh:3; url=urunekle.php");
?>
</div>
<?php
}
}
?>
Ckeditor yükledim onda da çalışmadı. Kodlar biraz uzun ama paylaşayım bir bakın.
<?php
if(isset($_FILES['dosya'])) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$dosya_sayisi = count($_FILES['dosya']["name"]);
for($i=0; $i<$dosya_sayisi; $i++) {
$dosya_adi = $_FILES['dosya']["name"][$i];
$gecici_yol = $_FILES['dosya']["tmp_name"][$i];
$dosya_tipi = $_FILES['dosya']["type"][$i];
$dosya_boyutu = $_FILES['dosya']["size"][$i];
if($dosya_boyutu > (1024*1024*3)) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Dosya Boyutu 3 MB'dan Büyük Olamaz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(!($dosya_tipi=="image/jpeg" || $dosya_tipi=="image/jpg" || $dosya_tipi=="image/png")) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Sadece Jpeg, Jpg ve Png Yükleyebilirsiniz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(move_uploaded_file($gecici_yol,"../../images/indexurunler/" . $dosya_adi)) {
$sorgualani = "INSERT INTO indexsayfaurun (urun_resim, urun_ad, urun_ozellik, urun_kategori,
urun_eskifiyat, urun_yenifiyat, urun_indirimlifiyat,
urun_sayisi, urun_alani)
VALUES ('$dosya_adi', '$s_ad', '$s_ozellik' '$s_kategori', '$s_eskifiyat', '$s_yenifiyat', '$s_indirimlifiyat', '$s_urunsayisi', '$s_urunalani')";
$sorgu = mysqli_query($db, $sorgualani);
}
}
}
if($sorgu) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Kaydedildi";
header("Refresh:3; url=urunekle.php");
?>
</div>
<?php
} else { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Eklenemedi <br>";
header("Refresh:3; url=urunekle.php");
?>
</div>
<?php
}
}
?>
Sorun güncel arkadaşlar.
Bu sorun galiba "trim" ve "strip_tags" kullanmadığım için oluyor. Aşağıdaki kodlara şu şekilde
$ozellik = trim(strip_tags($_POST['ozellik']));
trim ve strip_tags eklediğimde de bana şöyle bir hata veriyor
Warning: strip_tags() expects parameter 1 to be string, array given in
Notice: Trying to access array offset on value of type null in
internetten baktığımda da bu hatayı nasıl düzeltebileceğime dair, "implode" kullanımını öneriyor. "strip_tags, trim ve implode" u bir arada aşağıdaki kodlarla nasıl kullanabilirim acaba?
if(isset($_FILES['dosya'])) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$dosya_sayisi = count($_FILES['dosya']["name"]);
for($i=0; $i<$dosya_sayisi; $i++) {
$dosya_adi = $_FILES['dosya']["name"][$i];
$gecici_yol = $_FILES['dosya']["tmp_name"][$i];
if(move_uploaded_file($gecici_yol,"../../images/indexurunler/" . $dosya_adi)) {
$sorgualani = "INSERT INTO indexsayfaurun (urun_resim, urun_ad, urun_ozellik)
VALUES ('$dosya_adi', '$s_ad', '$s_ozellik')";
$sorgu = mysqli_query($db, $sorgualani);
}
}
}
if($sorgu) {
echo "Ürün Kaydedildi";
} else {
echo "Ürün Eklenemedi";
}
}
text olarak belirledim ve herhangi bir sayı vermedim. Sayı verdiğimde de düzelmedi. Yazıyı klavyeden el ile girdiğimde kayıt yapıyor ama kopyaladığım bazı yazıları kabul etmiyor. Yazıdaki boşluklar, kalın yazılması gibi şeyler etkiliyor olabilir mi acaba?
Burada çoklu veri kaydetmenin yöntemini gösteriyorsunuz değil mi? Eğer öyleyse benim sorunum bu değil. Ben çoklu veriyi kaydedebiliyorum. Bir siteden kopyaladığım bir yazıyı textarea nın içine yapıştırıp gönder butonuna bastığımda veriyi kaydetmiyor. Ama yine aynı siteden başka bir yazı giriyorum textarea ya onu kaydediyor. Yani textarea nın içine girdiğim bir yazıyı kaydedebiliyorken başka bir yazıyı kaydedemiyorum. Textarea bu yazıları neye göre seçiyor, sorun bu.