kostenloser Webspace werbefrei: lima-city


id - Lücken bei Zählung in mysql...??

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    waldorf

    waldorf hat kostenlosen Webspace.

    Ich habe folgendes Problem: Die lückenhafte Zählung der id's bei mysql wirft meine Skripts über den Haufen.

    Ich habe ein Editiersystem programmiert, mit dem ich Blog-
    Einträge ändern und in die Tabelle zurückschreiben kann.
    Nur leider werden bislang völlig falsche Einträge geändert bzw.
    z.T. auch gar nicht. Der Grund liegt in der Zählung der Einträge bei mysql:

    Die "Ändern"-Links unter den Blog-Einträgen übergeben an eine bearbeiten.php-Datei GET-Parameter. Der erste Eintrag übergibt
    den Parameter 1 usw. (an URL angehängt).

    Problem: mysql zählt ganz anders, auch deshalb, da ich mal Einträge gelöscht habe. Mittlerweile zählt mysql so:
    1,2,3,20,21,22.

    So. Will ich z.B. den 4. Eintrag ändern, wird als Parameter 4 übergeben. Das Skript sucht dann id = 4 in der Tabelle - und findet da natürlich nüscht, weil da ja eine Lücke ist.

    Etwas kompliziert - aber vielleicht kann mir jemand einen Tipp geben??
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ist ja auch ganz klar das mysql so zähl, auto_increment ...der Datensatz mit der id 4 oder so wirste dann ja wohl gelöscht haben...

    zur lösung:

    kommt drauf an wie dein editier system aussieht...du musst ja iwo die datenbank auslesen wie...
    vllt.. einfach die id's auslesen und anhängen...

    mom..code kommt...

    <?php
    
    $id = $_GET['id'];
    
    if(empty($_POST['id']) && !empty($id))
    {
    
    $select = "SELECT spalte FROM tabelle WHERE id = '$id'";
    $do = mysql_query($select) OR DIE("ERROR! ".mysql_error());
    
    if(mysql_num_rows($do) <= 0)
    {
      echo "Diese ID gibts nicht! <br />";
      exit();
    }
    
    while($row = mysql_fetch_object())
    {
      echo "<form method='post' action='datei.php'>";
      echo "<input type='text' value='$row->spalte' name='NameVariable' />";
      echo "<input type='hidden' name='id' value='$row->id' />";
      echo "<input type='submit' name='submit' value='editieren' />";
      echo "</form>";
    }
    
    }
    
    if(!empty($_POST['id']))
    {
       $id = $_POST['id'];
       $update = "UPDATE table SET spalte = 'wert' WHERE spalte = $id";
       mysql_query($update) OR DIE("Error!");
    }
    ?>




    Das ist jetzt wahrscheinlich nicht genau das was du suchst, aber vllt. kommst du damit weiter...ansonsten poste mal deinen code, dann kann man den umschreiben^^


    Beitrag geändert: 1.10.2008 12:36:47 von myhead
  4. Autor dieses Themas

    waldorf

    waldorf hat kostenlosen Webspace.

    @myhead: Super, danke für die Hilfe.

    Allerdings sieht so das Script meiner bearbeiten.php-Datei bereits
    aus. Das Problem liegt glaube ich noch vorher:
    Es kommt nämlich "oben" bereits der falsche id-Wert an.
    Der Parameter wird von meiner blog-Datei an die bearbeiten-Datei
    geschickt, und zwar hiermit:

    <a href="bearbeiten.php?id=<?= $id ?>">Edit</a>


    Kommt dann der Wert "1" an, wird dieser auch brav abgearbeitet.
    Allerdings hat der Beitrag nur im Blog diesen Wert, guck ich
    in der Tabelle nach, steht da bspw. "3".
    Also alles irgendwie durcheinander...;-(
  5. jo bidde immer wieder gerne^^


    ...jaja so ein problem hatte ich auch mal^^
  6. Autor dieses Themas

    waldorf

    waldorf hat kostenlosen Webspace.


    jo bidde immer wieder gerne^^


    ...jaja so ein problem hatte ich auch mal^^


    Das Problem liegt daran, dass im Blog der oberste
    Beitrag automatisch als id 1 bekommt, der zweitoberste
    2 usw.

    Der oberste Eintrag hat aber in der Tabelle den Wert 5,
    der zweitoberste 22 usw.

    Es müsste doch möglich sein, bevor ich den Link mit
    URL-Anhang setze, dafür zu sorgen, dass der richtige
    id-Wert ausgelesen wird. So was hab ich auch schon versucht mit:

    <?while ($ds = mysql_fetch_object($sql)) {
          $id = $ds->id;
          // USW.
          }?>


    Wenn ich dann den Link mit Anhang setze, erscheint
    aber gar kein Parameter mehr... da steht dann nur
    ?id=... Hä?:slant:


    Beitrag geändert: 1.10.2008 13:33:59 von waldorf
  7. versuchs mal so:

    <?php 
    
    while($ds = mysql_fetch_object($sql))
     {
          $id = $ds->id;
          echo "<a href='datei.php?ID=$id'>Link</a>";
    } 
    ?>

    die id ist nur in der while schleife vorhanden

    oder mach n array draus:
    <?php 
    
    while($ds = mysql_fetch_object($sql))
    {
          $id[0] = $ds->id;
    }
    
    $id = $id[0];   
    ?>



    ...wenn ichs richtig verstanden hab^^
  8. Autor dieses Themas

    waldorf

    waldorf hat kostenlosen Webspace.


    versuchs mal so:



    @Myhead:

    Das Problem hat sich erledigt: Ursache war ein echter
    Schussel-Fehler.

    Ich hatte vor dem Setzen des Links zwar per SELECT-Anweisung
    Tabelleneinträge ausgelesen, ABER NICHT DIE ID!
    Daher konnte die richtige ID aus der Tabelle auch nicht
    im URL-ANHANG landen:

    <?$select = "id, UNIX_TIMESTAMP(datum) as datum, titel, beitrag, 
    rubrik, link, url ";
        if (empty($id)) $query = "SELECT $select FROM blog ORDER BY 
    datum DESC";
    //USW.?>


    Noch mal vielen Dank für die Hilfe.

    Grüße
  9. xD ok

    passiert^^
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!