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

datenbank neu anlegen mit foreach

wessei

Neues Mitglied
hallo hab folgendes problem...

will mir eine datenbank erstellen mit hilfe eines php setups, funktioniert auch wunderbar, aber da ich etwas schreibfaul bin und nicht jede zeile extra schreiben will hab ich mir gedacht es geht auch mit einer foreach schleife.

datenbank rechte:

PHP:
<?php
    $sql = 'CREATE TABLE `rechte` ('
            . ' `rechte_ID` INT AUTO_INCREMENT NOT NULL, '
            . ' `rechte_NAME` VARCHAR(30) NOT NULL, '
            . ' PRIMARY KEY (`rechte_ID`),'
            . ' UNIQUE (`rechte_NAME`)'
            . ' )';
?>

funktioniert auch nur dan kommt es zum schreiben von der userdatenbank da scheitert es.

PHP:
<?php
    $rechte_array_ID = array();
    $sql = "SELECT
                    *
            FROM
                    rechte
           ";
    $result_rechte = mysql_query($sql) OR die("<pre><br>".$sql."</pre><br>".mysql_error());
    $row_rechte = mysql_fetch_assoc($result_rechte);
    $rechte_array_ID[] = $row_rechte['ID'];
    $sql = 'CREATE TABLE `USER` ('
            . ' `USER_ID` INT AUTO_INCREMENT NOT NULL, '
            . ' `USER_NAME` VARCHAR(30) NOT NULL, '
            foreach ($rechte_array_ID as $rechte_foreach){
                . ' `rechte_ID_'.$rechte_foreach.'` VARCHAR(30) NOT NULL, '
            }
            . ' `USER_ARRAY_IP` VARCHAR(15) NULL, '
            . ' `USER_ARRAY_ZEIT` INT NOT NULL DEFAULT \'0\', '
            . ' PRIMARY KEY (`USER_ID`)'
            . ' )';
?>

da es mehrere rechte zu vergeben gibt und jeder user mehr als 1 recht haben kann will ich mir die rechte einzeln speichern und in eine eigene tabelle schreiben.
habs schon versucht die rechte mit der id als array in die datenbank schreiben aber leider funktioniert das nicht so wie es sein soll.
will dies dan später bei anderen datenbanken auch anwenden.

weis da jemand eine besseres lösung oder findet da jemand den fehler in meiner schreibweise?

mfg. wessei
 
Werbung:
Ich glaube Du solltest eher das Datenbankmodell überdenken statt dieses Script zu verwenden. Was wäre denn, wenn ein zusätzliches Recht hinzukommt? Dann müsstest Du an anderer Stelle berücksichtigen eine zusätzliche Spalte in der User-Tabelle zu ergänzen. Das wäre zuviel Aufwand für eine Sache die Du komplett im Datenbankmodell abbilden kannst.

Empfehlung: Ergänze eine Tabelle user_rechte in der Du die Rechte des Nutzers abbildest. Aufbau: userid, rechteid - mehr nicht.
 
bin schon seit 2 wochn am überdenken aber ich glaube du hast recht.

muss ich doch etwas mehr schreiben ;-)

dankeschön
mfg. wessei
 
Werbung:
Mehr Schreiben? Höchstens in einem evtl. vorhandenen Installationsscript. Alles andere sind nur etwas komplexere Datenbankstatements, was das Ganze übrigens auch performanter macht als solche PHP-Konstrukte.
 
Zurück
Oben