Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Selectbox-Tabelle [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Selectbox-Tabelle


 
Johny
27-05-2005, 10:11 
 
hoi,

ich versuche derzeit, für eine Liste eine Art "zweite Benutzerbefugnisse" zu erstellen, in denen angegeben wird, wer in einer bestimmten Datenbankkategorie lesen/schreiben/löschen/bearbeiten darf.

Zur Generierung der einzelnen Selectboxen, in denen man auswählen kann. wer was machen darf verwende ich eine Funktion cat_auth_list() mit folgendem Inhalt:


//
// Generate Cat Auth List
//
function cat_auth_list($cat_id, $auth_view, $auth_read, $auth_edit, $auth_delete )
{
global $db;

$sql = "SELECT *
FROM " . BOOK_CATEGORIES_AUTH_TABLE . "
WHERE cat_id = '$cat_id'";
$result = $db->sql_query($sql);

if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't get Auth Data", "", __LINE__, __FILE__, $sql);
}

while( $row = $db->sql_fetchrow($result) )
{
if ( $row['auth_view'] )
{
$auth_view_select = '<select name="auth_view">';

if( $row['auth_view'] == $auth_view)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_view_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_view_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_view_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_view_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_view_select .= "</select>";

return $auth_view_select;
}
if ( $row['auth_read'] )
{
$auth_read_select = '<select name="auth_read">';

if( $row['auth_read'] == $auth_read)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_read_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_read_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_read_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_read_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_read_select .= "</select>";

return $auth_read_select;
}
if ( $row['auth_edit'] )
{
$auth_edit_select = '<select name="auth_edit">';

if( $row['auth_edit'] == $auth_edit)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_edit_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_edit_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_edit_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_edit_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_edit_select .= "</select>";

return $auth_edit_select;
}
if ( $row['auth_delete'] )
{
$auth_delete_select = '<select name="auth_delete">';

if( $row['auth_delete'] == $auth_delete)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_delete_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_delete_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_delete_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_delete_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_delete_select .= "</select>";

return $auth_delete_select;
}
}
}



es werden aber nicht mehrere Felder angezeigt, sondern nur eines, was dann auch noch falsch ausgefüllt wird. Da in der Funktion aber eine while-Schleife zum Einsatz kommt, die eigentlich immer erfüllt ist, sollten eigentlich alle Felder angezeigt werden. Die SQL-Query ist korrekt(mit phpMyAdmin getestet)

wer weiß Rat?

 
Kropff
27-05-2005, 10:15 
 
while( $row = $db->sql_fetchrow($result) )
{
if ( $row['auth_view'] )
{
$auth_view_select = '<select name="auth_view">';

ist ja auch kein wunder du überschreibts ja jedesmal $auth_view_select. machs mal so
$auth_view_select. = '<select name="auth_view">';

gruß
peter

 
Johny
27-05-2005, 12:43 
 
ich hab die Funktion mal folgendermaßen verändert:


//
// Generate Cat Auth List
//
function cat_auth_list2($cat_id, $auth_view, $auth_read, $auth_edit, $auth_delete )
{
global $db;

$sql = "SELECT *
FROM " . BOOK_CATEGORIES_AUTH_TABLE . "
WHERE cat_id = '$cat_id'";
$result = $db->sql_query($sql);

if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't get Auth Data", "", __LINE__, __FILE__, $sql);
}

$auth_view_select .= '<select name="auth_view">';

if( $row['auth_view'] == $auth_view)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_view_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_view_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_view_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_view_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_view_select .= "</select>";

return $auth_view_select;

$auth_read_select = '<select name="auth_read">';

if( $row['auth_read'] == $auth_read)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_read_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_read_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_read_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_read_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_read_select .= "</select>";

return $auth_read_select;

$auth_edit_select = '<select name="auth_edit">';

if( $row['auth_edit'] == $auth_edit)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}

$auth_edit_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_edit_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_edit_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_edit_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_edit_select .= "</select>";

return $auth_edit_select;

$auth_delete_select = '<select name="auth_delete">';
if( $row['auth_delete'] == $auth_delete)
{
$selected = "selected='selected'";
}
else
{
$selected = "";
}
$auth_delete_select .= '<option value="0"' . $selected . '>ALL</option>';
$auth_delete_select .= '<option value="1"' . $selected . '>REG</option>';
$auth_delete_select .= '<option value="2"' . $selected . '>MOD</option>';
$auth_delete_select .= '<option value="3"' . $selected . '>ADMIN</option>';
$auth_delete_select .= "</select>";

return $auth_delete_select;
}


es zeigt sich aber keine Veränderung, bis auf das der Wert des einzigen Selectfeldes nun richtig ist.

mfg Johny

 
ankh
27-05-2005, 12:47 
 
der Aufruf von return gibt den definierten Wert zurück und beendet die Ausführung der Funktion.

daher bekommst auch nur eine combobox angezeigt.

 
Johny
27-05-2005, 13:20 
 
gut zu wissen, danke!

dafür ist jetzt aber die Vorbelegung des Selectfeldes flöten gegangen, hab nur alle return durch echo ersetzt :confused:

 
ankh
27-05-2005, 13:44 
 
könnte daran liegen, dass du genau ein mal den Wert für $selected festlegst, und dann alle options damit setzt.

will sagen: entweder setzt du alle auf selected oder keines...

 
Johny
27-05-2005, 14:11 
 
sollte ich also den Variablennamen pro Feld immer anders haben?

 
Johny
27-05-2005, 16:43 
 
ok ich habe mal die select-Variable immer andres benannt. Jetzt wird aber in allen Selectboxen der vierte Wert angezeigt(und nicht wie vorher der erste) :confused:


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:51 Uhr.