Textarea Bazı Yazılarda Hata Verdiriyor
Merhabalar. Bir form var. Formda da textarea var. Bir yerden kopyaladığım yazıyı veritabanına kaydederken bazı yazılarda hata verdiriyor textarea. Veritabanına kayıt yapamıyorum. Form başarılı bir şekilde kaydedildiyse şu, kaydedilmediyse de şu uyarıyı ver diyorum. Kayıt yapılamadı uyarısı veriyor. Bazı yazılarda ise sıkıntı çıkarmıyor. Bana bu sorun, yazının içindeki boşluklardan vs. olduğu gibime geliyor. Eğer boşluk vs gibi şeylerden ise, aşağıdaki kodları nasıl düzenleyebilirim, yardımcı olabilir misiniz? Form'dan çoklu veri aldığım için, ona göre ayarlama yapmak gerekiyor galiba. Sebebi ne olabilir?
if($_POST) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$sorgualani = "INSERT INTO indexsayfaurun (urun_ad, urun_ozellik) values ('$s_ad', '$s_ozellik');
if($sorgu) {
...
} else {
...
}
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (8)
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
}
}
?>
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.