v2.5.2
Giriş yap

Klasörde aynı isimde dosyanın olup olmadığını nasıl kontrol edebilirim?

yazilimyolcusu
520 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar. Form'dan gelen bir sayı var. Bu sayı, oluşturacağım json dosyasının adını oluşturuyor. "1.json", "2.json" gibi. "1.json" dosyasının "json" isimli klasörde olup olmadığını aşağıdaki kodlarla yapmaya çalıştım ama her seferinde "Dosya İsmi Mevcut. Lütfen Başka Bir Dosya İsmi Veriniz" uyarısını veriyor. Kodları nasıl düzenlemek lazım acaba?

$ac = "./json/$s_icerikid" . '.json';
if(file_exists($ac)) {

echo "Dosya İsmi Mevcut. Lütfen Başka Bir Dosya İsmi Veriniz";
exit();
}
Cevap yaz
Cevaplar (13)
yazilimyolcusu
588 gün önce

Yol'da bir problem yok. Yol'u doğru vermişim.

okumusmr
590 gün önce

Merhaba, file_exists() fonksiyonuna absolute path vermeyi denedin mi ? PHP dosyanın bulunduğu dizine göre json klasörünün yolunu doğru bir şekilde verdiğinden emin olmalısın. Aşağıda bir örneğini paylaşıyorum.

    ...
    
    if (file_exists(realpath(getcwd()) . '/' . $dosya)) {
        echo "$dosya diye bir dosya var";
        exit();
    } else {
    
    ...
yazilimyolcusu
591 gün önce

Sorunum güncel. Yardımcı olabilir misiniz?

yazilimyolcusu
610 gün önce

Kodları şu şekilde düzenledim ama sorunu halledemedim. Kodlar şu haliyle, örnek olarak, eğer "1.json" dosyası mevcutsa, "1.json dosyası var" diyor. Eğer yoksa yeni oluşturduğum dosyanın adını yazıyor. Mesela "2.json" var diyor. Yardımcı olabiir misiniz?

$ad = $_POST['ad'];
    $ozellik = $_POST['ozellik'];
    $kategori = $_POST['kategori'];
    $eskifiyat = $_POST['eskifiyat'];
    $yenifiyat = $_POST['yenifiyat'];
    $indirimlifiyat = $_POST['indirimlifiyat'];
    $urunsayisi = $_POST['urunsayisi'];
    $urunalani = $_POST['urunalani'];
    $icerikid = $_POST['icerikid'];


    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];
      $s_icerikid = $icerikid[$index];

        
        global $filename;
        $filename = $s_icerikid.".json";
        $myObj->ss_dosya_adi[] = $dosya_adi;
        $myObj->ss_ad = $s_ad;
        $myObj->ss_ozellik = $s_ozellik;
        $myObj->ss_kategori = $s_kategori;
        $myObj->ss_eskifiyat = $s_eskifiyat;
        $myObj->ss_yenifiyat = $s_yenifiyat;
        $myObj->ss_indirimlifiyat = $s_indirimlifiyat;
        $myObj->ss_urunsayisi = $s_urunsayisi;
        $myObj->ss_urunalani = $s_urunalani;
        $myObj->ss_icerikid = $s_icerikid;

        $dosya = 'json/' . $filename;

        if (file_exists($dosya)) {

        echo "$dosya diye bir dosya var";
        exit();
        } else {
        
        $dizijson = json_encode($myObj);
        file_put_contents("json/" . $filename, $dizijson);

        if (move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {

        }
      }

      }
yazilimyolcusu
618 gün önce

İlkinde yok diyor sonra var diyor dosya için. Neredeki döngüden kaynaklanıyor. Şu kodların işleyişini anlatabilir misiniz?

yazilimyolcusu
619 gün önce

Cevap yok mu arkadaşlar.

yazilimyolcusu
621 gün önce

Hatayı resim sayısına göre vermiyor şu an. Tek uyarı veriyor ama hâlâ nasıl yapılması gerektiğini akıl edemedim.

tayfunerbilen
621 gün önce

soyle bir kontrol ile belki daha kolay yonetebilirsin;

<?php

$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
$icerikid = $_POST['icerikid'];

