HTML PHP MySQL Webanwendung
Hallo Leute,
Ich möchte gerne Meine Datenbank auf einer webseite darstellen.
Dabei sollte diese Als normale Tabelle dargestellt sein. Sie sollte auch Editier bar sein und auch einträge löschen können.
Was ich habe:
Ich habe die Datenbank.
Ich habe diese als CSV exportiert und mit php als Tabelle dargestellt.
So was noch fehlt sind die Buttons die einmal die Zeile Löscht( auch in der datenbank / SQL code kein problem aber der HTML/php code ) und der Butten der diese zeile löscht( auch wie der andere Butten in der DB / SQL wie gesagt nicht das problem ) Jetzt stellt sich die Frage wie ich dem SQL statmant den Namen der zeile übergebe und oder wie ich die geänderten Html code der datenbank übergebe/ php übergeben.
Ich poste erstmal mein Code der Teilweise nicht funktioniert
Versuch Mysql hinzuzufügen :
( die html seite erspare ich mal
Aus CSV zu Html:
Ich hoffe einer kann mir Helfen
Danke
Ich möchte gerne Meine Datenbank auf einer webseite darstellen.
Dabei sollte diese Als normale Tabelle dargestellt sein. Sie sollte auch Editier bar sein und auch einträge löschen können.
Was ich habe:
Ich habe die Datenbank.
Ich habe diese als CSV exportiert und mit php als Tabelle dargestellt.
So was noch fehlt sind die Buttons die einmal die Zeile Löscht( auch in der datenbank / SQL code kein problem aber der HTML/php code ) und der Butten der diese zeile löscht( auch wie der andere Butten in der DB / SQL wie gesagt nicht das problem ) Jetzt stellt sich die Frage wie ich dem SQL statmant den Namen der zeile übergebe und oder wie ich die geänderten Html code der datenbank übergebe/ php übergeben.
Ich poste erstmal mein Code der Teilweise nicht funktioniert
Versuch Mysql hinzuzufügen :
<?php
mysql_connect("localhost", "root" , "root");
mysql_select_db("Csv");
$Prudukt = $_POST[Prudukt];
$Link = $_POST[Link];
$Art = $_POST[Art];
$htccess = $_POST[htccess];
$Login = $_POST[Login];
$PW = $_POST[PW];
$Version = $_POST[Version];
$Pflegetool = $_POST[Pflegetool];
$SSLFaelligkeit = $_POST[SSLFaelligkeit];
$Hosting = $_POST[Hosting];
$VersionBE = $_POST[VersionBE];
$NodeBE = $_POST[NodeBE];
$VersionFE = $_POST[VersionFEe];
$NodeFE = $_POST[NodeFE];
$DBServer = $_POST[DBServer];
$DBUser = $_POST[DBUser];
$DBVersion = $_POST[DBVersion];
$RMIPort = $_POST[RMIPort];
$Monitoring = $_POST[Monitoring];
$MonitoringURL = $_POST[MonitoringUR];
$MonitoringPattern = $_POST[MonitoringPattern];
$MonitoringLogin = $_POST[MonitoringLogin];
$MonitoringMessage = $_POST[MonitoringMessage];
$IPSperren = $_POST[IPSperren];
$PflegetoolLogins = $_POST[PflegetoolLogins];
$insert = mysql_query("INSERT INTO Anwendung_Hosting
(Link,Art,htaccess,Login,PW,Version,Pflegetool,SSLFaelligkeit,Hosting,VersionBE,NodeBE,VersionFE,NodeFE,DBServer,DBUser,DBVersion,RMIPort,Monitoring,MonitoringURL,MonitoringPattern,MonitoringLogin,MonitoringMessage,IPSperren,PflegetoolLogins")
VALUES
('$Link',
'$Art',
'$htaccess',
'$Login',
'$PW$Version',
'$Pflegetool',
'$SSLFaelligkeit',
'$Hosting',
'$VersionBE',
'$NodeBE',
'$VersionFE',
'$NodeFE',
'$DBServer',
'$DBUser',
'$DBVersion',
'$RMIPort',
'$Monitoring',
'$MonitoringURL',
'$MonitoringPattern',
'$MonitoringLogin',
'$MonitoringMessage',
'$IPSperren',
'$PflegetoolLogins')
or die(mysql_error());
?>
Aus CSV zu Html:
<?php
$hasTitle = true;
echo '<table border="0" cellspacing="0" cellpadding="5" width="500" class="csvTable">';
$handle = fopen("hosting.csv", "r");
$start = 0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
echo '<tr>' . "\n";
for ( $x = 0; $x < count($data); $x++)
{
if ($start == 0 && $hasTitle == true)
echo "<th>.$data[$x].'</th>' . "\n";
else
echo "<td>.$data[$x].'</td>' . "\n";
}
$start++;
echo '</tr>' . "\n";
}
fclose($handle);
echo '</table>';
?>
Ich hoffe einer kann mir Helfen
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 276633
Url: https://administrator.de/contentid/276633
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo,
zunächst würde ich den Connect zur Datenbank in einer eigenen PHP-Datei realisieren. In etwa so:
in die Eigentlichen PHP-Datei kommt dann so etwas rein:
Hoffe ich konnte dir helfen!
zunächst würde ich den Connect zur Datenbank in einer eigenen PHP-Datei realisieren. In etwa so:
<?php
error_reporting(E_ALL);
// Zum Aufbau der Verbindung zur Datenbank
define ( 'MYSQL_HOST', 'DATENBANKHOST' ); <- DB-HOST eintragen
define ( 'MYSQL_BENUTZER', 'DATENBANKBENUTZER' ); <- DB-User eintragen
define ( 'MYSQL_KENNWORT', 'PASSWORT' ); <- DB-PW eintragen
define ( 'MYSQL_DATENBANK', 'DATENBANK' ); <- DB eintragen
$db_link = mysqli_connect (MYSQL_HOST,
MYSQL_BENUTZER,
MYSQL_KENNWORT,
MYSQL_DATENBANK);
if ( $db_link ) {
echo 'Datenbankverbindung erfolgreich';
}
else {
die('keine Verbindung möglich: ' . mysqli_error());
}
?>
in die Eigentlichen PHP-Datei kommt dann so etwas rein:
<?php
$POST1 = $_POST ['VAR'];
$POST2 = $_POST ['VAR'];
$POST3 = $_POST ['VAR'];
//Verbindungsaufbau mit Datenbank
include ("dbconnect.php"); <- da muss der Pfad für die oben gezeigte Datei hin
$db_link = mysqli_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT, MYSQL_DATENBANK); <- hier musst du gar nichts ändern!!
$sql = "Insert Into Tabelle (Col1,Col2,Col3) Values ('Post1',Post2,'Post3')"; <- Hier wird der Insert in "Klartext" definiert und in die Variable $SQL gespeichert
$db_insert = mysqli_query($db_link, $sql); <- Durch mysqli_query($db_link, $sql) wird eine Query mit den Verbindungsdaten aus $db_link mit dem Inhalt von $sql ausgeführt. Das Ergebnis wird in $db_insert gespeichert.
if (!$db_insert) {
die('Ungültige Abfrage: ' . mysqli_error($db_link)); <- Sollte irgendwas schief gelaufen sein, wird es hierdurch ausgegeben.
}
Hoffe ich konnte dir helfen!
Hi hahaxd3.
Oh mann, was bekommst du den hier für antworten ? Das ist ja nicht zu glauben...
@Philipp711
1. er HAT
Wie wäre es denn, wenn wir erst einmal die Frage lesen und versuchen zu Verstehen...
Aus der DB in eine CSV, CSV auf Seite darstellen UND Änderungen in BEIDEN Quellen übernehmen.
Ganz einfach !
Weg mit der CSV-Datei (oder hat die noch einen weiteren Zweck der unerwähnt blieb ?)
Wenn CSV-Datei weg kann:
Jede Tabelle sollte eine Spalte ID bekommen, in dieser wird eine fortlaufende Nummer (AUTO_INCREMENT (MySQL) geführt die dann jeden Datensatz eindeutig IDentifiziert. Diese ID fügst du als Verstecktes Formularfeld mit in das HTML ein. Über diese ID kann dann jeder Datensatz einfach bearbeitet oder gelöscht werden:
-> Ich kann mit deinen Daten nicht viel anfangen, aber möglicherweise eignet sich auch ein bereits existierendes Feld dazu ?!
Wenn die CSV-Datei gebraucht wird:
Dann wird es leider komplizierter !
Dann muss immer der komplette Dateiinhalt durchlaufen bzw neu geschrieben werden. Vielleicht kann man auch zu der entsprechenden Stelle "springen" aber dann muss man berechnen was mit dem Inhalt dahinter passieren muss: alle Zeichen X Stellen nach vorne Ziehen, oder nach hinten schiebe. Wenn der neue Inhalt kürzer ist, muss ermittelt werden wieviel von dem alten gelöscht werden soll... usw und sofort.
Da die Datenbank aber auch hier geändert werden würde, könnte man vielelciht auch nah dem UPDATE die CSV-Datei einfach neu erstellen lassen so das die weitern, davon abhängenden Prozesse, trotzdem auf aktuelle Daten zugreifen können.
Aber warten wir doch erst einmal was der Fragesteller zum Nutzen der CSV-Datei sagt.
~Arano
Oh mann, was bekommst du den hier für antworten ? Das ist ja nicht zu glauben...
@Philipp711
zunächst würde ich...
Als erstes sollte man lesen !1. er HAT
- einen Datenbankverbindungsaufbau und
- ein INSERT-Statement
error_reporting(E_ALL)
sollte NUR ZUM TESTEN / ENTWICKELN verwenden ! Statt "E_ALL" also bitte "-1" und/oderini_set( 'display_errors', 'Off')
Fehlermeldungen haben die Besucher/Anwender niemals zu Gesicht zu bekommen. Gerade die MySQL-Verbindungsmeldung enthält sensible Daten -> den Datenbankuser und bietet somit Angriffsfläche !$db_link = mysqli_connect( ... ); if( false ) echo mysql_error();
Hier wird die Fehlermeldung, die nicht an die "Öffentlichkeit" sollte, gleich zweimal ausgegeben. Einmal beim auftreten des Fehlers (Aufruf von mysqli_connect()) und in dem späterem echo. Sollte nicht sein und ist doppelt !- in deiner dbconnect.php wird bereits eine Datenbankverbindung hergestellt, warum erstellst du nach dem include eine Zweite Verbindung mit der du die Erste (ungenutzte) überschreibst !?
Wie wäre es denn, wenn wir erst einmal die Frage lesen und versuchen zu Verstehen...
Aus der DB in eine CSV, CSV auf Seite darstellen UND Änderungen in BEIDEN Quellen übernehmen.
Ganz einfach !
Weg mit der CSV-Datei (oder hat die noch einen weiteren Zweck der unerwähnt blieb ?)
Wenn CSV-Datei weg kann:
Jede Tabelle sollte eine Spalte ID bekommen, in dieser wird eine fortlaufende Nummer (AUTO_INCREMENT (MySQL) geführt die dann jeden Datensatz eindeutig IDentifiziert. Diese ID fügst du als Verstecktes Formularfeld mit in das HTML ein. Über diese ID kann dann jeder Datensatz einfach bearbeitet oder gelöscht werden:
ändere wo ID=123
oderlöscher wo ID=321
-> Ich kann mit deinen Daten nicht viel anfangen, aber möglicherweise eignet sich auch ein bereits existierendes Feld dazu ?!
Wenn die CSV-Datei gebraucht wird:
Dann wird es leider komplizierter !
Dann muss immer der komplette Dateiinhalt durchlaufen bzw neu geschrieben werden. Vielleicht kann man auch zu der entsprechenden Stelle "springen" aber dann muss man berechnen was mit dem Inhalt dahinter passieren muss: alle Zeichen X Stellen nach vorne Ziehen, oder nach hinten schiebe. Wenn der neue Inhalt kürzer ist, muss ermittelt werden wieviel von dem alten gelöscht werden soll... usw und sofort.
Da die Datenbank aber auch hier geändert werden würde, könnte man vielelciht auch nah dem UPDATE die CSV-Datei einfach neu erstellen lassen so das die weitern, davon abhängenden Prozesse, trotzdem auf aktuelle Daten zugreifen können.
Aber warten wir doch erst einmal was der Fragesteller zum Nutzen der CSV-Datei sagt.
~Arano
Hi
Genau, Ziel der ID ist es "etwas zu haben" das man "weiterreichen" kann um die Daten entsprechen zu aktualisieren oder zu löschen.
Klar ist das möglich Wir geben die ID oder irgend ein anderes, geeignetes und eindeutiges Feld als versteckten Parameter über das Formular mit (als normaler GET-Parameter ginge das aber auch).
Jetzt musst du aber erst noch einmal selber entscheiden !:
Der Cronjob, wie häufig läuft der ?
Wenn der z.B. nur einmal in der Nacht läuft aber tagsüber von Dutzenden Mitarbeiter (auch die können Sicherheitslücken nutzen (absichtlich oder unbeabsichtigt, der Mensch ist neugierig !)) die Daten bearbeitet werden, wäre es nur unnötig jedes mal die CSV-Datei neu zu erzeugen.
Könnt aber ja auch anders herum sein, selten bearbeiten und häufig nutzen, dann wäre es wichtig sofort die CSV-Datei zu aktualisieren.
Es kann aber auch eine jede mögliche Kombination dazwischen sein, das weisst nur du.
Also, man könnte zu jedem UPDATE oder DELETE auch die CSV-Datei von PHP neu erstellen lassen (ggf. sogar nur mit einem SQL-Query (wenn ich mich nicht irre)) sofern PHP/Webserver die Schreibrechte auf die Zieldatei besitzt.
Oder man bearbeitet den Cronjob entsprechen im Sinne von:
Die Anzeige und das bearbeiten könnte man z.B. so gestalten (habe mich etwas mehr an die OOP-Version von MySQLi gehalten)
Queries anpassen in Zeile 34, 48 und 83
Namen anpassen in Zeile 107 bis xxx
Die
Server, User, Pass und Db sowieso *g*
Und wie immer: Ungetestet, Benutzung auf eigenen Gefahr und NICHT OHNE BACKUP DER DATENBANK !
~Arano
Genau, Ziel der ID ist es "etwas zu haben" das man "weiterreichen" kann um die Daten entsprechen zu aktualisieren oder zu löschen.
Klar ist das möglich Wir geben die ID oder irgend ein anderes, geeignetes und eindeutiges Feld als versteckten Parameter über das Formular mit (als normaler GET-Parameter ginge das aber auch).
Jetzt musst du aber erst noch einmal selber entscheiden !:
Der Cronjob, wie häufig läuft der ?
Wenn der z.B. nur einmal in der Nacht läuft aber tagsüber von Dutzenden Mitarbeiter (auch die können Sicherheitslücken nutzen (absichtlich oder unbeabsichtigt, der Mensch ist neugierig !)) die Daten bearbeitet werden, wäre es nur unnötig jedes mal die CSV-Datei neu zu erzeugen.
Könnt aber ja auch anders herum sein, selten bearbeiten und häufig nutzen, dann wäre es wichtig sofort die CSV-Datei zu aktualisieren.
Es kann aber auch eine jede mögliche Kombination dazwischen sein, das weisst nur du.
Also, man könnte zu jedem UPDATE oder DELETE auch die CSV-Datei von PHP neu erstellen lassen (ggf. sogar nur mit einem SQL-Query (wenn ich mich nicht irre)) sofern PHP/Webserver die Schreibrechte auf die Zieldatei besitzt.
Oder man bearbeitet den Cronjob entsprechen im Sinne von:
mysql_dump into /path/datei.csv && /var/myscript.sh
bzw. schiebt das mysql_dump in das Script.Die Anzeige und das bearbeiten könnte man z.B. so gestalten (habe mich etwas mehr an die OOP-Version von MySQLi gehalten)
Queries anpassen in Zeile 34, 48 und 83
Namen anpassen in Zeile 107 bis xxx
Die
<label for="ID">
zeigt auf die <input id="ID">
um ein Zuordnung herstellen zu können.Server, User, Pass und Db sowieso *g*
Und wie immer: Ungetestet, Benutzung auf eigenen Gefahr und NICHT OHNE BACKUP DER DATENBANK !
<?php
// fürs TESTEN einfach auskommentieren
@ini_set( 'error_reporting', '0' ); // -1 hat übrigends keine wirkung wie ich gerade feststellen musste... -.-
@ini_set( 'display_errors', 'Off' );
define( 'MYHOST', 'localhost' );
define( 'MYUSER', 'Benutzername' );
define( 'MYPASS', 'Passwort' );
define( 'MYDABA', 'DAtenBAnk' );
$My = new mysqli( MYHOST, MYUSER, MYPASS, MYDABA );
if( NULL!=$My->connect_error )
die( 'Fehler bei der Datenbankverbindung !' );
/**
* VERARBEITUNG
* Jenach dem ob der UPDATE oder DELETE Button gedrückt wurde, wird hier ein entsprechendes
* Query erstellt und anschließend ausgeführt.
*/
if( isset($_POST['action']) )
{
// erstellen query:
switch( $_POST['action'] )
{
// dieses update-case kann man auch in eine eigene datei schieben und dort
// ggf noch die eingaben auf plausibilität prüfen um fehleingaben zu verhindern
// case 'update: include './pfad/action_update.inc.php'; break;
case 'update': $sqlQuery = "UPDATE `tabelle`
SET `feld1` = '".$My->real_escape_string($_POST['name1'])."',
`feld2` = '".$My->real_escape_string($_POST['name2'])."',
`feld3` = '".$My->real_escape_string($_POST['name3'])."',
`feld4` = '".$My->real_escape_string($_POST['name4'])."'
...
und deine weiteren Felder...
...
WHERE `IDoderNAME` = '".$My->real_escape_string($_POST['object'])."'
LIMIT 1"; // LIMIT 1 weil:
// nach dem ersten Treffer aufhören, sont wird die komplette DB durchsucht
// obwohl wir wissen das nichts mehr da sein kann !
break;
case 'delete': $sqlQuery = "DELETE FROM `tabelle`
WHERE `IDoderNAME` = '".$My->real_escape_string($_POST['object'])."'
LIMIT 1";
break;
default: die( 'Unbekannte Aktion - ABBRUCH !' );
// abbruch weil wir die ausführung des queries (welches nicht existiert)
// verhindern müssen, sonst gibts ne hässliche PHP-fehlermeldung.
}
// query ausführen:
if( ! $My->query($sqlQuery) )
{
echo '<span class="errorMsg">Achtung, fehler beim ausführen des Queries !</span>';
// KEIN PROGRAMMABBRUCH, wir wollen die Liste trotzdem angezeigt bekommen (s. unten)
}
else
{
// alles okay, update oder delete wurde durchgeführt
// gebe KEINE Meldung aus, wir wollen nur meckern
// WENN etwas fehl schlug.
}
}
/**
* ANZEIGE
* Hier wenden alle Daten aus der DB gelesen und in separaten formularen zur
* bearbeitung (oder löschung) ausgegeben.
* Gemachte Änderungen oder Löschungen wurden vorher (s.oben) durchgeführt, so
* das die DB auf dem aktuellen Stand ist wenn die Daten gelesen werden.
*/
$sqlSelectAll = "SELECT * FROM `tabelle` ORDER BY `id` ASC";
$resSelectAll = $My->query( $sqlSelectAll );
if( ! ($resSelectAll instanceof mysqli_result) )
{
echo '<p>Zu Zeit können keine Daten aus der Datenbak gelesen werdeb, bitte versuchen Sie es später erneut.</p>';
}
else
{
if( 0>=$resSelectAll->num_rows )
{
echo '<p>Es sind keine Einträge in der Datenbank vorhanden.</p>';
}
else
{
// liste alle einträge in formulaten auf
while( $arrData = $resSelectAll->fetch_assoc() )
{
echo '
<form action="" method="POST"
style="height:25px; overflow:hidden;"
onclick="this.style.height=\'auto\';"
>
<label for="id_name1">Name Nr.1</label><input id="id_name1" type="text" name="name1" value="'.$arrData['name1'].'"><br>
<label for="id_name2">Name Nr.2</label><input id="id_name2" type="text" name="name2" value="'.$arrData['name2'].'"><br>
<label for="id_name3">Name Nr.3</label><input id="id_name3" type="text" name="name3" value="'.$arrData['name3'].'"><br>
<label for="id_name4">Name Nr.4</label><input id="id_name4" type="text" name="name4" value="'.$arrData['name4'].'"><br>
...
und deine weiteren Felder...
...
<input type="hidden" name="object" value="'.$arrData['spalteID_oderIrgendetwasAnderesEindeutiges'].'">
<input type="submit" name="delete" value="Löschen">
<input type="submit" name="update" value="Aktualisieren">
</form>';
}
}
}
?>
~Arano
Hi,
gerne doch !
Hm... also das <form> hat ja seine einzelnen Elemente, z.B. die <input>s.
Damit der User weis wass er denn in solch ein Eingabefeld eingeben soll schreiben wir es meistens einfach davor
Nun muss man aber direkt auf das <input> klicken um dort etwas eintragen zu können. Okay, das geht noch aber wir sieht es mit den Checkboxen aus ? Diese kleinen Kästchen in die man einen Haken setzen kann... da ist es manchmal schon ganz schön nerfig diesesn kleinen Kasten mit der Maus zu treffen.
Ausserdem besteht aktuelle zwischen dem Text und derm <input> keine auswertbare Verbindung die von Suchmaschienen oder Screenreadern ausgewertet werden könnte um dem User mitziteilen worum es überhaupt geht - Sinn und Zweck. (Auch wenn es uns Mensch das offt als "logisch" erscheint).
Also setzten wir den Text erstmal in <label>-Tags um überhaupt auszusagen das dieser Text ein Label für etwas ist. Und da sind wir auch schon bei dem "for", ein Label für was !? Um diese Zuordnung zu erzeugen "verknüpfen" wir das <label> mit dem <input> über eine ID, die ID des <input>.
Denke daran, das eine ID __eindeutig__ sein MUSS und das Dokumenten weit.
Die Ausgabe der Einträge erfolgt ja über eine Schleife. Wenn du es so wie in meinem beispiel machst, werden mit jedem Schleifendurchlauf Felder mit den gleichen IDs erstellt. Diese sind dann nicht nicht mehr eindeutig und das IST FALSCH.
So wäre es dann möglich das wenn du ein Label anklickst, nur das oberstet Input mit der ID aktiviert wird. Oder bei Checkboxen, das vielleicht ALLE Checkboxen aktiviert werden Oo. Ich denke dafür ist kein Verhalten der Browser definiert, so das alles und nichts passieren kann.
Hier noch ein Link zu selfHTM: http://wiki.selfhtml.org/wiki/HTML/Formulare/Gruppierung
~Arano
gerne doch !
Hm... also das <form> hat ja seine einzelnen Elemente, z.B. die <input>s.
Damit der User weis wass er denn in solch ein Eingabefeld eingeben soll schreiben wir es meistens einfach davor
Name: <input name="username">
Ausserdem besteht aktuelle zwischen dem Text und derm <input> keine auswertbare Verbindung die von Suchmaschienen oder Screenreadern ausgewertet werden könnte um dem User mitziteilen worum es überhaupt geht - Sinn und Zweck. (Auch wenn es uns Mensch das offt als "logisch" erscheint).
Also setzten wir den Text erstmal in <label>-Tags um überhaupt auszusagen das dieser Text ein Label für etwas ist. Und da sind wir auch schon bei dem "for", ein Label für was !? Um diese Zuordnung zu erzeugen "verknüpfen" wir das <label> mit dem <input> über eine ID, die ID des <input>.
<label for="username">Benutzername: </label>
<input id="username" name="user">
<label for="agbaccept">Hiermit bestätige ich die AGB gelesen, akzeptiert uns weiter und sofort</label>
<input id="agbaccept" name="agb" type="checkbox">
Denke daran, das eine ID __eindeutig__ sein MUSS und das Dokumenten weit.
Die Ausgabe der Einträge erfolgt ja über eine Schleife. Wenn du es so wie in meinem beispiel machst, werden mit jedem Schleifendurchlauf Felder mit den gleichen IDs erstellt. Diese sind dann nicht nicht mehr eindeutig und das IST FALSCH.
So wäre es dann möglich das wenn du ein Label anklickst, nur das oberstet Input mit der ID aktiviert wird. Oder bei Checkboxen, das vielleicht ALLE Checkboxen aktiviert werden Oo. Ich denke dafür ist kein Verhalten der Browser definiert, so das alles und nichts passieren kann.
Hier noch ein Link zu selfHTM: http://wiki.selfhtml.org/wiki/HTML/Formulare/Gruppierung
~Arano
Hallo.
Ähm...
Das es automatisch wieder "zurück geändert" ist meines wissen nach so nicht möglich (aber ich weiß auch nur Teile!).
Wobei man das sicher automatisieren könnte.
Z.B. könnte man das Objekt zusammen mit einem Zeitwert und den rückgängig zu machenden Änderungen in eine Datei speichern die jede Minute von einem Cronjob überwacht wird (oder alle 5min wenn tolerant). Der Cronjob scannt also die Datei nach abgelaufenen Zeitwerten (älter als 1h) und führt dann die zurück zu rollenden Änderungen in der DB aus und löscht den Eintrag aus der Datei. So können mehrere Objekte "pausiert" werden oder wie auch immer.
Aber "viele Wege führen zum Ziel". Mann könnte z.B auch einen Zeitwert setzten ab wann, oder bis wann etwas gültig ist. Und solange sich der Zeitwert noch in der gültigen Phase befindet, wird es angezeigt oder abgearbeitet oder was auch immer damit sein soll.
Oder man arbeitet mit einer zweiten Tabelle und man verschiebt den Ganzen Datensatz von Tabelle zu Tabelle und später wieder zurück.
Aber momentan habe ich keine Ahnung was du überhaupt willst !
~Arano
PS. Du hast $_GET anstelle von $_POST verwendet, das war beabsichtigt !?
Ähm...
mit dem ich einen eintrag __für eine stunde__ ändern kann
Was meinst den damit !?Das es automatisch wieder "zurück geändert" ist meines wissen nach so nicht möglich (aber ich weiß auch nur Teile!).
Wobei man das sicher automatisieren könnte.
Z.B. könnte man das Objekt zusammen mit einem Zeitwert und den rückgängig zu machenden Änderungen in eine Datei speichern die jede Minute von einem Cronjob überwacht wird (oder alle 5min wenn tolerant). Der Cronjob scannt also die Datei nach abgelaufenen Zeitwerten (älter als 1h) und führt dann die zurück zu rollenden Änderungen in der DB aus und löscht den Eintrag aus der Datei. So können mehrere Objekte "pausiert" werden oder wie auch immer.
Aber "viele Wege führen zum Ziel". Mann könnte z.B auch einen Zeitwert setzten ab wann, oder bis wann etwas gültig ist. Und solange sich der Zeitwert noch in der gültigen Phase befindet, wird es angezeigt oder abgearbeitet oder was auch immer damit sein soll.
Oder man arbeitet mit einer zweiten Tabelle und man verschiebt den Ganzen Datensatz von Tabelle zu Tabelle und später wieder zurück.
Aber momentan habe ich keine Ahnung was du überhaupt willst !
~Arano
PS. Du hast $_GET anstelle von $_POST verwendet, das war beabsichtigt !?
Hi,
hatte dein weiteres Fragen total vergessen, sorry !
Als erstes, schau dir mal das HTML-Grundgerüst an !
Also das mit dem Radio-Button kann man machen ABER Formulare dürfen NICHT verschachtelt werden !
Im Prinzip ist es nur ein Formular, mit drei Submitbuttons und einer ganzen Menge an an Radio-Buttons - für jeden Eintrag einen.
Das Formular muss also die gesamte Tabelle umfassen und in jeder Zeile ist ein Radiobutton. in diesem Fall haben die alle den gleichen Namen:
da sind übrigend noch einige andere Fehler in deinem Code !
Aktiviere mal - und zwar nur fürs entwickeln! - die Ausgabe der PHP-Meldungen
Und dann ist mir noch aufgefallen, das du in den While-Schleifen gaaaanz oft eine Tabellenzelle <td> öffnest, aber eine Tabellenkopfzelle <th> schließt
~Arano
hatte dein weiteres Fragen total vergessen, sorry !
Als erstes, schau dir mal das HTML-Grundgerüst an !
<DOCTYPE html>
<html>
<head>
<title>Titel der Seite</title>
<style type="text/css">
<!--
/* dein CSS hier */
/* (kann man auch über eine extra Datei realisieren) */
-->
</style>
<script type="text/javascript">
<!--
/* dein Javascript hier */
/* (kann man auch über eine extra Datei realisieren) */
-->
</script>
</head>
<body>
<!-- HIER alles weitere HTML -->
</body>
</html>
Also das mit dem Radio-Button kann man machen ABER Formulare dürfen NICHT verschachtelt werden !
Im Prinzip ist es nur ein Formular, mit drei Submitbuttons und einer ganzen Menge an an Radio-Buttons - für jeden Eintrag einen.
Das Formular muss also die gesamte Tabelle umfassen und in jeder Zeile ist ein Radiobutton. in diesem Fall haben die alle den gleichen Namen:
<from>
<input type="submit" name=""delete" value="löschen">
<input type="submit" name=""pause" value="pausieren">
<input type="submit" name=""resume" value="fortfahren">
<table>
<!-- die zeilen werden ja in der PHP-While generiert und darum ist die $dataID immer eine andere -->
<tr> <td></td> <td> <input type="radio" name="machwasmitmir" value="$dataID"> </td> </tr>
<tr> <td></td> <td> <input type="radio" name="machwasmitmir" value="$dataID"> </td> </tr>
<tr> <td></td> <td> <input type="radio" name="machwasmitmir" value="$dataID"> </td> </tr>
</table>
</form>
da sind übrigend noch einige andere Fehler in deinem Code !
$array[value] // das ist falsch !
$array['value'] // so oder
$array["value"] // so
/*
im ersten fall müsste "value" eine definierte Konstante sein: define( 'value', 'wert');
weil deine ganzen array-Indexe aber NICHT als Konstanten existieren müsste es jedemal eine PHP-Warnung oder Notice geben
*/
ini_set( 'display_errors', 1 ); // aktiviere fehlerausgabe
ini_set( 'error_reporting', -1 ); // melde alles: http://php.net/manual/de/function.error-reporting.php
Und dann ist mir noch aufgefallen, das du in den While-Schleifen gaaaanz oft eine Tabellenzelle <td> öffnest, aber eine Tabellenkopfzelle <th> schließt
<tr><th>Land</th><th>Einwohner</th></tr>
<tr><td>asdasd</td><td>12345678</td></tr>
<tr><td>werwer</td><td>87654321</td></tr>
~Arano