Script-solution.de » Community » Support-Board » Foren » Allgemeines » Allgemeines Board » Checkboxen in einen Array laden und wieder ausgeben von Datenbank.
  • Willkommen, Gast!
  • Donnerstag, 17. Mai 2012, 10:28:21
 
Thema: "Checkboxen in einen Array laden und wieder ausgeben von Datenbank." [ Seite 1 ]

Kein neuer Beitrag KingGO , 25.01.2012, 09:04
Beitrag #1   

IP: n/a
Rang: * * * * * O O
Registrierung: 17.05.2007, 20:49
Homepage: http://www.donotart.de
Wohnort: Magdeburg
 

Supporter mit 391 Punkte, 307 Beiträge
Checkboxen in einen Array laden und wieder ausgeben von Datenbank.

Habe zwar was gelesen mit Radio Buttons hier im Forum aber das ist nicht das was ich brauche, daher
ein neues Thema... ;)

Ich habe mal eine Frage wie würdet Ihr das am sinnvollsten lösen.

Zu meinen Problem, ich habe ein Feld in meiner MySQL Tabelle was heißt `rights` in diesem Feld
möchte ich meine Rechte zu den einzelnen Bereichen speichern...

In Form von "user_can access_blaaaa, user_can access_bla2, user_can access_bla3..."

Das ganze in die Datenbank bekommen ist nicht das Große Problem, mein Problem beginnt beim
auslesen, vielleicht habe ich ja auch einen Denkfehler.

Ich habe es so gemacht mit einigen Test's

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
# IF SUBMIT

   # Gibt das Array rights[] von dem Formular aus
   echo'<code><pre>'print_r($_POST['rights']); echo'</pre></code>';

   #Array zu Zeichenkette machen...
   $rights = '';
   foreach ($_POST['rights'as $k => $v) {
      $rights .= "$v, ";
   }

   # $rights hat jetzt die richtige Syntax für das Feld MySQL `rights`


# DB AUSLESEN

    $array_db = array();
    $array_db = explode(", "$rights);

    #print_r($array_db) = (Hat aber alle Werte... Was stört ist die [0])
?>


Code:
1
2
3
4
5
6
7
8
9
10
11
Array
(
    [0] => menu_can_create
menu_can_edit
menu_can_delete
pages_can_view
pages_can_create
pages_can_edit
pages_can_delete

)


So, wie hole ich das jetzt wieder heile aus der Datenbank raus und wie mache ich das mit meinen
Checkboxen? Habe sehr viele Checkboxen und bekomme keine wirklich dynamische Lösung hin.

Erste geht nicht, Zweite geht...
HTML:
1
2
        <?php $value='menu_can_view'; ?><input name="rights[<?php echo $value; ?>]" type="checkbox" <?php if(in_array($value, $array_db)){ echo'checked=checked '; } ?>value="<?php echo $value; ?>" style="vertical-align:text-top" /> <span style="vertical-align:text-top"> :: hat Zugriff</span><br />
        <input name="rights[menu_can_create]" type="checkbox" <?php if(preg_match('/menu_can_create/i', $rights)) echo 'checked=checked'; ?> value="menu_can_create" style="vertical-align:text-top" /> <span style="vertical-align:text-top"> :: darf erstellen</span><br />


Hoffe Ihr konntet mir folgen
LG :-)
Dieser Beitrag wurde insgesamt 3 mal editiert. Das letzte mal 25.01.2012, 09:22 von KingGO.

 
Kein neuer Beitrag Nils , 25.01.2012, 10:20
Beitrag #2   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7620 Punkte, 7386 Beiträge
Hallo,

es wäre besser die Rechte nicht Komma-getrennt in einem Feld zu speichern, sondern eine Tabelle
dafür zu erstellen. Also eine Tabelle mit:
right: die Berechtigung (also z.B. "menu_can_edit";)
user_id: die user-id, die diese hat

Falls es noch weitere Eigenschaften zu einer Berechtigung gibt, solltest du auch dafür eine eigene
Tabelle erstellen und in der eben genannten nur die id davon speichern.
Wenn du nun die Rechte eines Users wissen willst holst du also einfach alle Zeilen für diesen User
aus der Tabelle. Wenn du sie bearbeitest, ist es vermutlich am einfachsten alle für einen Benutzer
zu löschen und neu anzulegen.

Wenn du das so machst, hat sich dein Problem auch erledigt (nicht, dass es nicht lösbar wäre). Denn
dann brauchst du ja nur alle Zeilen eines Users zu holen und für jede ne Checkbox erstellen. Nach
dem Submit löscht du alle Zeilen für den User und gehst über $_POST['rights'] (wenn du es so machst
wie jetzt) und erstellst für jeden Eintrag eine Zeile in der DB.

mfg Nils

 
Kein neuer Beitrag KingGO , 25.01.2012, 11:01
Beitrag #3   

IP: n/a
Rang: * * * * * O O
Registrierung: 17.05.2007, 20:49
Homepage: http://www.donotart.de
Wohnort: Magdeburg
 

Supporter mit 391 Punkte, 307 Beiträge
Danke für die schnelle Antwort.

Ich wollte aber nicht nocht eine extra Tabelle erzeugen für diese Rechte Sache.

Ich speichere die Rechte in der SESSION, wenn die Session in der DB gelöscht wurde = wird der User
automatisch abgemeldet und Probleme damit zu vermeiden.

Dann prüfe ich nur auf die jeweilige Aktion ob in der Session z.b. 'menu_can_create' drine steht...
Wüsstest du trotzdem einen Weg um mein Vorhaben vereinfacht in die Tat umzusetzen Nils?

Ich würde sonst dieses hier umwandeln...
Code:
1
if(isset($_POST['rights']['pages_can_view'])) echo 'checked=checked';


In:
Code:
1
if(in_array('pages_can_view', $array_from_db))


Probiere das nachher mal ist ne ganz schöne Schreibarbeit...bin erst mal einkaufen ;)

Danke derweil :-)

EDIT: Ja so geht es... würde es auch so lassen :-)
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte mal 25.01.2012, 11:43 von KingGO.

n/a n/a 1     ( Anzeige: 1 - 3 , Gesamt: 3 ) n/a n/a
User in diesem Thema: 0 Registrierte, 0 Versteckte, 2 Gäste, 0 Bots
Keine
Thema-Aktionen:

Toggle Ähnliche Themen zu "Checkboxen in einen Array laden und wieder ausgeben von Datenbank."
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  keine doppelarrays 4 2150 03.04.2011, 19:51
Von: Mars
03.04.2011, 21:23
Von: Nils Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  kategorien in anderem Template ausgeben 1 3630 19.02.2011, 16:20
Von: 4Webmaster
20.02.2011, 10:32
Von: Nils Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Kleine Verbesserung bei "Bild hochladen" im A ... 5 16278 27.11.2009, 16:44
Von: Rafioso
09.02.2011, 20:08
Von: Rafioso Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  1.36 auf 1.42 Änderrungen an der Datenbank? 4 4174 15.11.2010, 09:26
Von: windows-club
17.11.2010, 20:06
Von: windows-club Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Versionsvergleich -> Alle Änderungen runterla ... 9 4371 18.10.2010, 17:32
Von: Kompi
19.10.2010, 15:11
Von: Nils Zum letzten Beitrag
  • 0.131923 Sek., 11 DB-Zugriffe, 6.231 MiB
  • Boardsolution v1.43 | © Nils Asmussen 2003-2009
Valid XHTML and CSS © 2003 - 2009 script-solution.de, Powered by Joomla!