Ein- Ausgabe Formular

Das sieht doch schon gut aus!
Also das mit der Sortierung nach dem Datum ist einfach: Erweiter Dein select um ein "order by ... asc/desc" wobei ... für die Spalte mit dem Datum steht und Du asc ODER desc wählen musst (ich glaube asc für absteigend und desc für aufsteigend).

Du kannst Deine Liste ja einmal in eine 2. Datei kopieren. Dann kannst Du die eine zur Anzeige und die andere für die Änderungen nutzen.
Das mit dem editieren ist auch nicht so schwer. Haben Deine Daten einen eindeutigen Identifikator (also vielleicht eine ID oder so)? Leg in der Tabelle noch eine Spalte an, wo Du einen Link reinschreibst: <a href='Dateiname.php?index=Nummer des Indexes'>edit</a> Den Dateinamen kannst Du ja frei wählen und in Deinem select würdest Du den Index ja mitsuchen und hier nur übergeben.
Dann gestaltest Du ein Formular, welches in ein Form eingebettet ist, in dem die Daten geändert werden sollen (z. B.: <form action='Dateiname.php?index=Nummer des Indexes&upd=0').
In der Datei mit dem Formular suchst Du nach allen Daten für diese ID und schreibst die Werte in das Formular (z. B.: <input type='text' name='titel' size='40' value='".$Titel."'>;).
Und unten drunter kommt ein Submitbutton zum speichern.
Der ruft die im Form benannte Seite auf, übergibt die ID und die Variable upd=0 und alle daten.
In der selben Datei wie das Formular steht fragst Du ganz am Anfang ab, ob eine Variable upd übergeben wurde if(isset($_GET["upd"])). Wenn ja, dann speicherst Du alle Daten via insert Statement für die übergebene ID in die Tabelle in der DB.

Soweit verständlich? :confused:

redlama
 
As mit der Edit-funktion hab ich noch nicht ganz verstande. Also die zusatzlich Spalte mit dem "edit-Link" habe ich schon erstellt. Klappt auch soweit, dass ich auf der nächsten Seite nur den Datensatz habe, der editiert werden soll. Steht auch in Input Feldern und ich kann es ändern. Aber wie übergebe ich nun die Änderung? Das mit dem "udp" habe ich nicht verstanden. Und wie ich die Daten in der Datenbank überschreibe mit "insert" weiß ich auch nicht so recht. Sprich es fehlt mir die letzte Seite!

Hier mal meine Seite, wo die Daten geändert werden und wo ich dann nicht weiterkomme! (<form action.......)
PHP:
<?php 
	 $i;
	 mySql_PConnect("localhost", "xxx", "xxx");
	 ("Die Datenbank existiert nicht");
	 $query = "select * from veranstaltung order by datum asc" ;
	 $result = mysql_db_query( "xxx", $query);
 
	 if (mysql_Num_Rows($result) > 0)
	 {
	 $Meldung= "";
	 }
	 else
	 {
	 $Meldung= "Fehler bei der Abfrage oder keine Daten";
	 }
	 if ($Meldung != "")
	 {
	 printf ("%s", $Meldung);
	 }
	 else
	 {
	 printf ( "<div align=center>\n");
	 printf ( "<table border=1 >\n");
	 printf ( "<tr>\n");
		printf ( "<th>Datum</th>\n");
		printf ( "<th>Grund</th>\n");
		printf ( "<th>Zeit</th>\n");
		printf ( "<th>Treffen</th>\n");
	 printf ( "</tr>");
	 $i = $HTTP_GET_VARS["id"];
	 $datum = mysql_Result($result, $i, "datum");
	 $farbe_datum = mysql_Result($result, $i, "farbe_datum");
	 $grund = mysql_Result($result, $i, "grund");
	 $farbe_grund = mysql_Result($result, $i, "farbe_grund");
	 $zeit = mysql_Result($result, $i, "zeit");
	 $farbe_zeit = mysql_Result($result, $i, "farbe_zeit");
	 $treffen = mysql_Result($result, $i, "treffen");
	 $farbe_treffen = mysql_Result($result, $i, "farbe_treffen");
		printf ("<form action=\"veran4.php?id=$i&upd=0'\">");
		printf ( "<tr>\n");
		 printf ("<td><input type=\"text\" value=\"$datum\" name=\"datum\"></td><br>");
		 printf ("<td><input type=\"text\" value=\"$grund\" name=\"grund\"></td><br>");
		 printf ("<td><input type=\"text\" value=\"$zeit\" name=\"zeit\"></td><br>");
		 printf ("<td><input type=\"text\" value=\"$treffen\" name=\"treffen\"></td><br>");
		printf ("</tr>\n");
	 printf ("</table>\n<br>");
	 printf ("<input type=submit value=\"Senden\">");
	 }
	 ?>

