Dizi içerisindeki elemenı seçip Silmek ?
xxxx tablonun içindeki resim sütünuna şu şekilde resim ekliyorum.
aaaa.jpg,sccc.jpeg,dddd.png,asdadsads.gif
şeklinde verileri ekliyorum
sonra bunları şu şekilde listeliyorum.
<?php $ssd = $row["id"];
$uret = $db->prepare("SELECT * FROM proje WHERE id=? ORDER BY icerik_resim limit 6 ");
$uret->execute([$ssd]);
foreach($uret as $res){
preg_match_all('/[a-zA-Z0-9_]+.(jpeg|gif|jpg|png)/', $res["icerik_resim"], $out);
foreach($out[0] as $image){
if(!empty($image)){ ?>
<div class="col-lg-3 col-md-6">
<div class="card">
<div class="el-card-item">
<div class="el-card-avatar el-overlay-1 col-md-12">
<img src="<?=TEMA?>/uploads/proje/<?=$image;?>" alt="<?=$row['icerik_resim'];?>" />
<div class="el-overlay">
<ul class="el-info">
<li><a class="btn default btn-outline-info image-popup-vertical-fit" href="<?=TEMA?>/uploads/proje/<?=$image;?>"><i class="fa fa-search"></i></a></li>
<li><a class="btn default btn-outline-warning" href="?"><i class="fa fa-trash"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<?php }}}?>
burdaki seçim işlemini beceremedim ordaki resmi seçip nasıl silebilrim atıyorum
dddd.png adlı resmi büyütüp baktım beğenmedim silicem indis ini nasıl yakalayacağım.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (12)
bu dediğini yaptım hali hazırda var zaten misal
tablo adı icerik_resimleri
id -- resim--resim_thumb----projeID---HaberID--blogID
atıyorum 3 tane proje resmi ekleyince
5---resim.jpg---resim_thumb.jpg---15---- -----
6---resim1.jpg---resim_2thumb.jpg---15---- -----
7---resim2.jpg---resim_1thumb.jpg---15---- -----
gibi kayıt ettiriyorum
bundan endişem
atıyorum bir haber yazılımı olsa bile hadi resimleri id tanımlamayıp direk haber tablosuna ait resim tablosu açsam bile
çok fazla kayıt olacağından sorun yaşarım diye düşündüm.
o yüzden tek sütün içerisinde gömmeyi tercih ettim ve evet biraz fazla kod yazmam gerekti bu yüzden..
Yinede ilgin için teşkler cins insanlar her zaman var ama bu alanda bilgi dediğimiz şey paylaşınca anlamı var saklayınca bilgi bilgi değildir.
günlerdir bakıyorum bişi yazmayım dedim, geçen birine elseif hakkında tavsiyeme agresif yaklaşınca çekindim ama yapı saçma. aynı seneryoyu üşenmedim uyguladım. böyle sonuç alman çok zor, alsan bile her aşamada normalden daha fazla kod yazman ve daha fazla işlem gerçekleştirmen gerekir.
veritabanını düzenlemeni tavsiye ederim örneğin proje_resimleri adında bir tablo aç burada
id proje_id resim şeklinde olsun
id resmin kendi idsi proje id ise projenin idsi olacak bu şekilde bir projede birden çok resim kullanabilirsin
örneğin ilk resmini ekleyeceksin ama bunu 5. proje için gerçekleştireceksin
id 1 proje_id 5 olacak
bu kullanımda ısrarcı olursan ileride sql sorgularının süreside uzayacaktır artan veriye bağlı olarak
yüksek ihtimalle son değeri alamaman ise sonunda virgül olmadığı için değişiklik gerçekleşmediğinden sonuca dahil olmuyor
@arcface
senin kadar bu kouda bilgi sahibi olsam zaten bunu buraya yazmazdım.
sana basit olan şey benim için içinden çıkılmaz anlamına gelir zaten
id meselesine gelince benim projeler tablosu icerik_resim sutunu içerisinde 100 tane resmim var yani evet id benzersiz ve
benim seçtiğim 1 nolu id deki icerik resimleri listeleniyor.
ha dersenki sen bunları kayıt ederken yanlış yaptın ona amenna dizi olarak kaydetmedim düz yazı olarak , ile ayırarak kaydettim sonra
pregmatch ile böldüm.
ben yazdıklarını kısmen anladım fakat benim array json ile alakalı öyle çok ileri tecrübelerim yok
ben bilmeyerek sana ayıp ettim k.bakma. yardımcı olmak istiyorsan da kod parçaçığını yazarsın anlatarak ben bakar teşekkür ederim.
yinede teşekkürler.
Çok basit bir şeyi saçmalamışsın bu kadar zorlanman gerekmiyor indisi aldıktan sonra derdin sadece görseli silmek ise sen önce bir yapını değiştir kaydederken json ile kaydet görselleri
içerik görselleri eklerken bu görselleri json olarak tut örneğin {'a.uzanti','b.uzanti','c.uzanti'} gibi bunu nasıl yaparım diyorsan multi olarak görselleri upload ettikten sonra dizideki görselleri
önce bir sunucuya yükle daha sonra adlarını bir dizi de tut en son veritabanına kaydederken json_encode ile kaydet şimdi gelelim seçip görüp silmeye
görsellerini görmek istediğin satırı önce bir çağır eğer sql komutun böyle ise SELECT * FROM proje WHERE id=? ORDER BY icerik_resim limit 6 aynı id'e ait çok fazla indis var demektir bu bir saçmalık id'nin amacı zaten benzersiz olması
bu hatanı düzelttiğini varsayıyorum devam ediyorum 3 üncü indis görselleri görmek için sorgunu yaptıktan sonra $gorseller = json_decode($data['icerik_resim'],true); olarak görselleri json'dan tekrar dizi'ye çevir
bu görsellerin hepsinin benzersiz bir id olacak zaten sen görmesende bunlar 0,1,2,3,4 diye gider sen listelerken foreach($gorseller as $key => $image) döngünü böyle alacaksın bu sana görsellerin indislerini almayı
sağlayacak böylece buradaki indisleri geri göndererek olduğun sayfa da $gorseller içinden örneğin $gorseller[$_POST['gorsel_id']] aldığın da sana o görseli çevirecek sende dönen görsel adını sildireceksin bu kadar
sen en başta hata yapmışsın zaten
mantık olarak db ye result u update etmem gerekiyor
ama öncesini yapadım.
ben $out[0] ile alıyorum resimleri
preg_matchall('/[a-zA-Z0-9]+.(jpeg|gif|jpg|png)/', $res["icerik_resim"], $out);
foreach($out[0] as $key => $image){
indisinide $key ile alıyorum.
a1 e out[0] yazsam olmuyor haliyle orda tıkanınca geriside gelmiyor.
$a1 = array($row["icerik_resim"]);
bu şekilde a1 i çekiyorum
bu sefer a2 de tıkanıyorum $key yazsam hata $image yazsam hata
normalde yukardaki mantığa göre
$a2 = array($a1[$image]); olması gerekiyor ama kabul etmiyor
result a gelemedimki onuda get ile update edeyim :)
@pcmemo
malesef yapamadım bir türlü ilgin içinde teşekkürler.
@osmanerdem ve @pcmemo ikinizede teşekkür ederim.
dediğiniz gibi 2 farkı şekildede indisleri bulabiliyorum.
fakat unset ile geti ile gönderdiğim veriden indisi silemiyorum.
if (isset($_GET["key"]) && $_SESSION["adminlogin"] == "true"){
$key = $_GET["key"];
unset($key);
// echo $key;
}
<li><a class="btn default btn-outline-warning" href="?key=<?php echo $key?>"><i class="fa fa-trash"></i></a></li>
indis 0 1 2 3 neyse geliyor hangisine tıkladığımda
hklı olarak diyecekseniz veri güncelleme işlemi nerde görmüyor ki
o tarafını mantığını kuramadım
array a çevirdiğim düz bir veri sütününü
normal icerik_resim düz veri aa,aaa,aaa,aa,bb,dd,gg
ben bunu array haline getirip parçalayıp içinden çekiyorum.
get i key indisi 0 olarak gönderirsem bunu icerik_resim tablosunda tekrar array a çevirip ordan 0 ı bulmam demek mi oluyor
yada öyle birşey.
foreach($out[0] as $key => $image)
buradaki $key o dizinin indisini verir.