// dosya varsa hatalar bu degiskende tutulacak
$errors = [];

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];
    $s_icerikid = $icerikid[$index];

    $dosya = 'json/' . $s_icerikid . '.json';

    if (file_exists($dosya)) {
        $errors[] = "$dosya diye bir dosya var";
    } else {
        
        // dosya yoksa islemlere devam et
        
        global $filename;
        $filename = $s_icerikid . ".json";
        $myObj->ss_dosya_adi[] = $dosya_adi;
        $myObj->ss_ad = $s_ad;
        $myObj->ss_ozellik = $s_ozellik;
        $myObj->ss_kategori = $s_kategori;
        $myObj->ss_eskifiyat = $s_eskifiyat;
        $myObj->ss_yenifiyat = $s_yenifiyat;
        $myObj->ss_indirimlifiyat = $s_indirimlifiyat;
        $myObj->ss_urunsayisi = $s_urunsayisi;
        $myObj->ss_urunalani = $s_urunalani;
        $myObj->ss_icerikid = $s_icerikid;


        $dizijson = json_encode($myObj);
        file_put_contents("json/" . $filename, $dizijson);


        if (move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {

        }
    }
}

if (count($errors) > 0) {
    print_r($errors); // hatali olan dosyalari gosterir, hatali olmayanlar eklendi hatali olanlar icinde uyari vs, verebilirsin
}
yazilimyolcusu
621 gün önce

Peki ne yapmalıyım. Döngüden mi çıkartayım. Döngülerden önce bu sorguyu yaparsam, yine döngü içinde kullanmam lazım olacak. Çünkü, inputtan çoklu yükleme olarak gönderiyorum.

munzevi
622 gün önce

file_exits bu is icin yeterli. sorun donguden kaynakli, ayni deger 2 defa sorguda isleniyor ve ilkinde yokken olustuulup ikinci dongude var oldugu icin hata aliyorsun. kodlar dogru, bakis acin yanlis.

yazilimyolcusu
622 gün önce

Kodların tamaını koyayım, öyle bakın. Eğer dosya varsa dosya var diyor. Dosya yoksa da dosya yok diyor, altına dosya var diyor.

$ad = $_POST['ad'];
    $ozellik = $_POST['ozellik'];
    $kategori = $_POST['kategori'];
    $eskifiyat = $_POST['eskifiyat'];
    $yenifiyat = $_POST['yenifiyat'];
    $indirimlifiyat = $_POST['indirimlifiyat'];
    $urunsayisi = $_POST['urunsayisi'];
    $urunalani = $_POST['urunalani'];
    $icerikid = $_POST['icerikid'];
    

    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];
      $s_icerikid = $icerikid[$index];

        $dosya = 'json/' . $s_icerikid . '.json';

        if (file_exists($dosya)) {

        echo "$dosya diye bir dosya var";
        exit();
        } else {

        echo "$dosya diye bir dosya yok";
        }


        global $filename;
        $filename = $s_icerikid.".json";
        $myObj->ss_dosya_adi[] = $dosya_adi;
        $myObj->ss_ad = $s_ad;
        $myObj->ss_ozellik = $s_ozellik;
        $myObj->ss_kategori = $s_kategori;
        $myObj->ss_eskifiyat = $s_eskifiyat;
        $myObj->ss_yenifiyat = $s_yenifiyat;
        $myObj->ss_indirimlifiyat = $s_indirimlifiyat;
        $myObj->ss_urunsayisi = $s_urunsayisi;
        $myObj->ss_urunalani = $s_urunalani;
        $myObj->ss_icerikid = $s_icerikid;


        $dizijson = json_encode($myObj);
        file_put_contents("json/" . $filename, $dizijson);


        if(move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {

        }
    }
yazilimyolcusu
625 gün önce

Farklı yöntemler deniyorum. Şöyle bir şey yaptım. Eğer aynı isimde dosya mevcutsa "mevcut" "mevcut" yazıyor. Eğer mevcut değilse "değil, mevcut" yazıyor aşağıdaki koda göre.

      $dosyaismi = $s_icerikid . '.json';
      $dizin = "./json/";        
        if(file_exists($dizin . $dosyaismi)) {
          echo "mevcut <br>";
        } else {
          echo "değil";
        }
yazilimyolcusu
625 gün önce

Sorun güncel.