v2.5.2
Giriş yap

Dizi içerisindeki elemenı seçip Silmek ?

aydinkeskin
938 defa görüntülendi

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.
Cevap yaz
Cevaplar (12)
aydinkeskin
1711 gün önce

@mutluol

aydinkeskin
1711 gün önce

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.

mutluol
1712 gün önce

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

aydinkeskin
1712 gün önce

@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.

arcface
1713 gün önce

Ç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

aydinkeskin
1714 gün önce

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 :)

aydinkeskin
1714 gün önce

@pcmemo

malesef yapamadım bir türlü ilgin içinde teşekkürler.

pcmemo
1714 gün önce

<?php
$a1=array("ali", "veli", "selami");
$a2=array($a1['2']);

$result=array_diff($a1,$a2);
print_r($result);

// çıktı Array ( [0] => ali [1] => veli )
// 2 noli indisin karşılığı olan selami yok.
?>

pcmemo
1714 gün önce

array_diff araştır.

aydinkeskin
1714 gün önce

@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.

osmanerdem
1715 gün önce

foreach($out[0] as $key => $image)
buradaki $key o dizinin indisini verir.