Eintragen, editieren & löschen funktioniert nicht

R3DD3VIL

Mitglied
Hallöchen zusammen,

irgendwie hab ich hier ein kleines Problem. Und zwar lässt sich in meinem Script weder ein neuer User erstellen, noch editieren oder löschen. Rechte für die Dateien habe ich gesetzt und ich kapier gerade gar nichts mehr warum das nicht funktioniert. Angezeigt wird sowohl die Eintragen-Seite als auch die Adminseite. Aber er übernimmt die Daten nicht in die DB bzw lässt sich die Seite "Edit" oder "löschen" gar nicht erst aufrufen.
Über Hilfe wo da der Wurm drin steckt, wäre ich sehr sehr dankbar.

Hier mal die Codes der Dateien.
eintragen.php
PHP:
<html>
<body>
<?
if ($submit) {
$db = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("xxx",$db);
$sql = "INSERT INTO Pat_ListePatienten (pid,name,vorname,gebdat,dia_begin,albis_id,current_dialyse) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id','$current_dialyse')";
$result = mysql_query($sql,$db);
echo "Ihr Daten wurden abgeschickt! Vielen Dank!<br><br>";
}
else {
?>

<form method="post" action="<? echo $PHP_SELF ?>">
<table border="0" align="center">
<tr>
<td>Patienten-Kennzahl</td>
<td><input type="text" name="pid" value="<? echo $pid ?>" size="50"></td>
</tr><tr>
<td>Name</td>
<td><input type="text" name="name" value="<? echo $name ?>" size="50"></td>
</tr><tr>
<td>Vorname</td>
<td><input type="text" name="vorname" value="<? echo $vorname ?>" size="50"></td>
</tr><tr>
<td>Geburtsdatum</td>
<td><input type="text" name="gebdat" value="<? echo $gebdat ?>" size="50"></td>
</tr><tr>
<td>Dialysebeginn</td>
<td><input type="text" name="dia_begin" value="<? echo $dia_begin ?>" size="50"></td>
</tr><tr>
<td>Patient zur Zeit in Dialyse</td>
<td><input type="checkbox" name="current_dialyse" value="<? echo $current_dialyse ?>"></td>
</tr><tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>

und hier die admin.php
PHP:
<html><body><div align="center">
<h1>Patienten bearbeiten</h1>
<?
//Verbindung herstellen
$db = mysql_connect("localhost","xxx","xxx");
mysql_select_db("xxx",$db);

// Daten &auml;ndern
if ($edit) {
if ($submit) {
$sql = "UPDATE Pat_ListePatienten SET pid='$pid', name='$name', vorname='$vorname', gebdat='$gedbat', dia_begin='$dia_begin', albis_id='$albis_id', current_dialyse='$current_dialyse' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten f&uuml;r die ID ".$edit." wurden ge&auml;ndert";
}
else {
$sql = "SELECT * FROM Pat_ListePatienten WHERE id=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);
?>

<form method="post" action="<? echo $PHP_SELF ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center">
<tr><td>Patienten-Kennzahl</td><td>
<input type="text" name="pid" value="<? echo $data["pid"] ?>" size="50">
</td></tr><tr><td>Name</td><td>
<input type="text" name="name" value="<? echo $data["name"] ?>" size="50">
</td></tr><tr><td>Vorname</td><td>
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="50">
</td></tr><tr><td>Geburtsdatum</td><td>
<input type="text" name="gebdat" value="<? echo $data["gebdat"] ?>" size="50">
</td></tr><tr><td>Dialysebeginn</td><td>
<input type="text" name="dia_begin" value="<? echo $data["dia_begin"] ?>" size="50">
</td></tr><tr><td>Albis-Nummer</td><td>
<input type="text" name="albis_id" value="<? echo $data["albis_id"] ?>" size="50">
</td></tr><tr><td>Zur Zeit in Diylase</td><td>
<input type="checkbox" name="current_dialyse" value="<? echo $data["curent_dialyse"] ?>">
</td></tr><tr><td>&nbsp;</td><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr></table>
</form>
<?
}
}

//Daten l&ouml;schen
if($clear) mysql_query("DELETE FROM Pat_ListePatienten WHERE id=$clear",$db);

//Daten auslesen
$result = mysql_query("SELECT * FROM Pat_ListePatienten",$db);
?>

<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>Patienten-Kennzahl</b></td>
<td><b>Nachname</b></td>
<td><b>Vorname</b></td>
<td><b>Geburtsdatum</b></td>
<td><b>Dialysebeginn</b></td>
<td><b>Albis-ID</b></td>
<td><b>Patient in Dialyse</b></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[pid]; ?></td>
<td><? echo $daten[name]; ?></td>
<td><? echo $daten[vorname]; ?></td>
<td><? echo $daten[gebdat]; ?></td>
<td><? echo $daten[dia_begin]; ?></td>
<td><? echo $daten[albis_id]; ?></td>
<td><? echo $daten[current_dialyse]; ?></td>
<td><a href="<? echo ''.$PHP_SELF.'?edit='.$daten[id].'' ?>">bearbeiten</a></td>
<td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[id].'' ?>">l&ouml;schen</a></td>
</tr>
<? } ?>
</table></div></body></html>

