Formular um DB zu ändern

E

Ec16

Hallo,

habe mir von hier:
http://www.phpbox.de/php_tutorials/mysql1.php

Mal das Tutorial als Grundlage genommen und komme einfach nicht weiter.
Also Seite 1 ist klar und auch so gemacht.
Seite 2 habe ich wo anders her und funktioniert.
Seite 3 habe ich von dort und das funktioniert auch.
Seite 4 und Seite 5 bekomme ich einfach nicht hin.
Bei Seite 4 werden einfach keine Inhalte in den Feldern angezeigt und bei Seite 5 kann ich soviel die Url aufrufen wie ich will z.B. mit ID 1 und diese wird einfach nicht gelöscht.

Den Code habe ich so 1zu1 übernommen.
Funktioniert das überhaupt so?
 
Der code scheint mit register_globals = on zu arbeiten (absolut nicht zu empfehlen).
Folgende änderungen sollten das Problem lösen:
PHP:
if ($button==" OK ")
//ändern in
if( isset($_POST['button']) )


"DELETE FROM cds WHERE id='$id'"
//änder in
"DELETE FROM cds WHERE id= ".intval($_POST['id']);


Ich kann dir das Tutorial hier (Link zum Tutorial) sehr empfehlen.
Schaue dir auch einmal die PHP Funktion mysql_real_escape_string() an, die dich vor bösartigen Angriffen schützt. Zahlenwerte müssen bei MySQL, wie in vielen anderen Programmiersprachen auch, übrigens nicht in Anführungszeichen stehen:
SQL:
SELECT * FROM tabelle WHERE id = '1' //Anführungszeichen nicht nötig, lieber ohne:
SELECT * FROM tabelle WHERE id = 1

Gruß
timestamp
 
Mit deinem SQL bekomme ich ebenfalls eine Krise. So geschrieben findet man da nie Fehler.
Und bitte unterlasse das Thread-Pushen. Ansonsten muss ich Push-Posts löschen.

Nachtrag:
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
 
Schauen wir uns erstmal die Fehlermeldung an.
"Undefined variable" bedeutet dass die Variable nicht definiert ist.
PHP:
$query = "SELECT * FROM markers WHERE id='$id'";
Und in deinem Quelltext sehe ich auch nirgendwo eine Definition im Sinne von
PHP:
$id = wert;
Wenn die Variable aus einem Formular mit action="post" kommt, musst du, wie oben bereits erwähnt
PHP:
$_POST['id']
verwenden. Noch besser, da es sich um eine Zahl handelt und wir MySQL-Injections vermeiden wollen:
PHP:
intval($_POST['id'])
//FÜr Strings (Zeichenketten) in Queries, nutze
mysql_real_escape_string($_POST['dein_formular_feld'])

Wenn du die erste Fehlermeldung behebst, geht die zweite gleich mit weg.
 
Also noch besser wie timestamp kann man es doch nicht erklären, oder****?

Die Variable "$id" welche du in deinem MySQL-Query verwendest ist nirgendwo gestzt. Warum sie nicht gestzt ist hat er dir auch schon erklärt: "register_globals" wird nicht mehr empfohlen da ein zu großes sicherheitsrisiko, deshalb ist es auch meist schon deaktiviert in der php.ini.

auf Frmulardaten welche mit der Methode POST versendet wurden, hast du per Superglobalen $_POST zugriff.
Das selbe gilt auch wenn es per GET gesendet wird, nur ist es da $_GET. Dieses sind Arrays und der Schlüssel des Arrays ist der Name des input-feldes:

PHP:
<form method="post" action="">
   <input type="text" name="testfeld" value="ichbineintest" />
</form>

echo $_POST['testfeld'];

Wenn du nun die ID per Formular übergibst, dann steht die ID in:

PHP:
$_POST['id'];

// also wird vor deinem Query:
$id = intval($_POST['id']);

wird sie per URL (Browseradresszeile) übergeben dann ist es in der GET-Superglobalen.

Hier fehlen anscheinend die Grundlagen. Ich habe jetzt schon mehrere Threads von dir beobachtet, kauf dir am besten ein Buch oder leih dir eins aus der Bücherei deines Vertrauen aus. Dort hast du mehr erfolgschancen.
 
Du wertest dein if falsch aus.
Du hast
PHP:
//DEIN CODE IM MOMENT:
//Prüfen ob das Formular gesendet wurde
if( isset($_POST['button']) )
{
    //Mache etwas wenn das Formular gesendet wurde
    ...
}
else
{
    //Diesen Code wenn das formular nicht gesendet wurde
    //Da das Formular nicht gesendet wurde, gibt es hier kein $_POST['id']. $_POST
    $id = intval($_POST['id']);
    $query = "SELECT * FROM markers WHERE id=$id";
    ...
}

Maniac hat es treffend formuliert
Hier fehlen anscheinend die Grundlagen. Ich habe jetzt schon mehrere Threads von dir beobachtet, kauf dir am besten ein Buch oder leih dir eins aus der Bücherei deines Vertrauen aus. Dort hast du mehr erfolgschancen.

Einfach kopieren ist ganz schlecht um etwas zu lernen. Da müssen Grundlagen her. Und Grundlagen lernst du nicht indem du in einem fertigen Code herum turnst.
 
Verstehe uns nicht falsch, es ist nicht so dass wir dir nicht helfen möchten.
Du fragst hier aber praktisch danach, wie du eine Kurzgeschichte in Englisch schreibst, ohne aber dass du die englische Grundgrammatik kannst. Natürlich könnten wir dir jetzt die Geschichte schreiben, aber damit würdest du für jede Geschichte die du noch schreiben möchtest, immer wieder einen brauchen der sie für dich schreibt. Lernst du aber einmal die Grammatik, kannst du so viele Geschichten schreiben wie du willst.
Ein gutes Tutorial für PHP findest du z.b. hier: Schattenbaum PHP Tutorial

Da gibt es auch eine spezielles Kapitel für Formulare: Schattenbaum PHP Tutorial | Formular

Sehr nett und einfach erklärt.
 
Zurück