v2.5.2
Giriş yap

Mysqli Formu Post Edemiyorum

opticbey
1,143 defa görüntülendi ve 1 kişi tarafından değerlendirildi
  • Formu post edemiyorum. Düzenle dediğimde hiçbir değişiklik olmuyor. Kodlar aşağıdaki gibidir.
  • Panel fotoğrafı en alt kısımdadır.

    PHP Kodları

      <! PHP Düzenleme Başlangıç !>
                    
                  <?php
    				
    	if (isset($_POST["edit_portfolio"])){
    	$portfolio_name = $_POST["portfolio_name"];
          $portfolio_text = $_POST["portfolio_text"];   
    	$portfolio_category = $_POST["portfolio_category"];
    		
    	$portfolio_image = $_FILES["image"]["name"];
          $portfolio_image_temp = $_FILES["image"]["tmp_name"];
    		
    	move_uploaded_file($portfolio_image_temp, "../img/$portfolio_image");
    		
    		
    	$sql_query2 = "UPDATE portfolios SET portfolio_name = '{$portfolio_name}', portfolio_text = '{$portfolio_text}', portfolio_category = '{$portfolio_category}', portfolio_img = '{$portfolio_image}', WHERE portfolio_id = '$_POST[portfolio_id]'";
    		
    	$edit_portfolio_query = mysqli_query($conn, $sql_query2);
                
          header("Location: calismalarim.php");
                
    	}	
    	
    				
    	?>		
                    
                  <! PHP Düzenleme Bitiş !>
    

HTML Kodları

  <! HTML Düzenleme Alanı Başlangıç !>

      <div id="edit_modal<?php echo $k; ?>" class="modal fade">
                    <div class="modal-dialog" role="document">
                        <div class="modal-content">
                            <div class="modal-header">
                                <h5 class="modal-title" id="exampleModalLabel">Çalışma Düzenle</h5>
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                    <span aria-hidden="true">&times;</span>
                                </button>
                            </div>
                            <div class="modal-body">
                                <form action="" method="post" enctype="multipart/form-data">
                                    <div class="form-group">
                                        <label for="portfolio_name">Çalışma Adı</label>
 <input type="text" class="form-control" name="portfolio_name" value="<?php echo $portfolio_name; ?>">
                                    </div>
                                    
                                    

                                    
                                    <div class="form-group">
                                        <label for="portfolio_text">Açıklama</label>
                                   
                                        <div class="form-group">
				                        <textarea class="form-control md-textarea" rows="10" name="portfolio_text"><?php echo $portfolio_text; ?></textarea>
                                        </div>
                                        
                                        
                                        <div class="form-group">
                                        <label for="portfolio_category">Kategori</label><br>
										<select class="form-group browser-default custom-select mb-4" name="portfolio_text">
										
										<?php
											
										$edit_category_sql = "SELECT * FROM categories";
										$edit_category_run = mysqli_query($conn, $edit_category_sql);
										while($edit_category_row = mysqli_fetch_assoc($edit_category_run)){
										$edited_category = $edit_category_row["category_name"];
								
										echo"<option>$edited_category</option>";	
										}
											
										?>
										</select>
                                    </div>
                                    
                                    


                                    <div class="form-group">
                                        <img src="../img/<?php echo $portfolio_img; ?>" width="100%" height="150px">
                                        <input type="file" class="form-control" name="image">
                                    </div>

                                 
                                    <div class="form-group">
                                        <input type="hidden" name="portfolio_id" value="<?php echo $row["portfolio_id"]; ?>">
                                        <input type="submit" class="btn btn-primary" name="edit_portfolio" value="Düzenle">
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
          </div></div>
				
			<?php $k++; } ?>
                
                <! HTML Düzenleme Alanı Bitiş !>
  • Panel görseli aşağıdadır.
    alt değeri
Cevap yaz
Cevaplar (7)
kerim
1822 gün önce

Boyle olması gerekiyor.