Aber sonst waren deine Tipps echt super

rlehrke
 
Ach ja noch eine kleine Frage! Beim ordnen nach dem Datum sortiert er nur nach dem Tag, wegen dem Punkt dahinter (12.12.2004 kommt z.B vor 15.11.2004)

Hast du da noch eine Idee? Ansonsten mach ich halt noch eine Spalte wo ich das Datum andersherum eingebe (z.B. 11.12.2004 ---> 20041211)

rlehrke
 
Ich hab noch ein viel größers Problem. Die ID übergabe klappt irgentwie nicht richtig. Kannst ja mal testen: http://stulle.st.ohost.de/veran1.php Wenn man dort jetzt auf edit klickt, übergibt er zwar die richtige ID aber er gibt den falschen Datensatz aus! Ich würde sagen es muß am Ausgabe-Script liegen, aber ich weiß nicht wo. Viellecht fällt dir ja was auf:

PHP:
<?php 

$i="0";

mySql_PConnect("localhost", "xxx", "xxx");

("Die Datenbank existiert nicht");

$query = "select * from veranstaltung" ;

$result = mysql_db_query( "xxx", $query);



if (mysql_Num_Rows($result) > 0)

{

$Meldung= "";

}

else

{

$Meldung= "Fehler bei der Abfrage oder keine Daten";

}

if ($Meldung != "")

{

printf ("%s", $Meldung);

}

else

{

printf ( "<div align=center>\n");

printf ( "<table border=1 >\n");

printf ( "<tr>\n");

printf ( "<th>Datum</th>\n");

printf ( "<th>Grund</th>\n");

printf ( "<th>Zeit</th>\n");

printf ( "<th>Treffen</th>\n");

printf ( "</tr>");

$i = $HTTP_GET_VARS["id"];

printf ("$i");

$datum = mysql_Result($result, $i, "datum");

$farbe_datum = mysql_Result($result, $i, "farbe_datum");

$grund = mysql_Result($result, $i, "grund");

$farbe_grund = mysql_Result($result, $i, "farbe_grund");

$zeit = mysql_Result($result, $i, "zeit");

$farbe_zeit = mysql_Result($result, $i, "farbe_zeit");

$treffen = mysql_Result($result, $i, "treffen");

$farbe_treffen = mysql_Result($result, $i, "farbe_treffen");

printf ("<form action=\"veran4.php?id=$i&upd=0'\">");

printf ( "<tr>\n");

printf ("<td><input type=\"text\" value=\"$datum\" name=\"datum\"></td><br>");

printf ("<td><input type=\"text\" value=\"$grund\" name=\"grund\"></td><br>");

printf ("<td><input type=\"text\" value=\"$zeit\" name=\"zeit\"></td><br>");

printf ("<td><input type=\"text\" value=\"$treffen\" name=\"treffen\"></td><br>");

printf ("</tr>\n");

printf ("</table>\n<br>");

printf ("<input type=submit value=\"Senden\">");

}

?>

rlehrke
 
rlehrke hat gesagt.:
Hast du da noch eine Idee? Ansonsten mach ich halt noch eine Spalte wo ich das Datum andersherum eingebe (z.B. 11.12.2004 ---> 20041211)
Ich würde das Datum nicht als 11.12.2004 speichern, sondern als "Date" (so heißt der Datentyp für die Datenbank), das Format sieht so aus: 2004-12-11
rlehrke hat gesagt.:
Das mit dem "udp" habe ich nicht verstanden.
Du änderst die Daten in der veran3.php dann müsste im <form> das stehen: action=\"veran3.php?id=$i&upd=0\". Und am Anfang von veran3.php muss dann folgendes im Code stehen:
PHP:
if(isset($_GET["upd"])) 
{
  /*Und hier die Prozedur mit MySQL, aber nicht mit einem insert sondern mit einem update()*/
  header("Location: veran.php"); /*Das verweist auf die vean.php zurück, damit Du wieder zurück zur Liste kommst, nach dem update*/
  exit;
}
Und was die Übergabe der ID betrifft, kommt die aus der Datenbank? Oder wo bekommst Du die her?

redlama
 
Für die ID, habe ich eine Spalte in der Datenbank!

