php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.07.2007, 17:57  
Erfahrener Benutzer
 
Registriert seit: 10.02.2004
Beiträge: 132
Pimbolie1979
Standard Zustand von vielen Checkboxen in Datenbank speichern

Hallo @ all

Ich habe ein Formular, indem der Anwender sehr viele Checkboxen anklicken kann. (ca. 40 Stück) Den Zustand der Checkboxen möchte ich in der Datenbank speihern, jedoch möchte ich nicht für jede Checkbox eine Spalte anlegen. Gibt es eine Möglichkeit das ganze zusammenzufassen?

Grüsse

Pimbolie1979
__________________
www.Gastgeber-Deutschland.de
Pimbolie1979 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.07.2007, 18:14  
Erfahrener Benutzer
 
Registriert seit: 07.07.2005
Beiträge: 150
sysop
sysop eine Nachricht über ICQ schicken
Standard

z.b. implode();
sind die checkboxen alle im array $checkboxen enthalten, sieht das z.b. so aus...
PHP-Code:
$check implode(",",$checkboxen); 
nachteil, due musst IMMER ein explode machen, um den wert von checkbox 7 auszulesen...
__________________
gruss sys
sysop ist offline  
Alt 09.07.2007, 18:34  
Benutzer
 
Registriert seit: 02.12.2007
Beiträge: 70
Drache befindet sich auf einem aufstrebenden Ast
Standard

oder zahlen(zuordnung zum inhalt) verwenden und bitkodieren
PHP-Code:
<?php
 
foreach($checkboxen as $checkbox)
  
$check |= pow(2,$checkbox);
?>
auslesen lässt sich dass dann mit
PHP-Code:
<?php
 
if($check&pow(2,$gesuchter_wert))//angekreuztz ansonsten nicht angekreuzt
?>
feld in der datenbank muss dann entsprechend [int(mögliche_checkboxen) unsigned] mögliche checkboxen lang sein
nachteile: du wirst ein wertearray benötigen.
__________________
Karteikasten
"Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions
Drache ist offline  
Alt 09.07.2007, 21:33  
Erfahrener Benutzer
 
Registriert seit: 10.02.2004
Beiträge: 132
Pimbolie1979
Standard

Beide Lösungen sehen etwas schwer zu verstehen aus, jedoch habe ich schon mal einen Ansatz zum googeln. Mal sehen für welche Lösung ich mich entscheide.

Es wäre nett wenn Ihr vielleicht auch noch einige Worte zu Euren Lösungen schreibt, damit ich es einfacher verstehen kann.

Grüsse
__________________
www.Gastgeber-Deutschland.de
Pimbolie1979 ist offline  
Alt 09.07.2007, 22:02  
Erfahrener Benutzer
 
Registriert seit: 10.02.2004
Beiträge: 132
Pimbolie1979
Standard

Ich bevorzuge die Lösung von sysop

Wie muss ich bei dieser Lösung die Checkboxen definieren?
__________________
www.Gastgeber-Deutschland.de
Pimbolie1979 ist offline  
Alt 09.07.2007, 23:02  
CIX88
Gast
 
Beiträge: n/a
Standard

vielleicht:

type="checkbox" name="was_weis_ich[]" value="1"

und dann:

$check = implode(",",$_POST['was_weis_ich']);
 
Alt 10.07.2007, 12:29  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich empfehle dir folgende Lösung:
Code:
checkbox_questions (PK = id)
id | question

checkbox_answers (PK = user_id, question_id)
user_id | question_id
Das heißt, fülle eine Tabelle in der Datenbank mit dem Fragen-Katalog oder um was auch immer es sich eben bei den Checkboxen handelt (Hobbies, Gewohnheiten, ..)

Nun erstelle die Checkboxen, der Index für "question" entspricht dem Primärschlüssel der Tabelle "checkbox_questions".
Code:
<input type="hidden" name="question[0]" value="init" />
<input type="checkbox" name="question[1]" value="1" />
#question1#


<input type="checkbox" name="question[2]" value="1" />
#question2#