DİKKAT!!! YOKLAMA ve GÜVENLİK NOTU

  1. Formdan gelen input değerlerin boş olup olmadığını yoklaman gerek.
  2. Form inputları boş bırakılmazsa, space tuşuyla boşluk bırakıla bilir trim($_POST['deger']) fonksiyonu ile bunu engelleye bilirsin.
  3. mysqli kullanıyorsan SQL İNJECTİON lardan korunman için trim(mysqli_real_escape_string($conn,$_POST['deger'])) şeklinde yazmalısın.
  4. Resim yüklenmesi ile ilgili güvenlikler.
    4.1 Yüklenecek resimlerin isimleri aynı isimde olursa sıkıntı yarata bilir. Resim isimlerini şekillendirmen gerekiyor.
    4.2 Şimdiki durumda dosyanın uzantısına göre bir yoklama yapmıyorsun. Sadece JPG , PNG , JPEG gipi resim formatlarına izn vermelisin.
    4.3 Yüklenecek olan resim dosyalarına boyut vermen gerekli, örneğin maksimum 5 MB boyutunda resimleri kabul edersin.

Ben söylediğim notları koduna eklemedim kendin eklersen daha faydalı olur diye düşünüyorum. Sadece fotoğrafın gitmemesi için if else
yapısını örnek olarak gösterdim.
Her hangi bir sıkıntı olursa yardım ederim.

Başarılar

<?php
    if (isset($_POST["edit_portfolio"])){
        
	$portfolio_name     = $_POST["portfolio_name"];
    $portfolio_text     = $_POST["portfolio_text"];   
	$portfolio_category = $_POST["portfolio_category"];
		
	$portfolio_image      = $_FILES["image"]["name"];
    $portfolio_image_temp = $_FILES["image"]["tmp_name"];
		
	move_uploaded_file($portfolio_image_temp, "../img/$portfolio_image");
		
	if(!empty($portfolio_image)){	
	$sql_query2 = "UPDATE portfolios SET 
	portfolio_name = '{$portfolio_name}', 
	portfolio_text = '{$portfolio_text}', 
	portfolio_category = '{$portfolio_category}', 
	portfolio_img = '{$portfolio_image}' 
	WHERE portfolio_id = '$_POST[portfolio_id]'";
	$edit_portfolio_query = mysqli_query($conn, $sql_query2);
      header("Location: calismalarim.php");
	}else{
	$sql_query2 = "UPDATE portfolios SET 
	portfolio_name = '{$portfolio_name}', 
	portfolio_text = '{$portfolio_text}', 
	portfolio_category = '{$portfolio_category}'
	WHERE portfolio_id = '$_POST[portfolio_id]'";
	$edit_portfolio_query = mysqli_query($conn, $sql_query2);
      header("Location: calismalarim.php");
	}        
	}	
?>

kerim
1822 gün önce

Sorunlarını gidermek için if else yapısı kurman gerekiyor.

  1. Resim değistirilmemiş ise yani resim $_FILES boş ise yeni resim seçilmemiş demekdir. O zaman resmi UPDATE etmiyeceksin diğer verileri edeceksin.
opticbey
1822 gün önce

Çok teşekkür ederim. Baya detaylı incelemiştim ama sorunu bulamamıştım. Şuan post ediyor ancak bazı eksiklikler var;

  • Çalışma Adını düzenleyip "düzenle" dediğimde fotoğraf gidiyor.
  • Aynı şekilde açıklama kısmında da kategori ismi çıkıyor. Onun için de vermiş olduğum id ve değişkenleri kontrol edeceğim.
kerim
1822 gün önce

Gözüme bir şey takıldı SQL sorgunda WHERE kelimesinden önce virgül işareti var onu kaldır.

kerim
1822 gün önce

Herşeyden önce addım addım ilerlemen seni sorunu çözmeye götürür.

  1. POST etdiğin değişkenleri ekrana bastır cevap alıyormusun?
  2. SQL sorqusunu mysqli_query() ile çalıştırmadan önce ekrana bastır cevap doğrumu?

Muhtemelen cevabı bulacaksın.

opticbey
1823 gün önce
  • Konu hakkında yardımcı olabilir misniz?
opticbey
1824 gün önce

Veritabanım;

alt değeri