v2.5.2
Giriş yap

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

yazilimyolcusu
537 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
619 gün önce

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

okumusmr
620 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
621 gün önce

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

yazilimyolcusu
641 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
648 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
650 gün önce

Cevap yok mu arkadaşlar.

yazilimyolcusu
651 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
652 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
652 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
652 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
653 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
656 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
656 gün önce

Sorun güncel.