Für eventuelle Hilfe bedanke ich mich schon mal im voraus bei euch.
MFG
R3DD3VIL :confused:
 
Zuletzt bearbeitet:
Wie meinst du das mit "lässt sich die Seite "Edit" oder "löschen" gar nicht erst aufrufen."?
Kommt ein Fehler wie 404, 403 oder 500? Das heißt dann das irgendetwas mit dem Server nicht stimmt. Oder funktioniert der Link nicht? Mich wundert sowieso, dass du da so viele Punkte und doppelte Anführungszeichen drin hast (die eigentlich unnötig sind), versuch mal die vereinfachte Variante:
PHP:
<a href="?edit=<? echo $daten[id]; ?>">bearbeiten</a>

Oder beschreib noch mal, was du nicht aufrufen kannst.
 
Also sollte vielleicht noch dazu sagen, dass Ich im moment inder Lernphase von php bin, und mir die ganze Sache mit Hilfe eines Tutorials zusammengebastelt habe.
Aufrufen ist vielleicht falsch beschrieben. Wenn Ich die Links bearbeiten oder löschen klicke, zeigt er mir im Browser zwar den richtigen Pfad (z.b. http://www.url.de/admin.php?edit=10), aber ausführen tut er Ihn nicht.
So auch beim eintragen. Nach klick "eintragen", verschwinden die Daten zwar aus demFormular, aber in der DB stehen Sie nicht drin.

Und ich weiß net warum ...

MFG
R3DD3VIL
 
Ah, ich glaube ich weiß woran dein Problem liegt.

Du hast wahrscheinlich Tutorials für eine alte PHP-Version (3 oder kleiner) benutzt, aber dein Server hat 4 oder 5. Ab PHP4 ist register_globals standardmäßig ausgeschaltet, also werden per GET (also in der URL) übergebene Daten nicht mehr automatisch in eine Variable gepackt, die den Namen des GET-Wertes hat. Noch mal auf Deutsch:
PHP3: admin.php?edit=10 -> $edit = 10
PHP4: admin.php?edit=10 -> $_GET['edit'] = 10

Also ersetze mal in deinem admin.php Code diese Sachen mit den neueren Befehlen:
$edit -> $_GET['edit']
$submit -> $_REQUEST['submit']
Vielleicht noch mehr, aber das war alles was ich gerade gefunden habe. Hier die offizielle PHP.net Erklärung:
http://www.php.net/register_globals
http://www.php.net/manual/de/language.variables.predefined.php
 
Zuletzt bearbeitet:
Vielleicht hast du register_globals auf off (wie es auch sein sollte) und kannst darum mit der jetztigen Version nicht abfragen, ob der Submitbutton gedrückt wurde.

Du:
if($submit)

Wie ich es machen würde (eine von vielen Lösungen ;))
if(isset($_POST['submit']))

