• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Checkboxen Problem

rollkragen

Neues Mitglied
Hallo ihr,

Seit 2 Tagen habe ich Folgendes Problem.
Ich möchte per PHP Formular Daten in die MySQL Datenbank eintragen.
Funktioniert auch wunderbar.
Nun möchte ich auch Checkboxen zum Einsatz bringen.
Wenn ich allerdings diese Checkboxen aktiviere, bzw. 1-2 -> wird es nicht in die
Datenbank übertragen.

Hier mal der Code von den Checkboxen:

HTML:
    <input type="checkbox" name="Allgemeinzustand" value="normal"> normal<br>    <input type="checkbox" name="Allgemeinzustand" value="blass"> blass<br>    <input type="checkbox" name="Allgemeinzustand" value="dehydriert"> dehydriert<br>    <input type="checkbox" name="Allgemeinzustand" value="kachektisch"> kachektisch<br>    <input type="checkbox" name="Allgemeinzustand" value="kaltschweissig"> kaltschweissig<br>    <input type="checkbox" name="Allgemeinzustand" value="alkoholisiert"> alkoholisiert<br>    <input type="checkbox" name="Allgemeinzustand" value="Übelkeit"> Übelkeit<br>    <input type="checkbox" name="Allgemeinzustand" value="Schwindel"> Schwindel<br>    <input type="checkbox" name="Allgemeinzustand" value="Krämpfe"> Krämpfe<br>

und hier der dazu gehörige PHP Code:

PHP:
	 				INSERT INTOeps ( Einsatznummer, Sanitäter1, Sanitäter2, Sanitäter3, Sanitäter4, Einsatzdatum, Name, Vorname, Geburtsdatum, Geschlecht, Adresse, PLZOrt, Unfallhergang, Atmung, Kreislauf, Allgemeinzustand, Trauma, PupilleRechts, PupilleLinks, ZustandSonstiges, Puls, RRSystolisch, RRDiastolisch, AtmungMaßnahme, KreislaufMaßnahme, VersorgungMaßnahme, SonstigeMaßnahme, LagerungMaßnahme, Verlauf, Sonstiges)	 				VALUES ('{$_POST['Einsatznummer']}', '{$_POST['Sanitäter1']}', '{$_POST['Sanitäter2']}', '{$_POST['Sanitäter3']}', '{$_POST['Sanitäter4']}', '{$_POST['Einsatzdatum']}', '{$_POST['Name']}', '{$_POST['Vorname']}', '{$_POST['Geburtsdatum']}', '{$_POST['Geschlecht']}', '{$_POST['Adresse']}', '{$_POST['PLZOrt']}', '{$_POST['Unfallhergang']}', '{$_POST['Atmung']}', '{$_POST['Kreislauf']}', '{$_POST['Allgemeinzustand']}', '{$_POST['Trauma']}', '{$_POST['PupilleRechts']}', '{$_POST['PupilleLinks']}', '{$_POST['ZustandSonstiges']}', '{$_POST['Puls']}', '{$_POST['RRSystolisch']}', '{$_POST['RRDiastolisch']}', '{$_POST['AtmungMaßnahme']}', '{$_POST['KreislaufMaßnahme']}', '{$_POST['VersorgungMaßnahme']}', '{$_POST['LagerungMaßnahme']}', '{$_POST['SonstigeMaßnahme']}', '{$_POST['Verlauf']}', '{$_POST['Sonstiges']}')";


ich hoffe ihr wisst was ich meine.

wenn ich im falschen Unterforum gelandet bin -> sorry, konnte mich nicht zwischen HTML und MySQL entscheiden.

mfg.

rollkragen
 
Werbung:
Das ist kein PHP-Code den Du da zeigst, das ist nur ein SQL-Statement mit merkwürdigen Platzhaltern. Verwendest Du irgendein Framework, welches diese Art Einbindung notwendig macht? Zeig bitte mehr von deinem Quellcode.

Hinweis: Du hast da 3 Checkboxen die den selben Namen haben. In dem Fall solltest Du eher Radio-Buttons nehmen, da ja nur eine Auswahl möglich sein soll. Wenn mehrere Auswahlen möglich sein sollen, verwende unterschiedliche Namen für die Boxen.
 
vorab vielen dank für deine antwort.

ich meinte natürlich SQL Statement...
wieso sind das merkwürdige platzhalter?

nein ich benutze kein Framework.

Es soll folgendermaßen funktionieren:

Ich habe ein EinsatzProtokollScript für unsere Schulsanitäter.
Einer dieser Schulsanitäter soll mit Hilfe eines Scripts Einsätze in die Datenbank eintragen.
Und wir (die Schulsanitätsdienstleitung) möchten auf einer anderen Seite dann die Einsätze abrufen.

Und da es beim Allgemeinzustand ja mehrere möglichkeiten gibt... blass + kaltschweißig benötige ich da,
die checkboxen und keine radioboxen.
 
Werbung:
Also hast Du dein Problem jetzt lösen können? Denn darauf hatte ich ja oben schon die Antwort gegeben.

