• 22-10-2009, 03:01:28
    #1
    Merhabalar. Soruma çözüm bulabilrseniz cok sevinecem.
    Şimdi sql de bir tablodaki verileri cektim. Tablodaki veriler id, baslik ve içerik
    bunlardan id ve baslik sütunlarını tabloya yazdırdım. Yazdırırken çektiğim id leri form içinde input type text olarak çektim. Bu idleri istediğim gibi değiştirdikten sonra kaydetmek istiyorum.
    Şu anki kodlarım malesef işe yaramıyor
    Kodlarımda ne gibi değişiklikler yapmam gerek?

    if ($_POST['degistir'] == 3) {
        // Save to the database. 
    	$yeni_id = $_POST['degisen'];
    	$eski_id = $_POST['eski_id'];
    	$kat = $_GET['kat'];
        $duzenle = mysql_query("UPDATE $kat SET id = '$yeni_id' WHERE id = '$eski_id'");
        if (!$duzenle)
          die("Error saving the record!  Mysql said: ".mysql_error());
        // Redirect to self to get rid of the POST
         header("Location: kategori.php?kat=".$kat."");   
      }
    $kat = $_GET['kat'];
    $result = mysql_query("SELECT * FROM $kat ORDER BY id");
    echo "<form action=\"kategori.php?kat=".$kat."\" method=\"post\">
      <label>";
    echo "<table border='1'>
    <tr>
    <th>id  <input type=\"hidden\" name=\"degistir\" value=\"3\" />
    <input type=\"submit\" value=\"duzenle\" /></th>
    <th>konular</th>
    </tr>"; while($row = mysql_fetch_array($result))
    {
    echo "<tr>";
    echo '<input type="hidden" name="eski_id" value="'.$row['id'].'">';
    echo "<td><center><input type=\"text\" name=\"degisen\" size=\"5px\" value=\"".$row['id']."\"></center></td>";
    echo " <td><a href=\"duzenle.php?id=".$row['id']."&kat=".$kat."\">" . $row['baslik'] . "</a></td>";
    echo "</tr>";
    }
    echo "</table>";
    echo "</label>
    </form>";
  • 22-10-2009, 10:21:06
    #2
    Üyeliği durduruldu
    1den fazla eski_id ve degisen inputu olacaktır, hangisini neye göre değiştireceğini bilmediğinden muhtemelen sadece ilkini değiştirir

    inputlara eski_id ve degisen yerine eski_id_'.$row['id'].' gibi bişey yazılıp submit edilmiş halindede bikaç düzenlemeyle yapılabilir.

    Biraz uzun olur detaylı yazamıyorum, sadece yol gösteriim dedim
  • 22-10-2009, 16:06:23
    #3
    Misafir adlı üyeden alıntı: mesajı görüntüle
    aldığın hata nedir? kodlarda sorun yok gibi.
    hatalardan birisi
    Duplicate entry '2' for key 1

    bu hatayı genelde birbirleri ile yer değiştirip kaydedince veriyor.

    ama mesela id ler 1 ve 2 olsun 1. id yi başka bir id yaptığımda değişmiyor.
    ama 2. id değişiyor yani sadece tablodaki son sırada olan id değişiyor ondan öncekiler değişmiyor.


    Vinsanity dediğini biraz daha açabilirmisin tam anlamadım da
  • 22-10-2009, 17:58:56
    #4
    Vinsanity adlı üyeden alıntı: mesajı görüntüle
    1den fazla eski_id ve degisen inputu olacaktır, hangisini neye göre değiştireceğini bilmediğinden muhtemelen sadece ilkini değiştirir

    inputlara eski_id ve degisen yerine eski_id_'.$row['id'].' gibi bişey yazılıp submit edilmiş halindede bikaç düzenlemeyle yapılabilir.

    Biraz uzun olur detaylı yazamıyorum, sadece yol gösteriim dedim
    ben arkadaşa yardım etmek istedim bi kod yazdım eski_id[] olarak nameleri ayarladım array vs. yaptım fakat Duplicate entry 1 for key 1
    bunun gibi hata veriyor
  • 22-10-2009, 20:59:15
    #5
    Üyeliği durduruldu
    YuqseLX adlı üyeden alıntı: mesajı görüntüle
    ben arkadaşa yardım etmek istedim bi kod yazdım eski_id[] olarak nameleri ayarladım array vs. yaptım fakat Duplicate entry 1 for key 1
    bunun gibi hata veriyor
    problemin nedeni primary alan uzerinde islem yapmaya calismaniz. mesela bu alan siralama vs icin kullanilacaksa id alani degilde siranumarasi gibi bir alan olusturup onda degistirmelisiniz.

    id var oldugu icin yemez.

    update etmeden once id yi olmayan bir id ye tasiyip yapabilirsiniz oda cok ugrastirir