Versuch das mal umzustellen.

Alternativ helfen auch gut platzierte Echos... Platziere einige Testausgaben in deinen If-Abfragen um zu schauen, ob das Script überhaupt dahin vorstösst.

Gruss De Igäl

Edit: Zu langsam :)
 
So erstmal Danke für eure Hilfe.
Jetzt bin ich schonmal den Schritt weiter. Hab das geändert sowie multimolti vorgeschlagen hat. Und es funktioniert. Allerdings immer noch nicht zu 100%.
Und zwar sagt er mir jetzt das er die Aktion ausgeführt hat, sprich Daten wurden hinzugefügt oder geändert, aber die Daten selber was ich eingegeben habe in den Eingabefeldern übernimmt er nicht in die Datenbank.

Beim eintragen macht er mir z.B. einen Leeren Eintrag, beim Ändern sagt er es wurden die Daten geändert, aber passiert ist es nicht.
Und beim löschen geht gar nichts. Muss beim löschen $_GET['clear'] oder $_REQUEST['clear'] rein ? Funktioniert nämlich beides nicht?

Kennt jemand von euch eventuell ein Tut wo aktuell ist?

Immer Mist wenn bei einem Tut net steht mit welcher Version oder ein Datum dabei ist.

MFG
R3DD3VIL
 
Ich hab mal vor zwei Wochen ein Tutorial geschrieben. Allerdings haben das die Admins noch net geprüft und frei geschaltet. Der Thread, der mich zum Schreiben dieses Tuts angeregt hat findest du hier:

http://www.tutorials.de/forum/php/2...laden-und-erweitern-und-ueberschreiben-2.html

Da ist ein grosser Teil des späteren Tuts bereits drin.

$_REQUEST sucht im $_GET und im $_POST - Array nach dem angeforderten Datensatz. Wenn du aber weisst, dass dein Datensatz im $_GET - Array liegt, greif auch über $_GET darauf zu. Analog mit $_POST
 
So nun bin ich doch ein ganzes Stück weiter in der Sache.
Die eintragen.php funktioniert einwandfrei inzwischen. Danke für die Tips. Hat mit doch jede Menge gebracht.

Auch an der admin.php hat sich nun einiges getan. Das löschen der Datensätze funktioniert auch super nun. Auch beim editieren hat sich was getan. Und zwar wenn ich auf editieren klicke, werden mir die Eingabefelder mit den Daten zum ändern inzwischenangezeigt. Aber nun kommt der Fehler wo noch über ist. Wenn ich nun auf editieren klicke, wird nicht der Eintrag geändert den ich möchte, sondern es wird mir der Gesamte Eintrag der DB geändert. Und zwar als ob ich gar keine Daten eingegeben hätte.
Ich find hier bei bestem Willen kein Fehler mehr warum der nicht die Daten wieder übernimmt sondern leer lässt, als wären nie Einträge gewesen.
Über Hilfe wäre ich sehr dankbar. Hier nochmal die admin.php

PHP:
<html><body><div align="center">
<h1>Patienten bearbeiten</h1>
<?
//Verbindung herstellen
$db = mysql_connect("localhost","xxx","xxx");
mysql_select_db("xxx",$db);

// Variablen aus POST/GET extrahieren 
$clear = $_POST['clear'];
$edit= $_POST['edit'];
$submit= $_POST['submit'];

// wenn $clear und $edit leer sind, dann wurde per GET uebergeben 
if (empty($clear) )
  $clear = $_GET['clear'];

if (empty($edit) )
  $edit= $_GET['edit']; 