Feld TypAttributeNullStandardExtraAktion
id int(11) Nein auto_increment
datum date Nein 0000-00-00
farbe_datum text Nein
grund text Nein
farbe_grund text Nein
zeit text Nein
farbe_zeit text Nein
treffen text Nein
farbe_treffen text Nein :

Ich hab mal alle Datensätze gelöscht und wenn ich nun auf edit klicke bekomme ich immer eine MYSQL fehlermeldung!

Kannst du dir hier anschauen! http://stulle.st.ohost.de/veran1.php

Quellcode der veran3.php
PHP:
<?php 
 
$i="0";
 
mySql_PConnect("localhost", "xxx", "xxx");
 
("Die Datenbank existiert nicht");
 
$query = "select * from veranstaltung" ;
 
$result = mysql_db_query( "xxx", $query);
 
 
 
if (mysql_Num_Rows($result) > 0)
 
{
 
$Meldung= "";
 
}
 
else
 
{
 
$Meldung= "Fehler bei der Abfrage oder keine Daten";
 
}
 
if ($Meldung != "")
 
{
 
printf ("%s", $Meldung);
 
}
 
else
 
{
 
printf ( "<div align=center>\n");
 
printf ( "<table border=1 >\n");
 
printf ( "<tr>\n");
 
printf ( "<th>Datum</th>\n");
 
printf ( "<th>Grund</th>\n");
 
printf ( "<th>Zeit</th>\n");
 
printf ( "<th>Treffen</th>\n");
 
printf ( "</tr>");
 
$i = $HTTP_GET_VARS["id"];
 
printf ("$i");
 
$datum = mysql_Result($result, $i, "datum");
 
$farbe_datum = mysql_Result($result, $i, "farbe_datum");
 
$grund = mysql_Result($result, $i, "grund");
 
$farbe_grund = mysql_Result($result, $i, "farbe_grund");
 
$zeit = mysql_Result($result, $i, "zeit");
 
$farbe_zeit = mysql_Result($result, $i, "farbe_zeit");
 
$treffen = mysql_Result($result, $i, "treffen");
 
$farbe_treffen = mysql_Result($result, $i, "farbe_treffen");
 
printf ("<form action=\"veran4.php\" method=\"post\">");
 
printf ( "<tr>\n");
 
printf ("<td><input type=\"text\" value=\"$datum\" name=\"datum\"></td><br>");
 
printf ("<td><input type=\"text\" value=\"$grund\" name=\"grund\"></td><br>");
 
printf ("<td><input type=\"text\" value=\"$zeit\" name=\"zeit\"></td><br>");
 
printf ("<td><input type=\"text\" value=\"$treffen\" name=\"treffen\"></td><br>");
 
printf ("</tr>\n");
 
printf ("</table>\n<br>");
 
printf ("<input type=submit value=\"Senden\">");
 
}
 
?>

Hastb du eine Idee, wo die Fehlremeldung herkommt?

rlehrke
 
Hi!

Das $i=0 kann raus! Setz mal statt dessen das
PHP:
$i = $HTTP_GET_VARS["id"];
nach oben.
Und dann solltest Du Deine select erweitern:
PHP:
query = "select * from veranstaltung where id='".$i"'";
Hilft das was?

redlama
 
Klapt auch nicht, jetzt findet er die Daten nicht mehr. Ausserdem konnte ich die Sachen nicht so eingeben, wie du es geschrieben hast. id='".$i"'"; <-- nimmt er nicht!

Ich hab die Spalte ID in der Datenbank in Index umbenannt

PHP:
<?php 
 
$i = $HTTP_GET_VARS["index"];
 
mySql_PConnect("localhost", "xxx", "xxx");
 
("Die Datenbank existiert nicht");
 
$query = "select * from veranstaltung where index=\"$i\"";

Folgende Fehlermeldung erscheint:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/stulle/veran3.php on line 13
Fehler bei der Abfrage oder keine Daten

WAs nun?
 
Zuletzt bearbeitet:
Hm, ...
Na ja, dann setz meine Vorschläge wieder zurück, wie's vorher war.
Ganz ehrlich, ich würde die Datenbankabfragen auch über Klassen machen.
Aber ich weiß nicht wie sehr Du Dich damit anfreunden könntest, Klassen zu programmieren, ...
Ich habe meine Lösung (wo der Link von mir hingeht) über Klassen programmiert, da brauche ich nur einmal die Klasse mit den Datenbankzugriffen erstellen und greife dann nur noch auf diese Klasse zu.
Also wie sieht's aus, Lust zum umstellen oder doch lieber weiterversuchen?

redlama :suspekt:
 
Zurück