• 04-01-2023, 19:13:56
    #1
    Merhaba, hobi amaçlı tamamen amatör şekilde php üzerinden bir kaç çalışma yapıyorum tamamen amatör şekilde.

    Bir form üzerinden veritabanına giriş yapıyorum burada sorun yok. Kullanıcı bilgilerinin güncellendiği bir form. Tamamını güncelleyince sorun yok bütün verileri veri tabanına aktarıyor ama sadece isim soyisim güncellediğimde veritabanından diğer verileri boş olarak güncelliyor. Bir türlü çözemedim.

    Formda sadece güncellediğim alanların veri tabanına iletilmesini nasıl yapabilirim yardımcı olabilecek var mı ?

    Formu buraya post ediyorum, buradan da veritabanına aktarıyorum.
    <?php
      // Veritabanı bağlantısını aç
      $db = mysqli_connect('localhost', 'root', '', 'site_db');
      // Formdan gelen verileri al
      $username = mysqli_real_escape_string($db, $_POST['username']);
      $email = mysqli_real_escape_string($db, $_POST['email']);
      $password = mysqli_real_escape_string($db, $_POST['password']);
      $first_name = mysqli_real_escape_string($db, $_POST['first_name']);
      $last_name = mysqli_real_escape_string($db, $_POST['last_name']);
      $hakkimda = mysqli_real_escape_string($db, $_POST['hakkimda']);
      $fb = mysqli_real_escape_string($db, $_POST['fb']);
      $tw = mysqli_real_escape_string($db, $_POST['tw']);
      $link = mysqli_real_escape_string($db, $_POST['link']);
      // Oturumu başlat
      session_start();
      // Kullanıcı id'sini al
      $user_id = $_SESSION['user_id'];
      // Güncelleme sorgusunu oluştur
      $query = "UPDATE users SET username='$username', email='$email', password='$password', first_name='$first_name', last_name='$last_name', hakkimda='$hakkimda', fb='$fb', tw='$tw', link='$link' WHERE id='$user_id'";
      mysqli_query($db, $query);
      // Kullanıcı bilgilerini güncelleme sayfasına yönlendir
      header('location: profil.php');
    ?>
    Bu da post ettirdiğim form
    <form action="update_user.php" method="post" enctype="multipart/form-data">
                                <input type="hidden" name="id" value="<?php echo $id; ?>">
                                    <div class="mb-3">
                                    <div id="emailHelp" class="form-label">Kullanıcı Adı
                                        </div>
                                    <input type="text" class="form-control" id="username" name="username"
                                        placeholder="<?php echo $user['username']; ?>" >
                                        <label for="username"></label>
                                        <br>
                                        <br>
                                        <div id="emailHelp" class="form-label">İsim
                                        </div>
                                    <input type="text" class="form-control" id="fist_name" name="first_name"
                                        placeholder="<?php echo $user['first_name']; ?>" >
                                        <label for="first_name"></label>
                                        <br>
                                        <br>
                                        <div id="emailHelp" class="form-label">Soyisim
                                        </div>
                                    <input type="text" class="form-control" id="last_name" name="last_name"
                                        placeholder="<?php echo $user['last_name']; ?>" >
                                        <label for="last_name"></label><br>
                                        <br>
                                        <div id="emailHelp" class="form-label">E-Posta
                                        </div>
                                    <input type="email" class="form-control" id="email" name="email"
                                        placeholder="<?php echo $user['email']; ?>" >
                                        <label for="email"></label>
                                        <br>
                                        <br>
                                        <div id="emailHelp" class="form-label">Şifre
                                        </div>
                                    <input type="password" class="form-control" id="password" name="password"
                                        placeholder="<?php echo $user['password']; ?>" >
                                        <label for="password"></label>
                                        <br>
                                        <br>
                                        <div id="emailHelp" class="form-label">Hakkımda
                                        </div>
                                        <textarea class="form-control" placeholder="<?php echo $user['hakkimda']; ?>" id="floatingTextarea" name="hakkimda" id="hakkimda" style="height: 150px; "></textarea>
    <label for="hakkimda"></label>
                                        <br>
                                        <br>
                                        <input type="submit" class="btn btn-primary" value="Kaydet">
                                    </div>
                                    </form>
  • 04-01-2023, 19:17:30
    #2
    hocam basit bir çözüm önereceğim placeholder="<?php echo $user['hakkimda']; ?>" yerine value="<?php echo $user['hakkimda']; ?>" deseniz
  • 04-01-2023, 19:19:25
    #3
    Evet basit ama kritik hata. Veritabanından gelen verileri value="" özelliğine vermeniz gerekiyor. Bunu yaptığınızda boş bir şekilde kayıt yapmayacaktır.
  • 04-01-2023, 19:20:11
    #4
    ByCaner adlı üyeden alıntı: mesajı görüntüle
    hocam basit bir çözüm önereceğim placeholder="<?php echo $user['hakkimda']; ?>" yerine value="<?php echo $user['hakkimda']; ?>" deseniz
    O şekilde yaptığım zaman veri formda sabit kaldığı için boş içerik göndermiyor veriyi tekrar üzerine yazıyor. Teşekkür ederim çözemezsem bu şekilde kullanıcam artık
  • 04-01-2023, 19:22:08
    #5
    thealiyasar adlı üyeden alıntı: mesajı görüntüle
    Evet basit ama kritik hata. Veritabanından gelen verileri value="" özelliğine vermeniz gerekiyor. Bunu yaptığınızda boş bir şekilde kayıt yapmayacaktır.
    Sadece girişi yapılmış olan verinin veritabanına iletilmesini sağlayacak bir düzenleme yokmudur? placeholder etiketi görsel anlamda beni daha mutlu ediyor
  • 04-01-2023, 19:26:20
    #6
    Byismail adlı üyeden alıntı: mesajı görüntüle
    Sadece girişi yapılmış olan verinin veritabanına iletilmesini sağlayacak bir düzenleme yokmudur? placeholder etiketi görsel anlamda beni daha mutlu ediyor
    Görselliği css ile farklı yollardan çözebilirsiniz. Bir form içerisinde name'e sahip olan input gönderir ve post işleminde bu name'deki inputlarıda güncelleme sorgusuna eklerseniz güncellemek zorunda kalır. Tek bir veri güncellemek istiyorsanız bunun için tek bir input name göndermeniz gerekmektedir. Yada ayrı ayrı inputlar için kaydetme sorgusu yapabilirsiniz. İnputun karsısında o input için güncelleme butonu gibi.
  • 04-01-2023, 19:28:25
    #7
    thealiyasar adlı üyeden alıntı: mesajı görüntüle
    Görselliği css ile farklı yollardan çözebilirsiniz. Bir form içerisinde name'e sahip olan input gönderir ve post işleminde bu name'deki inputlarıda güncelleme sorgusuna eklerseniz güncellemek zorunda kalır. Tek bir veri güncellemek istiyorsanız bunun için tek bir input name göndermeniz gerekmektedir. Yada ayrı ayrı inputlar için kaydetme sorgusu yapabilirsiniz. İnputun karsısında o input için güncelleme butonu gibi.
    Teşekkür ederim, sanırım şimdilik value etiketi kullanmam daha iyi olacak
  • 04-01-2023, 19:30:23
    #8
    Byismail adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim, sanırım şimdilik value etiketi kullanmam daha iyi olacak
    Yapılamaz diye birşey yok. Daha farklı çözümleri var fakat yolları uzun ve zahmetli olur. Görsellik için bu zahmete girmeye değmez.
  • 04-01-2023, 19:37:57
    #9
    thealiyasar adlı üyeden alıntı: mesajı görüntüle
    Yapılamaz diye birşey yok. Daha farklı çözümleri var fakat yolları uzun ve zahmetli olur. Görsellik için bu zahmete girmeye değmez.
    Dediğiniz gibi 3 saatlik araştırmam ve uğraşlarım boşunaymış siz farklı söyleyince benzer bir özellikle sorunumu çözmüş oldum. Teşekkür ederim.

    Belki işine yarayan olursa 2010 yılında zaten bir arkadaş forumda yazmış aradığım şeyin nasıl yapıldığını.
    <input type="text" class="form-control" id="username" name="username" value="<?php echo $user['username']; ?>" onclick="if(this.value=='<?php echo $user['username']; ?>') this.value='';" onblur="if(this.value=='') this.value='<?php echo $user['username']; ?>';" />