Zitat:
Zitat von Falki14 Ok dann liefer ich mal die benötigten Daten: |
Sieht schon besser aus.
Da mach ich mich ma zum Parser und stelle ein paar dumme Fragen:
Zitat:
|
Mein Problem ist im mMoment folgendes, die Checkboxes werden aus der Datenbank geladen und auch richtig dargestellt und makiert (unchecked oder checked). Diese Werte nimmt er aus der Tabelle gast_leistungen (Detailtabelle) und leistungen (Mastertabelle).
|
Also in 'leistungen' is die Speisekarte und 'gast_leistungen' die Bestellung beim Kellner.
Frage
Code:
CREATE TABLE IF NOT EXISTS `leistungen` (
`ZLID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`Name` varchar(25),
`Gebuer` int(4),
PRIMARY KEY (`ZLID`)
);
Name ist dann wohl kein Name sondern eher die Beschreibung der Zusatzleistung?
Code:
CREATE TABLE IF NOT EXISTS `gast_leistungen` (
`ZLID` int(11) UNSIGNED NOT NULL,
`GID` int(11) UNSIGNED NOT NULL
);
Schön normalisiert, bedingt aber bei der Ausgabe einen JOIN, um an die Beschreibungen und an die Werte zu kommen.
Grundsätzlich würde ich sowas nur einmal abfragen und das Ergebnis in die Session packen.
Plan B wäre, den statischen Kram, der nur ab und zu mal geändert wird, als Datenarray in ein File zu speichern. var_export() ist da ne große Hilfe.
Beispiel:
PHP-Code:
# PHP >= 5.3.3
$db = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);
$res = $db->query('SELECT ZLID, Name, Gebuehr FROM leistungen');
$rows = array();
while (false !== ($rows[] = $res->fetch_assoc());
$filename = __dir__ . '/datafile.php';
file_pit_contents($filename, '<?php
$ZLID = '. var_export($rows) . ';
?>';
Zitat:
|
Jedoch wenn man einen checked Wert unchecked macht und ihn somit also aus der Datenbank löschen möchte beim absenden funktioniert dieses nicht.
|
Generell gefällt mir Dein form Tag nicht (auch wenn der unschuldig ist):
PHP-Code:
print("<form method=post action=edit.php?gid=");
print(htmlspecialchars($gid));
print(">");
1. wenn POST, dann keine GET Parameter. Der Browser machts zwar mit, aber ohne Garantie.
2. nutze printf() - macht den Code übersichtlicher.
3. die Preisfrage ist allerdings: wo landed $gid? in $_GET oder in $_POST
--> EDIT in $_GET
4. wenn $gid numerisch ist, kannste htmlspecialchars() weglassen.
Mein Vorschlag sähe so aus:
PHP-Code:
print('<form method=post action=edit.php">
<input type="hidden" name="gid" value="%s">',
$gid
);
Das andere Problem was Du hast ist: nicht angeklickte Checkboxen werden überhaupt nicht gesendet.
Du mußt also
prüfen: was fehlt -> DELETE. Und damit Du da nich so lange suchen mußt:
entweder
Code:
<input type="checkbox" name="leistungen[$ZLID[$nummer]['ZLID']] value="egal">
oder
Code:
<input type="checkbox" name="leistungen[] value="$ZLID[$nummer]['ZLID']">
mit $nummer ist die Position in og. Array gemeint.
Zitat:
|
Ich hoffe diese Informationen waren hilfreicher.
|
Sie mindern die Menge an Unklarheiten.
Hoffentlich waren meine Tips nicht "allzufalsch"...