<input type="checkbox" name="question[3]" value="1" />
#question3#
usw.
Nun hast du nach dem Abschicken einen PHP-Array $_POST['question'], dessen Schlüssel die angeklickten Primärschlüssel der Fragen sind.
Nun kannst du mit folgendem Konstrukt die Daten eintragen:
PHP-Code:
<?php
$sql 
"INSERT INTO checkbox_answers (user_id, question_id) VALUES (%s)";
$values = array();
foreach (
$_POST['question'] as $question_id => $one) {
  
$question_id intval($question_id);
  if (
$question_id 0) { /* hier Bedingung einfügen, damit nur gültige question_id's eingetragen werden können */
    
$values[] = "$user_id, $question_id"// $user_id könnte aus deiner Session stammen
}
$sql sprintf($sqlimplode('), ('$values);
// echo $sql
?>
In SQL steht jetzt dein Query zum Eintragen in die Datenbank-Tabelle checkbox_answers.
Zergling-new ist offline  
Alt 10.07.2007, 13:43  
Erfahrener Benutzer
 
Registriert seit: 10.02.2004
Beiträge: 132
Pimbolie1979
Standard

PHP-Code:
<?                
   $checkboxenzustand 
= array();
   
$check implode(",",$_POST['checkboxenzustand']);  /* Hier soll Fehler sein */
?>
]

ab hier HTML-Code

Code:
<input name=" <? $checkboxenzustand[0] ?> " type="checkbox" class="checkbox" id="morgens" value="1" />
                    morgens
Jedoch kommt folgende Fehlermeldung:

Warning: implode(): Bad arguments --> Demnach muss der Fehler bei der Implode-Funktion liegen, jedoch finde ich diesen nicht

Kann mir vielleicht einer sagen woran es liegt

Grüsse

Pimbolie1979
__________________
www.Gastgeber-Deutschland.de
Pimbolie1979 ist offline  
Alt 10.07.2007, 13:48  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das ist NICHT der HTML-Code, das ist der PHP-Code zum Erzeugen des HTML-Codes und damit uninteressant.

Würdest du dir den HTML-Code (Browser, Rechtsklick, Quelltext anzeigen) anschauen (und kann man davon nicht ausgehen als Entwickler???), würdest du sofort sehen, dass dort
Code:
<input name="  " type="checkbox" class="checkbox" id="morgens" value="1" />
                    morgens
steht, was in dreifacher Hinsicht Bullshit ist.
1. Was sollen die Leerzeichen?
2. Hat <? $variable ?> garkeinen Effekt, du musst schon echo, print oder Konsorten verwenden
3. Hatte ich doch ein Beispiel geschrieben, das name-Attribut muss so aufgebaut sein: name[id] (und hier darf wieder nicht verwechselt werden, dass $php[$id] zwar ähnlich aussieht, aber doch auf HTML keinen Einfluß hat).

Und zu guter letzt, warum schneidest du die Fehlermeldung, wenn du sie hier postest?
Zergling-new ist offline  
Alt 10.07.2007, 14:00  
Erfahrener Benutzer
 
Registriert seit: 10.02.2004
Beiträge: 132
Pimbolie1979
Standard

1. Das Leerzeichen hatte ich nicht gesehen, da ich nicht den Code des Browser angeschaut hatte (war ich nicht drauf gekommen aber danke für diesen hinweis)

2. mir war so als ob ich es auch ohne echo machen konnte

3. der Rest der Pfhelermeldung war nur der Pfad der Datei, der hatte nicht damit zu tun


ich werde es mal mit Echo ausprobieren
__________________
www.Gastgeber-Deutschland.de
Pimbolie1979 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Russische Namen in Datenbank speichern. HSFighter Datenbanken 2 27.05.2008 21:29
Variablen in Datenbank speichern und auslesen freehawk PHP-Fortgeschrittene 4 16.03.2008 17:22
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
Inhalte in Datenbank speichern Maxi Datenbanken 31 14.09.2007 18:56
Speichern einer Telefonliste mit PHP in einer Datenbank timo_81 PHP Tipps 2008 30 07.09.2007 17:52
Inhalte in einer Datenbank speichern Maxi Datenbanken 5 02.09.2007 21:37
Verkleinertes Bild (Thumb) in Datenbank speichern Da-JS PHP Tipps 2006 17 21.05.2006 17:35
Daten aus Datenbank sinnvoll speichern PHP Tipps 2006 15 02.02.2006 19:54
[Erledigt] Datensätze aus Datenbank speichern und zuweisen PHP Tipps 2005-2 6 11.09.2005 15:38
PHP in eine Datenbank speichern. PHP Tipps 2005 17 03.05.2005 21:13
htmlcode in datenbank speichern PHP Tipps 2005 38 09.04.2005 20:58
Probleme beim speichern in die Datenbank Jojo1 PHP Tipps 2005 14 03.02.2005 14:50
in mysql datenbank speichern. PHP Tipps 2004 9 08.09.2004 21:31
Formular in Mysql Datenbank speichern Anuschka Datenbanken 1 15.08.2004 02:55
Bilder in Datenbank speichern PHP Tipps 2004 11 05.08.2004 10:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
checkbox in datenbank speichern, php checkbox in datenbank speichern, checkboxen in datenbank speichern, checkbox in datenbank speichern php, checkbox zustand speichern, checkboxen php, checked html datenbank, php erkennen ob post eine checkbox war?, checkbox implode, zustand speichern php, html checkbox implode, datenbank checkbox, implode auslesen, checkbox in datenbank, datenbanken zustand, <input type=\checkbox\ implode, speichern checbox array, checkbox in datenbank schreiben, php kontrollkästchen erstellen und in datenbank speichern, sql checkbox auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.