Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem nach dem Löschen eines Datensatzes

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem nach dem Löschen eines Datensatzes

    Hallo,
    ich habe hier im Forum und bei google bereits nach meinem Problem gesucht, aber leider ohne Erfolg.
    Ich bin am PHP und MYSQL lernen, allerdings noch ein Anfänger.
    Ich habe für einen Bekannten eine Art Linkliste geschrieben mit PHP und MYSQL. Er hat darin die Möglichkeit, einen Eintrag hinzuzufügen und auch wieder zu löschen. Eigentlich funktioniert auch alles ganz gut, bis auf eine Sache. Wenn er einen Eintrag aus der Datenbank löscht und dann wieder einen neuer erstellt, wieder dieser an der Stelle des alten Beitrages erstellt.
    Gibt es eine Möglichkeit, das zu verhindern? Er sollte eigentlich ganz unten in der Tabelle erstellt werden, damit die Tabelle sortiert ist.
    Da ich nicht weiß, wo der Fehler liegt, poste ich einfach mal alle meine Codes.

    upload.php
    PHP-Code:
    <?php
    $File
    =$HTTP_POST_VARS['file'];
    if (
    copy ($file"../pdf/$file_name"))
    {
    print (
    "Bitte tragen Sie hier den Titel für das neue Dokument ein:

    <form method='post' action='db_aktualisieren.php'>
    <input type='text' name='titel'>
    <input type='hidden' name='file' value='
    $file_name'>

    <input type='submit' value='Senden'>"
    );

    else {
    print (
    "Datei konnte nicht hochgeladen werden. Bitte klicken Sie [url='index.php']hier[/url], um es erneut zu versuchen.\n");
    }
    ?>
    db_aktualisieren.php
    PHP-Code:
    <?php
    $titel
    =$HTTP_POST_VARS['titel'];
    $file=$HTTP_POST_VARS['file'];
    $punkt=".";
    $date date("d");
    $date .=$punkt;
    $date .=date("m");
    $date .=$punkt;
    $date .=date("Y");
    $titel=htmlspecialchars($titel);
    $titel=htmlentities($titel);
    $db=mysql_connect("localhost""""")
        or die(
    "[b]Zur Zeit kein Connect zum Datenbankserver![/b]");
    mysql_select_db("")
        or die(
    "[b]Datenbank konnte nicht angesprochen werden[/b]");
    $anfrage="INSERT INTO aktuelles VALUES ('";
    $anfrage.=$titel;
    $anfrage.="', '";
    $anfrage.=$file;
    $anfrage.="', '";
    $anfrage.=$date;
    $anfrage.="')";
    mysql_query($anfrage)
       or die(
    "[b]Fehler bei der Datenbankanfrage: [/b]".mysql_error());
     
    mysql_close($db);
     print(
    "Ihr Eintrag wurde erfolgreich hinzugefügt! ");
     print(
    "[url='index.php']Zur&uuml;ck zur Startseite[/url]");
    ?>
    loeschen.php
    PHP-Code:
    <?php
    $titel
    =$HTTP_POST_VARS['titel'];
    $titel=htmlspecialchars($titel);
    $titel=htmlentities($titel);
    //Dateiname wird ausgelesen
    $db=mysql_connect("localhost""""")
        or die(
    "[b]Zur Zeit kein Connect zum Datenbankserver![/b]");
    mysql_select_db("")
        or die(
    "[b]Datenbank konnte nicht angesprochen werden[/b]");
    $anfrage="SELECT titel, name FROM aktuelles WHERE titel like '$titel'";
      
    $ergebnis=mysql_query($anfrage)
        or die (
    "[b]Fehler bei der Datenbankanfrage[/b]");
    $zeile=mysql_fetch_row($ergebnis);
    mysql_close($db);
    //Datei wird vom Server gelöscht
    unlink("../pdf/$zeile[1]");
    //Der entsprechende Eintrag wird aus der Datenbank entfern
    $db=mysql_connect("localhost""""")
        or die(
    "[b]Zur Zeit kein Connect zum Datenbankserver![/b]");
    mysql_select_db("")
        or die(
    "[b]Datenbank konnte nicht angesprochen werden[/b]");
    $delete="DELETE FROM aktuelles WHERE titel like '$titel'";
    mysql_query($delete)
       or die(
    "[b]Fehler beim löschen des Eintrages: [/b]".mysql_error());
    mysql_close($db);
    print(
    "Der Eintrag $titel wurde erfolgreich gelöscht");
    print(
    "[url='index.php']Zur&uuml;ck zur Startseite[/url]");
    ?>
    Das spätere Auslesen geschieht durch die aktuelles.php
    PHP-Code:
    <?php
    //PHP - Script zum Auslesen der Daten aus der Datenbank
      
    $db=mysql_connect("localhost","","")
       or die (
    "[b]Zur Zeit keine Verbindung zum Datenbankserver möglich![/b]");
      
    mysql_select_db("")
        or die (
    "[b]Datenbank konnte nicht angesprochen werden[/b]");
      
    $anfrage="SELECT titel, name, date FROM aktuelles";
      
    $ergebnis=mysql_query($anfrage)
        or die (
    "[b]Fehler bei der Datenbankanfrage[/b]");
      
    $anz=mysql_num_rows($ergebnis);
      
    //Jetzt die Einträge auslesen:
      
    $spaltenanzahl=mysql_num_fields($ergebnis);
      
    $liste="";
      
    $content="
    "
    ;
      while (
    $zeile=mysql_fetch_row($ergebnis)) {
         
    $liste=$content;
         
    $eintrag="

    "
    ;
         
    $eintrag.=$zeile[2];
         
    $eintrag.="";
         
    $eintrag.="<a href='http://www.**.com/pdf/";
         
    $eintrag.=$zeile[1];
         
    $eintrag.="' target='_blank'>";
         
    $eintrag.=$zeile[0];
         
    $eintrag.="</a>";
         
    $content=$eintrag;
         
    $content.=$liste
      }
      
    mysql_close($db);
      print(
    $content);
    ///PHP - Script zum Auslesen der Daten aus der Datenbank
    ?>
    Ich hoffe, dass jemand mir jemand helfen kann.

    Vielen Dank im Voraus
    gameco

    ?>[/php]

  • #2
    Zu beginn: Bitte benutze
    Code:
        
        
        
    
    
    PHP-Code:
     // PHP-Code 
    Tags um dein Script hier zu posten
    Weiterhin, $HTTP_POST_VARS ist veraltet, nimm stattdessen lieber $_POST.. bei $HTTP_GET_VARS dasselbe, nämlich $_GET. Um MySQL-Fehler vorzubeugen haust du hinter jedem Query ein mysql_error() :
    PHP-Code:
    <?php
    $qry 
    mysql_query("..") or die( mysql_error() );
    ?>
    Nun zu deiner eigentlichen Frage - ohne mir das Script von dir angesehen zu haben..
    Wie speicherst du die Daten in der DB? Hast du einen fortlaufen ID-Wert, mit dem du die Datensätze sortieren kannst? In diesem Fall kannst du die Einträge einfach aus der DB mit einem ORDER BY id auswählen..

    Kommentar


    • #3
      Hallo Chr!s,
      Ich habe leider keine ID, mit der ich es sotieren könnte.
      Ich benutze ganz einfach den Befehl "mysql_query", ohne speziell zu sagen, wo er es in der Tabelle einfügen soll, da ich leider nicht genau weiß, wie man das machen kann. Bin wie gesagt noch ein ziemlicher Anfänger in MYSQL.

      MfG
      gameco

      PS: Sorry, dass mit dem php Tag hatte ich übersehen, ist jetzt aber geändert.
      Das mit $HTTP_POST_VARS werde ich auch ändern, danke für den Tipp.

      Kommentar


      • #4
        Hallo Chr!s,
        Ich habe leider keine ID, mit der ich es sotieren könnte.
        Ich benutze ganz einfach den Befehl "mysql_query", ohne speziell zu sagen, wo er es in der Tabelle einfügen soll, da ich leider nicht genau weiß, wie man das machen kann. Bin wie gesagt noch ein ziemlicher Anfänger in MYSQL.
        Das war so gedacht:
        Du legst in der Datenbank eine neue Spalte in deiner Tabelle an, INT und auto_increment. Die SPalte nennst du am besten "id" oder so. Nun wirst du beim jeden Eintragen bemerken, dass sich die ID automatisch um 1 erhöht (-> auto_increment). ANhand dieser ID's kannst du dann deine Datensätze odrnen, à la ORDER BY id ASC (ascending -> steigend) / ORDER BY id DESC (descending -> fallend)

        Kommentar


        • #5
          Hallo,
          Vielen Dank für die schnelle und kompetente Hilfe.
          Nun funktioniert alles bestens und ich habe wieder was gelernt.

          MfG
          gameco

          Kommentar

          Lädt...
          X