// Daten &auml;ndern
if (isset($edit)) {
if (isset($submit)) { 
$sql = "UPDATE Pat_ListePatienten SET pid='$pid', name='$name', vorname='$vorname', gebdat='$gebdat', dia_begin='$dia_begin', albis_id='$albis_id', current_dialyse='$current_dialyse' WHERE id=$edit";
$result = mysql_query($sql,$db);
echo "Daten f&uuml;r die ID ".$edit." wurden ge&auml;ndert";
}
else {
$sql = "SELECT * FROM Pat_ListePatienten WHERE id=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);
?>

<form method="post" action="<? echo $PHP_SELF ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center">
<tr><td>Patienten-Kennzahl</td><td>
<input type="text" name="pid" value="<? echo $data["pid"] ?>" size="50">
</td></tr><tr><td>Name</td><td>
<input type="text" name="name" value="<? echo $data["name"] ?>" size="50">
</td></tr><tr><td>Vorname</td><td>
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="50">
</td></tr><tr><td>Geburtsdatum</td><td>
<input type="text" name="gebdat" value="<? echo $data["gebdat"] ?>" size="50">
</td></tr><tr><td>Dialysebeginn</td><td>
<input type="text" name="dia_begin" value="<? echo $data["dia_begin"] ?>" size="50">
</td></tr><tr><td>Albis-Nummer</td><td>
<input type="text" name="albis_id" value="<? echo $data["albis_id"] ?>" size="50">
</td></tr><tr><td>Zur Zeit in Diylase</td><td>
<input type="checkbox" name="current_dialyse" value="<? echo $data["curent_dialyse"] ?>">
</td></tr><tr><td>&nbsp;</td><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr></table>
</form>
<?
}
}

//Daten l&ouml;schen
if($_GET['clear']) mysql_query("DELETE FROM Pat_ListePatienten WHERE id=$clear",$db);

//Daten auslesen
$result = mysql_query("SELECT * FROM Pat_ListePatienten",$db);
?>

<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>Patienten-Kennzahl</b></td>
<td><b>Nachname</b></td>
<td><b>Vorname</b></td>
<td><b>Geburtsdatum</b></td>
<td><b>Dialysebeginn</b></td>
<td><b>Albis-ID</b></td>
<td><b>Patient in Dialyse</b></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[pid]; ?></td>
<td><? echo $daten[name]; ?></td>
<td><? echo $daten[vorname]; ?></td>
<td><? echo $daten[gebdat]; ?></td>
<td><? echo $daten[dia_begin]; ?></td>
<td><? echo $daten[albis_id]; ?></td>
<td><? echo $daten[current_dialyse]; ?></td>
<td><a href="<? echo ''.$PHP_SELF.'?edit='.$daten[id].'' ?>">bearbeiten</a></td>
<td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[id].'' ?>">l&ouml;schen</a></td>
</tr>
<? } ?>
</table></div></body></html>

Ansonsten wünsch ich jetzt erstmal schönes WE allen.
MFG
R3DD3VIL
 
Da register_globals vermutlich immernoch auf off ist, musst auch du hier über das $_POST-Array auf die Formulardaten zugreifen:

PHP:
$sql = "UPDATE users SET pid='".$_POST['pid']."', name='".$_POST['name']."', vorname='".$_POST['vorname']."', gebdat='".$_POST['gebdat']."', dia_begin='".$_POST['dia_begin']."', albis_id='".$_POST['albis_id']"', current_dialyse='".$_POST['current_dialyse']."' WHERE id=".$edit;

Gruss
De Igäl
 
Moinsen zusammen,

also irgendwie bin ich jetzt total bekloppt, oder es steckt der Fehler im Detail und ich find Ihn nicht. Ich hab jetzt die $sql zeile geändert sowie Igäl es geschrieben hat, und wenn ich nun die Seite hochade und Aufrufe, kommt gar nichts mehr. Bekomme direkt eine weiße Seite.
Es ist eigentlich logisch wenn man genau drüber nachdenkt, sowie es Igäl geschrieben hat, aber warum bitte bekomme ich jetzt eine weiße Seite ?
Hier nochmal mein momentaner Code der admin.php

Thx für eure Hilfe
MFG
R3DD3VIL