Seltsam finde ich die Schreibweise:
PHP:
'{$_POST['Geburtsdatum']}'

Ich würde es eher so schreiben damit auch alles korrekt maskiert wird:
PHP:
'".mysql_escape_string($_POST['Geburtsdatum']."'
 
9 Checkboxen mit dem gleiche Namen, funktionniert so nicht wirklich. Da bekommst du lediglich den Wert der letzten aktiven Checkbox. Da solltest du Dein Formular anpassen und das ganze eindeutig bezeichnen.
Dann hast du 9 Felder, die in der POST Variable an das PHP Script übergeben werden, sofern sie ausgewählt wurden.

Anschließend kannst du Dein Script und SQL Befehl erweitern und die Daten in der DB speichern.
Allerdings benötigst du dann auch die entsprechenden Felder in der DB um die Werte auch speichern zu können.
 
hmm ich komm einfach nicht weiter...

nochmal zur erklärung was ich gerne machen möchte.

ich würde gerne checkboxen in einem formular haben wo man diverse allgemeinzustände
auswählen kann und diese dann (alle die man ausgewählt hat) in die datenbank eintragen.

nur ich möchte keine zig felder in der tabelle haben.

desweiteren möchte ich auch nur das ausgeben was auch wirklich angehakt wurde.

hier mal mein komplettes formular, ich weiß, das formular ist ziemlich unübersichtlich... :

http://nopaste.info/533b49dc7f.html
 
Zuletzt bearbeitet:
Werbung:
also bei 9 checkboxen können, je nach dem was ausgewählt wurde, maximal 9 Werte übergeben werden.
um diese werte auch speichern müssen die checkboxen eindeutig bezeichnet sein.
Code:
     <input type="checkbox" name="Allgemeinzustand1" value="normal"> normal<br>
     <input type="checkbox" name="Allgemeinzustand2" value="blass"> blass<br>
     <input type="checkbox" name="Allgemeinzustand3" value="dehydriert"> dehydriert<br>
u.s.w.

zum speichern:

entweder hast du für jede checkbox ein feld und speicherst so den status (gecheckt/uncheckt) in der Datenbank. Vorteil: du kannst später auch per SQL das Ganze mal Auswerten

Variable $_POST['Allgemeinzustand1'] wird in Feld 1 gespeichert
Variable $_POST['Allgemeinzustand2'] wird in Feld 2 gespeichert
u.s.w.

oder
du speicherst die checkbox $_POST Daten in einer Array Variable und wandelst das Array anschliessend per serialize() zu einem speicherbaren String um und speicherst diesem Wert dann in der DB, dann brauchst du auch nur ein Feld. Beispiel:
PHP:
if($_POST['Allgemeinzustand1']){
      $checkbox[0]=true;
}
else{
      $checkbox[0]=false;
}
if($_POST['Allgemeinzustand2']){
      $checkbox[1]=true;
}
else{
      $checkbox[1]=false;
}
// u.s.w

$safe_checkbox = serialize($checkbox);

// VARIABLE $safe_checkbox wird in Feld 1 gespeichert
Beim ausgeben kanst du das Ganze dann mit unserialize () wieder in das Array zurückwandeln und entsprechend gecheckt anzeigen falls der Wert "true" ist.
Nachteil: eine Auswertung der Daten per SQL ist nicht mehr möglich, wie oft z.B. Überlkeit ausgewählt wurde.

Viel Erfolg
 
Wer nicht zig Felder mehr haben will für seine Daten, die er speichern will, sollte diese dann eher in eine andere Tabelle lieber vertikal als horizontal speichern. Wenn du das auch nicht willst, bleibt dir nur noch mewos oder eine ähnliche Methode übrig; man kann nicht alles haben :/
 
Du wirst am besten nochmal einen Schritt zurücktreten und Dir Deine Tabelle anschauen. Es sollte eine Tabelle "Patienten" geben, und eine "Symptome" und eine "Fälle".
"Patienten" enthält eben die Stammdaten des Patienten (Name, Geburtsdatum), "Symptome" enthält eben jedes mögliche Symptom, und zwar 1 je Zeile und eine Symptom-Id dazu. Die Tabelle "Fälle" enthält einen Datensatz für jeden "Fall", schließlich kann ja 1 Mensch mehrmals erkranken oder verunglücken ohne daß der erste Fall mit dem zweiten etwas zu tun hat.
In einer separaten Tabelle werden jetzt der Fall-Id die Symptome zugeordnet. Es erscheint also z. B. 5 mal die Fall-Id mit der jeweiligen Symptom-Id jeweils als einzelner Datensatz.
 
Werbung:
9 Checkboxen mit dem gleiche Namen, funktionniert so nicht wirklich. Da bekommst du lediglich den Wert der letzten aktiven Checkbox.
Das ist aber nur in PHP so, es werden alle Werte übertragen und können z.b. in ein Array umgewandelt werden. PHP nutzt diesen Mechanismus erst wenn die Namen explizit mit einer Klammer versehen werden.
 
Zurück
Oben