tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
599
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo euch allen,

    ich habe mal eine Frage. Aber vor weg ich bin ganz neu in PHP und kenne mich noch kaum aus. Ich wurde gerne folgendes haben:

    Ich habe eine Seite die heißt:

    test.php wie die Datei aussieht das seht Ihr hier:

    PHP-Code:
    <?php
    include "config.php";
    if(!empty(
    $_POST))
    {
            
    $sql "INSERT INTO test 
                    (
                        titel,
                        text,
                        datum
                    )
                    VALUES
                    (
                        '" 
    addslashes($_POST["titel"]) . "',
                        '" 
    addslashes($_POST["text"]) . "',
                        NOW()

                    )
                    "
    ;
            
    mysql_query($sql) OR die(mysql_error());
            
            
    header("Location: test_1.php");
    exit;
    }
    ?>


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Nur zum Test</title>
    </head>

    <body>
    <form name="form1" method="post" action="">
      <table width="50%"  border="0">
        <tr>
          <td width="28%" height="29"><strong>&Uuml;berschrift:</strong></td>
          <td width="72%"><input name="titel" type="text" id="titel" size="30"></td>
        </tr>
        <tr>
          <td height="77"><strong>Test:</strong></td>
          <td><textarea name="text" cols="50" id="text"></textarea></td>
        </tr>
        <tr>
          <td height="42">&nbsp;</td>
          <td><input name="eintragen" type="submit" id="eintragen" value="&gt;&gt; Senden"></td>
        </tr>
      </table>
    </form>
    </body>
    </html>
    So die Tabelle in der DB sieht dann so aus:

    CREATE TABLE `test` (
    `id` INT( 6 ) NOT NULL ,
    `titel` VARCHAR( 200 ) NOT NULL ,
    `text` TEXT NOT NULL ,
    `datum` DATETIME NOT NULL
    );

    So dann habe ich noch eine Datei die heißt edit.php

    Wie die datei

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <
    title>Nur zum Test</title>
    </
    head>

    <
    body>
    <
    form name="form1" method="post" action="">
      <
    table width="50%"  border="0">
        <
    tr>
          <
    td width="28%" height="29"><strong>&Uuml;berschrift:</strong></td>
          <
    td width="72%"><input name="titel" type="text" id="titel" size="30"></td>
        </
    tr>
        <
    tr>
          <
    td height="77"><strong>Test:</strong></td>
          <
    td><textarea name="text" cols="50" id="text"></textarea></td>
        </
    tr>
        <
    tr>
          <
    td height="42">&nbsp;</td>
          <
    td><input name="eintragen" type="submit" id="eintragen" value="&gt;&gt; Senden"></td>
        </
    tr>
      </
    table>
    </
    form>
    </
    body>
    </
    html
    So meine Frage ist nun wie muss ich das machen, dass wenn ich dann auf einen Beitrag klicke, dass ich den dann editieren kann und zwar mit dem Formular edit.php und wie muss der Link dann aussehen bei dem Beitrag?

    Ich komme da einfach nicht weiter. Ich hoffe von euch kann mir da jemand weiter helfen odeR?

    Gruß cheergirly
     

  2. #2
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    PHP-Code:
    <?php
    if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wird dann
    include "config.php"
    $result mysql_query("SELECT * FROM test WHERE City='" $id ."'") OR die(mysql_error()); // Datensatz auslesen.
    $result mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;)
    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Nur zum Test</title> 
    </head> 

    <body> 
    <form name="form1" method="post" action=""> 
    <table width="50%" border="0"> 
    <tr> 
    <td width="28%" height="29"><strong>&Uuml;berschrift:</strong></td> 
    <td width="72%"><input name="titel" type="text" id="titel" size="30" value="<?php echo $result['titel']; ?>"></td> 
    </tr> 
    <tr> 
    <td height="77"><strong>Test:</strong></td> 
    <td><textarea name="text" cols="50" id="text"><?php echo $result['text']; ?></textarea></td> 
    </tr> 
    <tr> 
    <td height="42">&nbsp;</td> 
    <td><input name="eintragen" type="submit" id="eintragen" value="&gt;&gt; Senden"></td> 
    </tr> 
    </table> 
    </form> 
    </body> 
    </html>
    Ist nicht getestet.
    Der Link sieht dann so aus:
    http://dein-pfad.com/edit.php?id=idD...endenBeitrages

    Wenn du jetzt aber auf eintragen klickst wird nochmals ein Datensatz erstellt. Da musst du dann schon noch was abändern. Kannst ja zum Beispiel über ein Hidden Feld die Varialbe ID mitgeben und kannst dann beim Speichern abfangen ob ID gesetzt ist oder nicht. Wenn es gesetzt ist (kannst du testen mit der funktion isset()) musst du den Beitrag mit der ID updaten und sonst einen neuen speichern. Verstanden?

    MFG
    redX
    Geändert von redX (18.04.05 um 13:10 Uhr)
     
    Es gibt ein leben vor dem Tod

  3. #3
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo,

    um ehrlich zu sein habe ich gerade gar nichts mehr verstanden.

    Hab das mal bis jetzt so gemacht:

    PHP-Code:
    <?php
    include "../data/config.php";
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Unbenanntes Dokument</title>
    <style type="text/css">
    <!--
    .Stil25 {font-family: Arial, Helvetica, sans-serif; color: #000000; font-weight: bold; }
    -->
    </style>
    </head>

    <body>
    <p>Ausgabe:</p>
    <?php // auslesen der Daten//
                    
    $sql "SELECT
                        id,
                        titel,
                        text            
                    
                        FROM
                        test
                        "
    ;
                        
    $return mysql_query($sql) OR die(mysql_error());
                        
    ?>
                               <?php
                        
    while($_data mysql_fetch_assoc($return))
                        {
                        
    ?>
    <table width="50%"  border="0">
      <tr>
        <td width="23%" height="29"><strong>&Uuml;berschrift:</strong></td>
        <td width="77%"><span class="Stil25"><?php echo $_data['titel']; ?></span></td>
      </tr>
      <tr>
        <td height="31"><strong>Nachricht:</strong></td>
        <td><span class="Stil25"><?php echo $_data['text']; ?></span></td>
      </tr>
      <tr>
        <td height="31">Edit:</td>
        <td><a href="edit.php?id=id">[ zum edit ] </a></td>
      </tr>
      <tr>
        <td height="31">&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <?php
                        
    }
                        
    ?>
    </table>
    <p></p>
    <p><a href="test.php">[ Eintragen ]</a></p>
    </body>
    </html>
    den Link zum Editieren habe ich nun so gemacht:

    <a href="edit.php?id=id">[ zum edit ] </a>

    aber da wird dann gar keine ID mit übergeben Hmm ich habe mir das alles leichter vorgestellt und was du bei deinem Edit noch geschrieben hast das habe ich auch nicht verstanden. Ich hoffe du kannst mir nochmals helfen
     

  4. #4
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    Na klar wird da keine ID übergeben

    <td><a href="edit.php?id=id">[ zum edit ] </a></td>

    Du hast hier ja fest eingetragen: id=id. Wie soll es denn da ne ID überbeben. Die ID steht ja auch in der $_data variabel drin. Also mach mal so was:

    PHP-Code:
    <td><a href="edit.php?id=<?php echo $_data['id']; ?>">[ zum edit ] </a></td>
    Hast du das mal verstanden?
    Jetzt wird edit.php übergeben und dort hast du dann die ID zur verfügung.

    PHP-Code:
    <?php 
    if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wird dann 
    include "config.php"
    $result mysql_query("SELECT * FROM test WHERE City='" $id ."'") OR die(mysql_error()); // Datensatz auslesen. 
    $result mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;) 

    ?>
    Dies liest nun eben einen Datensatz aus der DB. Und welcher? Der mit der ID, die über die URL übergeben wurde. Das Resultat ist dann in der Variabel $result gespeichert. Auf diese kannst du zugreifen wie bei dem Code den du gezeigt hast -> $_data['titel']

    PHP-Code:
    <?php 
    if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wird dann 
    include "config.php"
    $result mysql_query("SELECT * FROM test WHERE City='" $id ."'") OR die(mysql_error()); // Datensatz auslesen. 
    $result mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;) 

    ?> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Nur zum Test</title> 
    </head> 

    <body> 
    <form name="form1" method="post" action=""> 
    <table width="50%" border="0"> 
    <tr> 
    <td width="28%" height="29"><strong>&Uuml;berschrift:</strong></td> 
    <td width="72%"><input name="titel" type="text" id="titel" size="30" value="<?php echo $result['titel']; ?>"></td> 
    </tr> 
    <tr> 
    <td height="77"><strong>Test:</strong></td> 
    <td><textarea name="text" cols="50" id="text"><?php echo $result['text']; ?></textarea></td> 
    </tr> 
    <tr> 
    <td height="42">&nbsp;</td> 
    <td><input name="eintragen" type="submit" id="eintragen" value="&gt;&gt; Senden"></td> 
    </tr> 
    </table> 
    </form> 
    </body> 
    </html>
    Nun haben wir eben dieses Codestück. Das ist dazu da, um neue Datensätze anzulegen sowie diese zu bearbeiten. Jetzt, wenn auf eintragen geklickt wird, wird jedesmal ein neuer Datensatz angelegt. Auch wenn du einen Datensatz editiern möchtest. So weit mal verstanden?
    Jetzt möchtest du ja, wenn er editiern geklickt hat einen Datensatz abändern, und nicht einen neuen anlegen. Also musst du irgendwann mal testen, ob er einen neuen anlegen oder einen Editiern möchte und dann musst du ja ein anderes Statement auslösen.

    Habe das Codestück noch angepasst. Natürlich kannst du es auch anderst lösen


    PHP-Code:
    <?php 
    $action 
    "save_new.php"// Standard mässig wird das save_new.php aufgerufen wenn man speicher möchte. Also wird ein neuer Eintrag in die DB geschrieben
    if (isset($id)) { // Wenn die ID gesetzt ist, also über den Link übergeben wurde, was bedeutet, der User möchte einen Eintrage editieren 
    include "config.php"
    $result mysql_query("SELECT * FROM test WHERE City='" $id ."'") OR die(mysql_error()); // Datensatz auslesen. 
    $result mysql_fetch_array($result); // Wird benötigt um darauf zuzugreifen. (könnte auch ohne, aber so ist's angenehmer ;) 
    $action "save_edit.php"// Da der User einen Eintrage editieren möchte, wird nicht save_new.php aufgerufen sondern save_edit.php

    ?> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Nur zum Test</title> 
    </head> 

    <body> 
    <form name="form1" method="post" action="<?php echo $action/* Hier wird nun eingetragen, welche aktion ausgefürht wird. Also save new oder save edit... */ ?>"> 
    <table width="50%" border="0"> 
    <tr> 
    <td width="28%" height="29"><strong>&Uuml;berschrift:</strong></td> 
    <td width="72%"><input name="titel" type="text" id="titel" size="30" value="<?php echo $result['titel']; ?>"></td> 
    </tr> 
    <tr> 
    <td height="77"><strong>Test:</strong></td> 
    <td><textarea name="text" cols="50" id="text"><?php echo $result['text']; ?></textarea></td> 
    </tr> 
    <tr> 
    <td height="42">&nbsp;</td> 
    <td><input name="eintragen" type="submit" id="eintragen" value="&gt;&gt; Senden"></td> 
    </tr> 
    </table> 
    </form> 
    </body> 
    </html>
    Nun verstanden? Das ganze ist ungetestet...

    MFG & gn8
    redX
     
    Es gibt ein leben vor dem Tod

  5. #5
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo und guten Morgen,

    danke für deinen Ausführliche Erklärung. Hab soweit auch alles verstanden und ich habe es auch schon mal versucht. Nur jetzt kommt noch eine Frage hoch. Was steht denn in:

    save_new.php

    und in

    save_edit.php

    Das sind ja wieder zwei Dateien was ich anlegen muss oder? Hmm ich währe dir sehr Dankbar, wenn du mir da nochmals helfen wurdest.

    Gruß

    PS: Aus dem City habe ich nun mal id gemacht das ist doch OK oder?
     

  6. #6
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    klar muss city id heissen. sorry

    Also das mit save_new und save_edit ist nur eine möglichkeit wie du das problem lösen kannst. Du kannst es auch in einem File machen. Es geht einfach darum, das du entweder, nämlich wenn man einen neuen Beitrag erstellen möchte, eine INSERT INTO SQL Statement abgeben muss, und wenn man einen Beitrag editiren möchte, muss man ne UPDATE Statment schreiben. Leider ist PHP nun nicht so gescheit und kann selber entscheiden ob ein UPDATE oder ein INSERT INTO abgeben muss. Also musst du das machen. Jetzt, ebe mit save_new und save_edit hast du entweder das save_new File mit der INSERT INTO Anweisung oder das save_edit mit der UPDATE Anweisung.
    Du kannst aber auch ein save.php machen. Und dann, wenn eine ID über das Formular übergeben wurde (was bedeutet, das man einen Beitrag editiern möchte, eben den mit der ID im Link) wird der UPDATE Befehl ausgefürht. Wenn keine ID vorhanden ist wird ein INSERT INTO gemacht. Kannst es machen wie du möchtest...

    Alles klar?

    MFG
    redX
     
    Es gibt ein leben vor dem Tod

  7. #7
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo,

    danke dass du dich nochmals gemdelrt hast. OK bei

    save_new.php

    kommt dann also nochmals folgendes rein:

    PHP-Code:
    if(!empty($_POST))
    {
            
    $sql "INSERT INTO test
                    (
                        titel,
                        text,
                        datum
                    )
                    VALUES
                    (
                        '" 
    addslashes($_POST["titel"]) . "',
                        '" 
    addslashes($_POST["text"]) . "',
                        NOW()

                    )
                    "
    ;
            
    mysql_query($sql) OR die(mysql_error());
            
            
    header("Location: test_1.php");
    exit;
    }
    ?> 
    Habe ich das richtig verstnaden?

    Und bei save_edit.php kommt dann folgendes rein:

    PHP-Code:
    if(!empty($_POST))
    {
            
    $sql "$sql = "UPDATE 
    test
                    
    (
                        
    titel,
                        
    text,
                        
    datum
                    
    )
                    
    VALUES
                    
    (
                        
    '" . addslashes($_POST["titel"]) . "',
                        
    '" . addslashes($_POST["text"]) . "',
                        
    NOW()

                    )
                    
    ";
            mysql_query(
    $sql) OR die(mysql_error());
            
            header("
    Locationtest_1.php");
    exit;
    }
    ?> 
    Habe ich das nun auch so richtig verstanden?
     

  8. #8
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    Stimmt genau

    Jetzt hat der Code eifach noch ein paar Syntax Fehler ... aber ich denke das ist dir beim Copy & Past unterlaufen

    Schön wäre es natürlich wenn du noch anzeigst: Beitrage gespeichert oder Beitrag editiert. Aber das ist dann nur noch Kosmetik ...

    MFG
    redX
     
    Es gibt ein leben vor dem Tod

  9. #9
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo,

    hmm wo sind denn da noch Fehler drin? * grübel *

    Schön wäre es natürlich wenn du noch anzeigst: Beitrage gespeichert oder Beitrag editiert. Aber das ist dann nur noch Kosmetik ...
    Hmm ich hatte eigentlich gedacht dass ich das noch so mache, dass ich auch nee Ausgabe mache dass dieser Beitrag editiert worden ist. Denn eine Ausgabe wenn der Beitrag geschrieben worden ist das habe ich schon. Aber ich weiß nicht wie ich das machen muss dass ich noch eintragen lassen kann wenn der Beitrag editiert worden ist. Dann hatte ich noch gedacht dass ich auch noch anzeigen lasse wie oft der Beitrag editiert worden ist. Geht das denn auch wenn ja das muss ich ja dann in der edit Datei machen gelle oder? Hmm ich weiß es nicht. Meine PHP Kenntnisse sind wie gesagt noch nicht so gut.

    Gruß cheergirly
     

  10. #10
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo,

    so hab es gerade mal ausprobiert und nun bekomme ich folgende Meldung:

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO test ( titel, text, ) VALUES

    und zwar in der save_edit.php

    Die Datei sieht nun so aus:

    PHP-Code:
    <?php
    include "config.php";
    if(!empty(
    $_POST))
    {
            
    $sql "Update INTO test 
                    (
                        titel,
                        text,
                    )
                    VALUES
                    (
                        '" 
    addslashes($_POST["titel"]) . "',
                        '" 
    addslashes($_POST["text"]) . "',
                    )
                    "
    ;
            
    mysql_query($sql) OR die(mysql_error());
            
            
    header("Location: ");
    exit;
    }
    ?>
     

  11. #11
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    http://www.w3schools.com/sql/sql_update.asp

    Hier wird dir geholfen. Das INTO braucht es nicht und das Komma nach text auch nicht.

    Das mit dem Edit.
    Du kannst ja noch ein Feld machen in der DB das die anzahl der Editierungen beinhaltet. Also zu beginn ist es 0. Und bei jedem Edit wird die anzahl dort um 1 erhöt

    MFG
    redX
     
    Es gibt ein leben vor dem Tod

  12. #12
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Hallo,

    hmm wenn ich das auch so mache wie du mir das gerade gesagt hast dann bekomme ich aber immernoch diese Meldung:

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( titel, text ) VALUES ( 'H',
     

  13. #13
    redX redX ist offline Mitglied Brokat
    Registriert seit
    Nov 2003
    Beiträge
    464
    UPDATE Person
    SET Address = 'Stien 12', City = 'Stavanger'
    WHERE LastName = 'Rasmussen'

    check das Manual das ich gepostet habe

    MFG
    redX
     
    Es gibt ein leben vor dem Tod

  14. #14
    cheergirly cheergirly ist offline Rookie
    Registriert seit
    Apr 2005
    Beiträge
    8
    Bitte was soll ich machen? Das was du mir gerade geschrieben hast das passt ja ganz und gar nicht zu dem was ich habe oder?
     

  15. #15
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Das ist auch nur ein Beispiel von ihm. Um die Syntax des UPDATE-Befehls zu verdeutlichen.

    Hier der Link zur UPDATE-Syntax
    Geändert von Dennis Wronka (19.04.05 um 11:38 Uhr)
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

Ähnliche Themen

  1. In welcher Datei kann ich die Gruppenrechte editieren ?
    Von rollerueckwaerts im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 20.10.10, 13:17
  2. JAR und JAD Editieren ?!
    Von karabey im Forum Java
    Antworten: 19
    Letzter Beitrag: 07.07.04, 17:21
  3. dbm editieren
    Von Krypthonas im Forum PHP
    Antworten: 6
    Letzter Beitrag: 29.04.03, 19:01
  4. alt tag editieren
    Von derben im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 30.01.03, 17:47
  5. Statuszeile editieren/Adresszeile editieren
    Von mudderbaimer im Forum HTML & XHTML
    Antworten: 8
    Letzter Beitrag: 26.08.02, 15:16