• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem beim wiedergeben verschiedener datensätze per ID und UPDATE MYSQL

Luckystriker

Neues Mitglied
Hallo Leute,

hoffe mir kann einer auf die sprünge helfen, häng da schon den ganzen morgen dran.
Folgendes: Ich möchte einen Eintrag in einem "Blog" editieren können, und das indem ich auf einen Edit Button unter dem Beitrag klicke.
Dann kommt man zu der edit.php in der das selbe Formular für einen neuen Eintrag nur gefüllt mit den schon vorhandenen Einträgen aufgerufen wird.
Hier das 1. Problem, wenn ich bei meiner SELECT Abfrage "WHERE id=$wert" mache taucht das Formular garnicht auf, wenn ich "id=5" mache, kommt alles, nur mit den
werten gefüllt aus der Tabelle mit der ID=5, das will ich aber nicht, sondern so wie auch der entsprechende Beitrag ist, hier mal mein Code fürs die edit.php:

PHP:
 <?php 

if (mysql_connect("localhost","xxx","xxx") AND
mysql_select_db("xxx")) 
{    
    $wert = (int)$_GET['id'];
    
    $query = "SELECT betreff, name, ort, datum, text FROM blackboard WHERE id=$'wert'";
        
    $mysql_query = mysql_query($query);
    
    while($data = mysql_fetch_array($mysql_query))
    {
        echo "<form action='update.php' method='post' name='Aushang'/>";
        echo "<h6>Eintrag ändern</h6><br />";
        echo "<h6>Betreff:</h6>";
        echo "<input type='text' size='20' maxlength='20' name='betreff' value=". $data['betreff'] ."><br /><br />";
        echo "<h6>Standort:</h6>";?>
        
        <select name="ort">
        <?php 
        
        mysql_connect("localhost", "xxx", "xxx") or die ("Keine Verbindung moeglich!");
    mysql_select_db("xxx") or die ("Die Datenbank existiert nicht.");

$query = "SELECT * FROM standort";
$mysql_query=mysql_query($query);
while($standort=mysql_fetch_array($mysql_query)){
    if($blackboard['ort']==$standort['ort']){
        ?>
        <option value="<?php echo $standort['ort'];?>"> selected="<?php echo $standort['ort'];?>"</option>
        <?php
    }
    else{
        ?>
        <option value="<?php echo $standort['ort'];?>"><?php echo $standort['ort'];?></option>
        <?php
    }
}
?>
</select><br /><br />
<?php
        echo "<h6>Name:</h6>";
        echo "<input type='text' size='20' maxlength='20' name='name' value=". $data['name'] ."><br /><br />";
        echo "<h6>Text:</h6>";
        echo "<input type='text' size='20' maxlength='20' name='text' value=". $data['text'] ."><br /><br />";
        echo "<input type='submit' name='submit_blackboard' value='Absenden' /><br /><br />";
        
    }
}
else {echo "Keine Verbindung zu Datenbank moeglich!";}
?>

Dann kommt noch dazu, wenn ich alles ändere und es abschicke, speichert er die daten nicht neu, sondern löscht alle werte in den tabellen der datenbank, die tabellen bleiben aber noch vorhanden :oops:
Hier mal mein code für die update.php:

PHP:
<?php 

mysql_connect("localhost", "xxx", "xxx") or die ("Keine Verbindung moeglich!");
            mysql_select_db("xxx") or die ("Die Datenbank existiert nicht.");

    $query = "UPDATE blackboard SET betreff = '$betreff', ort ='$ort', datum = '$datum', name = '$name', text = '$text'";
    
    $mysql_query = mysql_query($query);
    
    if(mysql_query){
        echo "<div class='success'><h6>Eintrag erfolgreich geändert</h6></div>";
    }
    else{
        echo "<div class='error'><h6>Fehler beim ändern</h6></div>";
    }


?>

Wäre euch echt dankbar wenn ihr mir da auf die Sprünge helfen könntet wo mein Fehler liegt.
Danke schonmal! :-)
 
Zuletzt bearbeitet:
Hallo,

erster Fehler beim SELECT in Zeile 8: WHERE id=$'wert'"; entweder machst du die Hochkommas ( ' ) ganz weg oder WHERE id='$wert'";
zweiter Fehler beim UPDATE in Zeile 6: $query = "UPDATE blackboard SET betreff = '$betreff', ort ='$ort', datum = '$datum', name = '$name', text = '$text'"; macht ein UPDATE auf alle Zeilen, da keine Bedingung (WHERE) gesetzt ist, aus der sich ergibt welche Zeile upgedatet werden soll. Außerdem frage ich mich wo die Variablen gefüllt werden. Falls du Daten verarbeiten willst, die über ein Formular kommen, solltest du darauf mittels $_GET oder $_POST (je nach verwendeter Formular-Methode) arbeiten. Deine Variante würde nur mit register_globals funktionieren, was aus Sicherheitsgründen nicht zu empfehlen ist und auch ab einer gewissen PHP Version nicht mehr einschaltbar ist (glaube ich zumindest, korrigiert mich wenn ich mich irre).

Soweit mal das, was mir nach dem Überfliegen des Codes aufgefallen ist.

*EDIT*
Die Verbindung zur Datenbank (mysql_connect()) und die Auswahl der Datenbank (mysql_select_db()) reicht einmal am Anfang des Codes. Alle mysql_query() werden dann auf die bestehende Verbindung angewandt. Am Ende kannst du dann ein mysql_close() machen, musst du aber nicht.

Die Attributwerte der HTML-Elemente mit Hochkommas zu setzen ist eigentlich unzulässig und wird (wenn überhaupt) nur von deinem Browser tolleriert. Eigentlichs sollten diese aber mit Anführungszeichen gesetzt werden.
 
Zuletzt bearbeitet:
Danke schonmal für die Tips, hat mir schonmal einiges weitergeholfen. Muss dazu sagen dass ich relativ unerfahren im bereich mysql und php bin, darum schleichen sich auch immer wieder mal solche leichtsinnsfehler bei mir ein. wäre jemand vielleicht so nett und könnte mir mal einen code schreiben wie ich das anders verwirklichen könnte? nach meinem code bin ich wohl schon etwas falsch an die sache rangegangen. danke :-)
 
Ich denke der Sinn, der hinter diesem Forum steckt ist die Hilfestellung bei Problemen und keine Börse um Gratis-Programmierer zu suchen.

Wenn du Interesse an einer bezahlten Lösung hast schicke mir eine PN oder schreib das ganze in der Job-Börse aus.
 
ok, nein danke für geld brauch ich keinen code. ich werds schon irgendwie hinbekommen, wenn ichs hab poste ichs einfach mal. trotzdem danke
 
Das sollte übrigens keinesfalls böse gemeint sein! Aber ich bin der Meinung, dass die Leute das hier Größtenteils genau so sehen.
Entweder man will was lernen und nimmt die Hilfe hier an oder man bezahlt eben dafür, wenn man es sich nicht selbst aneignen will/kann.
 
nehms dir nich übel, versteh ich schon. wollte hier auch keinesfalls irgendwie den eindruck hinterlassen dass ichs mir nicht aneignen will und die andren die arbeit machen lasse. dann habe ich mich falsch ausgedrückt. ich bin sehr interessiert es zu lernen, weil es mir auch spaß macht. nur wenn man manchmal einfach ewig an etwas sitzt und nich weiterkommt, kann ein funktionierender code auch der schlüssel sein es zu lernen. aber du hast recht, ich werds einfach weiter versuchen und bei fragen nehm ich eure hilfe natürlich immer gern an :-)
 
Zurück
Oben