Webdesign in Siegen

undefined index im Tutorial

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

undefined index im Tutorial

Beitragvon susi1600 am 06.10.2007, 19:22

Hallo,

bin ganz neu hier und stecke in den Anfängerschuhen. Habe heute mal das PHP-MYSQL Tutorial durchgearbeitet und es auf meine Bedürfnisse umgeschrieben. Allerdings bekomme ich nun beim Versuch, Daten zu modifizieren die Fehlermeldung "undefined index: id in line 49"

Hier mal der Code-Ausschnitt dazu:


Code: Alles auswählen
<?php
include('zugangsdaten.php');

mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

if (isset($_POST['edit']))
{
mysql_query("UPDATE kleider SET stoffart=".$_POST['stoffart'].", kleidbezeichnung=".$_POST['kleidbezeichnung'].", farbe=".$_POST['farbe'].", groesse=".$_POST['groesse'].", beschreibung=".$_POST['beschreibung'].", kaution=".$_POST['kaution'].", leihgebuehr=".$_POST['leihgebuehr']." WHERE id=".$_POST['id']."") OR            //Das ist Zeile 44 die(mysql_error());
}

if(isset($_POST['delete']))
{
mysql_query("DELETE FROM kleider WHERE id=".$_POST['id']."") OR       //Das ist Zeile 49
die(mysql_error());
}


Komischerweise meldet er das für Zeile 44 nicht.
Diese id ist wie im Tutorial beschrieben in der Tabelle angelegt worden und in phpMyAdmin wird die Spalte auch schön angzeigt.

Kann mir da vielleicht jemand weiterhelfen?
Wär ganz toll, vielen Dank schon mal im Voraus.

Grüße,
Susanne
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007

Beitragvon al3x am 06.10.2007, 19:40

Also ich kann auch keinen Fehler finden. Doch wenn die id in Zeile 44 noch vorhanden ist, könntest du sie ja vorher in eine Variable speichern.
al3x
Mitglied
 
Beiträge: 29
Registriert: 10.09.2007
Wohnort: Niederösterreich, Österreich

Beitragvon Basti am 06.10.2007, 20:25

Wird denn auch wirklich eine ID per POST übergeben?

Denn die Fehlermeldung sagt, dass eben diese Variable (bzw. das Element 'id' des POST-Arrays) nicht existiert.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1923
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Beitragvon Manuel am 06.10.2007, 20:38

Hallo Susanne und herzlich Willkommen! :)

Generell der Tipp: Lese zuerst alle Variablen aus und verwende diese dann erst in SQL-Befehlen. Somit kannst du vorher testen, was in diesen Variablen steht und musst diese zudem nicht mehrfach auslesen. Ein weiterer Vorteil: Der Quellcode wird übersichtlicher.

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 8930
Registriert: 10.12.2004
Wohnort: Asbach

Beitragvon susi1600 am 06.10.2007, 21:23

Hui - vielen Dank für die schnellen Antworten :-)

Also das mit als Variablen weiter oben definieren hab ich versucht - da findet er es dann auch gleich dort oben nicht mehr.

Bin mir nicht ganz schlüssig - ich denke, die id wird automatisch übergeben? Denn wie gesagt, wenn ich einen neuen Datensatz einfüge, dann steht in MyphpAdmin die id ja drin.

Wie müsste sie denn per POST übergeben werden?
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007

Beitragvon Basti am 06.10.2007, 21:57

Du hast ja in der Regel ein Formular, in dem du dann für deinen Fall z.B. auswählst, dass ein Datensatz entfernt werden soll.

In der MySQL Tabelle sind dann ja unterschiedliche Datensätze gespeichert (für jeden gibt es eine neue Zeile). Damit MySQL nun weiß, wo der Datensatz gelöscht werden soll, muss ein Wert angegeben werden, der auf die zu löschende Zeile zutrifft.
Da die ID ja für jeden Datensatz individuell ist, fügst du diese in den MySQL Query ein.

Das erfolgt dann eben wie du es vorhattest über eine Variable, in der die jeweilige ID steht.
Hast du denn vor dem Löschvorgang ein Formular, in dem es ein <input>-Feld gibt, das "id" heißt und die ID der aktuellen Zeile enthält?
Benutzeravatar
Basti
Moderator
 
Beiträge: 1923
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Beitragvon susi1600 am 07.10.2007, 17:14

im Code habe ich VOR dem löschvorgang kein Formular.
Habe zuerst den Code (siehe oben) und darunter ist dann das Formular mit dem input

Code: Alles auswählen
<input>
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007

Beitragvon susi1600 am 07.10.2007, 17:15

da ging was verloren....

<input>
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007

Beitragvon susi1600 am 07.10.2007, 17:15

.. geht offensichtlich nicht, den code so zu posten.

input type="hidden" name="id" value="'.$row['id'].'"
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007

Beitragvon Basti am 07.10.2007, 17:32

Du kannst auch alternativ zu einem Formular einen Link zum Entfernen von einzelnen Einträgen erstellen, das sieht dann so aus:

Code: Alles auswählen
bei der Erzeugung:
<a href="deine_datei.php?action=delete&id=".$row['id'].">Eintrag entfernen</a>

beim Entfernen:
if($_GET['action'] == 'delete' && isset($_GET['id']))
{
   mysql_query("DELETE FROM kleider WHERE id=".$_GET['id']."") OR die(mysql_error());
}


Für die Erzeugung des Links musst du natürlich zuvor eine MySQL Abfrage machen. Dort könntest du z.B. den Titel und die ID auswählen und dann mit einer while()-Schleife die entsprechenden Links erzeugen.

Wenn man dann auf einen der Links klickt, wird der jeweilige Eintrag aus der Tabelle entfernt.

Ich hoffe das hilft dir ein bisschen weiter ;)

PS: Wenn du Quelltext postest am besten immer einen Haken bei "HTML in diesem Beitrag deaktivieren" setzen. Dann "verschwinden" nämlich auch nicht gewisse Teile :)
Benutzeravatar
Basti
Moderator
 
Beiträge: 1923
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Beitragvon susi1600 am 07.10.2007, 18:06

Hi Basti,

glaub das wird hier eine schwere Geburt - aber danke für deine Geduld.
Hab jetzt eine MySQL Abfrage für die ID gemacht (wie du gesagt hast, mit der while-Schleife), aber auch hier gibt er sie nicht aus - weiterhin undefined index: id....

Ich werd mir das tutorial nochmal genau durchlesen, vllt. find ich ja doch irgendwo einen Fehler.
susi1600
Mitglied
 
Beiträge: 23
Registriert: 06.10.2007

Beitragvon Basti am 07.10.2007, 18:52

Falls du das Problem nicht selbst gelöst bekommen solltest poste einfach mal den gesamten Quelltext hier.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1923
Registriert: 15.06.2006
Wohnort: Rheinbreitbach


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: Basti und 2 Gäste