PHP:
<html><body><div align="center">
<h1>Patienten bearbeiten</h1>
<?
//Verbindung herstellen
$db = mysql_connect("localhost","xxx","xxx");
mysql_select_db("xxx",$db);

// Variablen aus POST/GET extrahieren 
$clear = $_POST['clear'];
$edit= $_POST['edit'];
$submit= $_POST['submit'];

// wenn $clear und $edit leer sind, dann wurde per GET uebergeben 
if (empty($clear) )
  $clear = $_GET['clear'];

if (empty($edit) )
  $edit= $_GET['edit']; 

// Daten &auml;ndern
if (isset($edit)) {
if (isset($submit)) { 
$sql = "UPDATE Pat_ListePatienten SET pid='".$_POST['pid']."', name='".$_POST['name']."', vorname='".$_POST['vorname']."', gebdat='".$_POST['gebdat']."', dia_begin='".$_POST['dia_begin']."', albis_id='".$_POST['albis_id']"', current_dialyse='".$_POST['current_dialyse']."' WHERE id=".$edit;
$result = mysql_query($sql,$db);
echo "Daten f&uuml;r die ID ".$edit." wurden ge&auml;ndert";
}
else {
$sql = "SELECT * FROM Pat_ListePatienten WHERE id=$edit";
$result = mysql_query($sql,$db); 
$data = mysql_fetch_array($result);
?>

<form method="post" action="<? echo $PHP_SELF ?>">
<input type=hidden name="edit" value="<? echo $data["id"] ?>">
<table border="0" align="center">
<tr><td>Patienten-Kennzahl</td><td>
<input type="text" name="pid" value="<? echo $data["pid"] ?>" size="50">
</td></tr><tr><td>Name</td><td>
<input type="text" name="name" value="<? echo $data["name"] ?>" size="50">
</td></tr><tr><td>Vorname</td><td>
<input type="text" name="vorname" value="<? echo $data["vorname"] ?>" size="50">
</td></tr><tr><td>Geburtsdatum</td><td>
<input type="text" name="gebdat" value="<? echo $data["gebdat"] ?>" size="50">
</td></tr><tr><td>Dialysebeginn</td><td>
<input type="text" name="dia_begin" value="<? echo $data["dia_begin"] ?>" size="50">
</td></tr><tr><td>Albis-Nummer</td><td>
<input type="text" name="albis_id" value="<? echo $data["albis_id"] ?>" size="50">
</td></tr><tr><td>Zur Zeit in Diylase</td><td>
<input type="checkbox" name="current_dialyse" value="<? echo $data["curent_dialyse"] ?>">
</td></tr><tr><td>&nbsp;</td><td>
<input type="submit" name="submit" value="&Auml;ndern">
</td></tr></table>
</form>
<?
}
}

//Daten l&ouml;schen
if($_GET['clear']) mysql_query("DELETE FROM Pat_ListePatienten WHERE id=$clear",$db);

//Daten auslesen
$result = mysql_query("SELECT * FROM Pat_ListePatienten",$db);
?>

<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>Patienten-Kennzahl</b></td>
<td><b>Nachname</b></td>
<td><b>Vorname</b></td>
<td><b>Geburtsdatum</b></td>
<td><b>Dialysebeginn</b></td>
<td><b>Albis-ID</b></td>
<td><b>Patient in Dialyse</b></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[pid]; ?></td>
<td><? echo $daten[name]; ?></td>
<td><? echo $daten[vorname]; ?></td>
<td><? echo $daten[gebdat]; ?></td>
<td><? echo $daten[dia_begin]; ?></td>
<td><? echo $daten[albis_id]; ?></td>
<td><? echo $daten[current_dialyse]; ?></td>
<td><a href="<? echo ''.$PHP_SELF.'?edit='.$daten[id].'' ?>">bearbeiten</a></td>
<td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[id].'' ?>">l&ouml;schen</a></td>
</tr>
<? } ?>
</table></div></body></html>
 
Zuletzt bearbeitet:
Zurück