News editieren

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

  • News editieren

    hi!

    also ich hab in der datenbank eine tabelle erstellt "news"

    und darin sind die Felder..

    newsid (Primary Key)
    titel (varchar)
    text (text)
    link (varchar)
    author (varchar)
    datetime (datetime)

    so dann hab ich ne news.php erstellt wo die news erstmal ausgegeben werden:

    PHP-Code:
    <html>
    <head>
    </head>
    <body>

    <?php

    include("mySQL/login_data.php");

    // Datendefinition für die Clientausgabe
    $start = (isset($start)) ? abs((int)$start) : 0;
    $limit 10;                     // Datensätze pro Ausgabeseite

    // Verbindung zu MySQL-Datenbank herstellen oder sterben.
    @mysql_connect($host,$user,$password)
        or die(
    "Abbruch: Verbindung zu '$host'"
        
    ." konnte nicht hergestellt werden.");

    // Benötigte Datenbank auswählen oder sterben.
    @mysql_select_db($database)
        or die(
    "Abbruch: Datenbank '$database' konnte nicht"
        
    ." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

    // Feststellen der Anzahl der verfügbaren Datensätze.
    $resultID = @mysql_query("SELECT COUNT(newsid) FROM ".$table);
    $total    = @mysql_result($resultID,0);

    // Ggf. $start korrigieren (falls Parameter in
    // der URL manipuliert wurde)
    $start    = ($start >= $total) ? $total $limit $start;

    // Datenbankabfrage ausführen.
    $query    "SELECT newsid, titel, text, link, author, datetime FROM $table ORDER by newsid desc LIMIT $start,$limit";
    $resultID = @mysql_query($query);

    // Ergebnisse lesen und an den Client ausgeben
    while ($data mysql_fetch_array($resultID))
    {
        
    $newsid=$data["newsid"];
        
    $titel=$data["titel"];
        
    $text=$data["text"];
        
    $link=$data["link"];
        
    $author=$data["author"];
        
    $datetime=$data["datetime"];
    ?>
            
    <table width="706" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td width="50%" height="16" align="left"><b><?php echo $titel?></b>&nbsp;&nbsp;
        [<a href="central.php?type=del&newsid=<?php echo $newsid?>" target="_self">del</a>]
        [<a href="news_edit.php?newsid=<?php echo $newsid?>" target="_self">edit</a>]</td>
        <td width="50%" height="16" align="right"><?php echo $datetime?></td>
    </tr>
    <tr>
        <td colspan="2" width="708" height="16" align="left"><?php echo $text?>
        <?
        if($link != "") {
        ?>
        <p><b>Link:</b> <? echo $link; ?>
        <?
        }
        else { }
        ?>
        </td>
    </tr>
    <tr>
        <td colspan="2" width="708" height="16" align="right"><?php echo $author?></td>
    </tr>
    </table><p>
            
    <?php
    }

    // Zurück- und Vorblättern
    if ($start 0)
    {
        
    $newStart = ($start $limit 0) ? : ($start-$limit);
        echo 
    "<a href=".$_SERVER['PHP_SELF']."?start=".$newStart
        
    .">&lt; zurück</a>";
    }

    if (
    $start $limit $total)
    {
        
    $newStart $start $limit;
        echo 
    " <a href=".$_SERVER['PHP_SELF']."?start=".$newStart
        
    .">weiter &gt;</a>";
    }
            
    // ENDE: HAUPTFENSTER INHALT
    ?>

    </body>
    </html>
    wenn ich jetzt auf "news_edit" in dem betreffenden beitrag klick wird die "edit.php" aufgerufen und die newsid soll übergeben werden, um die datensätze in dem formular in der news_edit.php einzufügen:

    PHP-Code:
    <html>
    <head>
    </head>
    <body>

    <?php
    // ANFANG: HAUPTFENSTER INHALT
        
    include("mySQL/login_data.php");

    if (
    $newsid) {
        
    // Verbindung zu MySQL-Datenbank herstellen oder sterben.
        
    @mysql_connect($host,$user,$password)
        or die(
    "Abbruch: Verbindung zu '$host'"." konnte nicht hergestellt werden.");

        
    // Benötigte Datenbank auswählen oder sterben.
        
    @mysql_select_db($database)
        or die(
    "Abbruch: Datenbank '$database' konnte nicht"." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

        
    // Datenbankabfrage ausführen.
        
    $query    "SELECT titel, text, link, author, datetime FROM $table WHERE newsid=$newsid";
        
    $resultID = @mysql_query($query);

        
    // Ergebnisse lesen und an den Client ausgeben
        
    while ($data mysql_fetch_array($resultID))
        {
            
    $titel=$data["titel"];
            
    $text=$data["text"];
            
    $link=$data["link"];
            
    $author=$data["author"];
            
    $datetime=$data["datetime"];

        }
        echo 
    $newsid;
    ?>

    <form action="central.php?type=edit&newsid=<?php echo $newsid?>" method="POST" name="newsedit">
    <table>
        <tr><td>Poster</td><td><input type="text" name="author" size="35" maxlength="30" class="felder" value="<?php echo $author?>"></td></tr>
        <tr><td>Titel</td><td><input type="text" name="titel" size="35" maxlength="80" class="felder" value="<?php echo $titel?>"></td></tr>
        <tr><td>Link (optional)</td><td><input type="text" name="link" size="35" maxlength="80" value="<?php echo $link?>"></td></tr>
        <tr><td>News</td><td><textarea name="text" rows="9" cols="50"><?php echo $text?></textarea></td></tr>
        <tr><td align="center"><input type="submit" value=" News editieren "></td></tr>
    </table>
    </form>
        
    <?
    }
    // ENDE: HAUPTFENSTER INHALT
    ?>

    </body>
    </html>
    Die SQL Logindaten sind in einer externen datei gespeichert..
    wenn ich jetzt auf "edit" klicke wird nur eine weiße seite aufgebaut, weil ich denke, dass die newsid nicht übergeben wird..

    ich hab es jetzt schon zum 2. mal von vorn gemacht aber ich entdecke keinen fehler, ich hoffe ihr könnt mir helfen.

  • #2
    Re: News editieren

    Regeln lesen, Code umbrechen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: News editieren

      Edit-Abschnitt:
      PHP-Code:
      while ($data mysql_fetch_array($resultID)) // du willst EINE News bearbeiten, wieso also while?
      // besser wäre
      $data mysql_fetch_assoc($resultID);
      $titel $data['titel'];
      $text = ...
      ... 

      Abgesehen davon sehe ich nigends ein UPDATE-Statement?!
      Dazu sehe ich viele @s, die nicht sein sollten, weil sie (hilfreiche) Fehlermeldungen unterdrücken!

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        danke, werde es gleich ändern..

        das update statement kommt in einer zentralen datei

        PHP-Code:
        ..
        <form action="central.php?type=edit&newsid=<?php echo $newsid?>"
        ..

        Kommentar


        • #5
          weil ich denke, dass die newsid nicht übergeben wird..
          ist wohl mal wieder register_globals

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            @ghostgambler

            ich hab es so abgeändert aber es besteht immer noch das gleiche problem..

            @Kropff

            ich hab die news_edit.php jetzt so abgeändert:

            PHP-Code:
            <html>
            <head>
            </head>
            <body>

            <?php
            // ANFANG: HAUPTFENSTER INHALT
                
            include("mySQL/login_data.php");

            if (
            $_GET['newsid']) {
                
            // Verbindung zu MySQL-Datenbank herstellen oder sterben.
                
            @mysql_connect($host,$user,$password)
                or die(
            "Abbruch: Verbindung zu '$host'"." konnte nicht hergestellt werden.");

                
            // Benötigte Datenbank auswählen oder sterben.
                
            @mysql_select_db($database)
                or die(
            "Abbruch: Datenbank '$database' konnte nicht"." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

                
            // Datenbankabfrage ausführen.
                
            $query    "SELECT titel, text, link, author, datetime FROM $table WHERE newsid=$_GET['newsid']";
                
            $resultID = @mysql_query($query);

                
            // Ergebnisse lesen und an den Client ausgeben
                
            $data mysql_fetch_array($resultID)

                    
            $newsid=$data["newsid"];
                    
            $titel=$data["titel"];
                    
            $text=$data["text"];
                    
            $link=$data["link"];
                    
            $author=$data["author"];
                    
            $datetime=$data["datetime"];

                echo 
            $_GET['newsid'];
            ?>

            <form action="central.php?type=edit&newsid=<?php echo $newsid?>" method="POST" name="newsedit">
            <table>
                <tr><td>Poster</td><td><input type="text" name="author" size="35" maxlength="30" class="felder" value="<?php echo $author?>"></td></tr>
                <tr><td>Titel</td><td><input type="text" name="titel" size="35" maxlength="80" class="felder" value="<?php echo $titel?>"></td></tr>
                <tr><td>Link (optional)</td><td><input type="text" name="link" size="35" maxlength="80" value="<?php echo $link?>"></td></tr>
                <tr><td>News</td><td><textarea name="text" rows="9" cols="50"><?php echo $text?></textarea></td></tr>
                <tr><td align="center"><input type="submit" value=" News editieren "></td></tr>
            </table>
            </form>
                
            <?
            }
            // ENDE: HAUPTFENSTER INHALT
            ?>

            </body>
            </html>
            da kommt folgender fehler:

            Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/be1/07/909/00000018/htdocs/sm_news/news_edit.php on line 21

            es geht nicht so einfach oder? ^^

            Kommentar


            • #7
              ok hab es jetzt hinbekommen
              das prob is, dass mein altes script auf meinem webspace läuft und bei meinem kollegen nicht, weil seine php version neuer ist ^^

              vielen dank!

              Kommentar


              • #8
                PHP-Code:
                // Ergebnisse lesen und an den Client ausgeben
                    
                $data mysql_fetch_array($resultID
                Meiner meinung nach fehlt dir da auch ein Semikolon, un ich kann mir nich vorstellen das eine andere PHP Version darüber hinwegsieht
                PHP Forum
                Sessions in PHP
                Loginsystem mit PHP erstellen

                Kommentar


                • #9
                  ja stimmt aber das hat ich im code schon gesehn und geändert
                  jedenfalls funktioniert es.. ^^

                  könnte man die lösung auch für ältere php versionen benutzen?

                  Kommentar


                  • #10
                    könnte man die lösung auch für ältere php versionen benutzen?
                    bis 4.1 runter, wenn ein provider noch was älteres hat, kündigen.

                    gruß
                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar

                    Lädt...
                    X