Kartenverwaltung PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
array
auslese
beispiel
code
datenbank
feld
formular
frohe festtage
frohe weihnachten
http
karte
kartennummer
kleiner einblick
manual
nummer
set
tabelle
update
url
-
Ich programmiere gerade eine Kartenverwaltung.
Dafür habe ich eine Übersicht der eingetragenen Karten mit der vorhandenen Anzahl erstellt, die aus der Datenbank ausgelesen wird.
Jetzt möchte ich 20 Nummern auf einmal eingeben, wobei von jeder Kartennummer von der Anzahl 1 subtrahiert werden soll.
Dafür habe ich schon folgende SQL Abfrage:
mysql_query("UPDATE kv_karten SET anzahl = anzahl-1 WHERE kartennummer = '" . $_POST["kartennummer"] . "' ");
und das Formular
<form method="loginbereich.php?action=sell"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"> <input type="text" name="kartennummer" size="2"><br> <input type="submit" name="submit"> </form>
Aber es funktioniert noch nicht. Wenn ich eine Nummer in das Formular eingebe, wird immer nur von der ersten Nummer die Anzahl verändert. Es soll aber von alles die Anzahl geändert werden. Was muss ich da ändern?
Was ist mein Fehler?
Beitrag zuletzt geändert: 24.12.2011 19:27:51 von php-oop -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie ist denn die Tabelle aufgebaut? Also was verstehst du unter Anzahl?
(ein kleiner Einblick ind die Datenbankstruktur wäre zum Beispiel sehr hilfreich.)
MFG und frohe Weihnachten! -
programtools schrieb:
Wie ist denn die Tabelle aufgebaut? Also was verstehst du unter Anzahl?
(ein kleiner Einblick ind die Datenbankstruktur wäre zum Beispiel sehr hilfreich.)
MFG und frohe Weihnachten!
Hallo !
Vielen Dank für deine Antwort !
Für das Script benutze ich eine Datenbanktabelle, die heißt "karten".
Die Tabelle ist so aufgebaut: kartennummer | anzahl
Kartennummer ist eine Nummer, die jede Karte hat und Anzahl ist meine derzeit verfügbare Menge.
Ich will von beliebig vielen Kartennummern, die ich in das untenstehende Formular eintrage, von der Anzahl 1 abziehen. -
hm, lass es mich mal so formulieen: du hast 20 mal dasselbe inputfeld mit kartennummer, es wird nur eine übergeben, weil die aufgrund Identischer namen überschrieben wird und nur einer übergeben wird...
du hast 2 möglichkeiten: du benennst alle felder mit einer fortlaufenden Nummer, damit das nciht der selbe name ist oder du baust das zu einem aray zusammen und übergibst das array an eine schleife...
ersteres würde dein problem schnell lösen, ist abernicht elegant.
für die elegante Lösung (lösung 2) solltest du dich mit Kontrollstrukturen in PHP beschäftigen und dem Array Datentyp...
http://php.net/manual/de/language.control-structures.php
http://php.net/manual/de/language.types.array.php -
Genau wie sebulon sagt.
Du hast ein Feld. Du brauchst aber ein Feld-Array.
HTML:
<input type="text" name="kartennummern[]" size="2"> <input type="text" name="kartennummern[]" size="2"> <input type="text" name="kartennummern[]" size="2"> <input type="text" name="kartennummern[]" size="2"> ...
PHP:
foreach($_POST['kartennummern'] as $kartennummer){ mysql_query("UPDATE kv_karten SET anzahl = anzahl-1 WHERE kartennummer = '".$kartennummer."' "); }
MFG und frohe Festtage!
EDIT:
Da du ja anscheinend nur Kartenfelder brauchst die du auch in der Datenbank hast, kannst du dir das auch generieren lassen, was dann sebulons 1. Variante wäre.
PHP:
<!-- Generieren --> <?php $query = "SELECT kartennummer, anzahl FROM kv_karten"; $result = mysql_query($query); while($karte = mysql_fetch_object($result)){ ?> <input type="text" name="kartennummer_<?php echo $karte->kartennummer; ?>" size="2"> <?php } ?> <!-- Auslesen --> <?php $query = "SELECT kartennummer, anzahl FROM kv_karten"; $result = mysql_query($query); while($karte = mysql_fetch_object($result)){ if(!empty($_POST["kartennummer".$karte->kartennummer])) mysql_query("UPDATE kv_karten SET anzahl = anzahl-1 WHERE kartennummer = '" . $_POST["kartennummer".$karte->kartennummer] . "' "); } ?> Ist zwar nicht so schön, aber dafür ist es gegenüber V1 nicht so logigfehleranfällig :)
Beitrag zuletzt geändert: 25.12.2011 20:54:53 von programtools -
programtools schrieb:
Genau wie sebulon sagt.
Du hast ein Feld. Du brauchst aber ein Feld-Array.
HTML:
<input type="text" name="kartennummern[]" size="2"> <input type="text" name="kartennummern[]" size="2"> <input type="text" name="kartennummern[]" size="2"> <input type="text" name="kartennummern[]" size="2"> ...
PHP:
foreach($_POST['kartennummern'] as $kartennummer){ mysql_query("UPDATE kv_karten SET anzahl = anzahl-1 WHERE kartennummer = '".$kartennummer."' "); }
MFG und frohe Festtage!
EDIT:
Da du ja anscheinend nur Kartenfelder brauchst die du auch in der Datenbank hast, kannst du dir das auch generieren lassen, was dann sebulons 1. Variante wäre.
PHP:
<!-- Generieren --> <?php $query = "SELECT kartennummer, anzahl FROM kv_karten"; $result = mysql_query($query); while($karte = mysql_fetch_object($result)){ ?> <input type="text" name="kartennummer_<?php echo $karte->kartennummer; ?>" size="2"> <?php } ?> <!-- Auslesen --> <?php $query = "SELECT kartennummer, anzahl FROM kv_karten"; $result = mysql_query($query); while($karte = mysql_fetch_object($result)){ if(!empty($_POST["kartennummer".$karte->kartennummer])) mysql_query("UPDATE kv_karten SET anzahl = anzahl-1 WHERE kartennummer = '" . $_POST["kartennummer".$karte->kartennummer] . "' "); } ?> Ist zwar nicht so schön, aber dafür ist es gegenüber V1 nicht so logigfehleranfällig :)
Danke!
Hat mir geholfen! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage