Seite 6 von 8

Verfasst: 04.02.2006 13:37
von dogsandfun
Danke Klaus

LG Dirk

Verfasst: 04.02.2006 20:06
von Dominik Müller
Wo kann ich mir denn die Datenbank ohne Fehler downloaden?

Verfasst: 04.02.2006 20:09
von dogsandfun
Der Link hier funktioniert noch - allerdings musst du die Dateien entsprechend dem Therad noch etwas ergänzen, dann gehts recht gut

LG Dirk

Verfasst: 10.02.2006 22:56
von Dirk F.
Hallo,
habe auch die DB eingebaut und die hier vorgestellten Veränderungen vorgenommen.
Allerdings kann ich noch nicht auf weitere Seiten vorblättern. Mehr als 15 Einträge werden nicht angezeigt.
Wo wird dies eingestellt/abgefragt?

Die Sortierung über die Tabellenüberschrift (Titel, Genre, ...) funzt auch nicht.
Das ist allerdings das kleine Problem.

Irgendwie scheint er die Gesamtzahl nicht richtig zu haben oder so.
Damit mir meine Einträge alle aufgelistet werden hatte ich erstmal

$max_results = ( !$max_results ) ? '15' : $max_results;
in
$max_results = ( !$max_results ) ? '100' : $max_results;
geändert.

Aber die Gesamtseitenzahl erscheint ja auch nicht.

Danke schon mal
Dirk F.

Verfasst: 11.02.2006 13:56
von SpectrumP
Hallo,
Dirk F. hat geschrieben:Hallo,
habe auch die DB eingebaut und die hier vorgestellten Veränderungen vorgenommen.
Allerdings kann ich noch nicht auf weitere Seiten vorblättern. Mehr als 15 Einträge werden nicht angezeigt.
Wo wird dies eingestellt/abgefragt?
Ich habe mittlerweile diverse Änderungen gemacht, bin daher nicht sicher, ob es nur daran lag, aber wahrscheinlich fehlt Dir oben
einfach die Abfrage nach dem Zustand der Übergabevariable:

Code: Alles auswählen

 $max_results = ( isset($HTTP_POST_VARS['max_results']) ) ? $HTTP_POST_VARS['max_results'] : $HTTP_GET_VARS['max_results'];

Füge das mal gleich im Anfangsbereich ein.


Dirk F. hat geschrieben:Hallo,

Die Sortierung über die Tabellenüberschrift (Titel, Genre, ...) funzt auch nicht.
Das ist allerdings das kleine Problem.

Irgendwie scheint er die Gesamtzahl nicht richtig zu haben oder so.
Damit mir meine Einträge alle aufgelistet werden hatte ich erstmal

$max_results = ( !$max_results ) ? '15' : $max_results;
in
$max_results = ( !$max_results ) ? '100' : $max_results;
geändert.

Aber die Gesamtseitenzahl erscheint ja auch nicht.

Danke schon mal
Dirk F.
Auch hier, wird vielleicht nur die Angabe über die angezeigte Seite fehlen:

Code: Alles auswählen

$page = ( isset($HTTP_POST_VARS['page']) ) ? $HTTP_POST_VARS['page'] : $HTTP_GET_VARS['page'];
Wenn es dann immer noch nicht geht, sg Bescheid.
Bei mir läuft es alles, ich kann dann weiter nachschauen, was noch fehlen könnte.

Viele Grüße
Klaus

Verfasst: 11.02.2006 14:29
von Dirk F.
Hallo Klaus,
danke erst einmal für deine Mühe.
Leider läuft es auch mit den Änderungen nicht.
Habe meine database.php mal hochgeladen.
hier

Deine Änderungen habe ich gleich zum Anfang eingefügt (Zeile 18/19 oder so)

Bin dir schon mal jetzt dankbar :-D
Gruß
Dirk F.

Verfasst: 11.02.2006 15:10
von SpectrumP
Dirk F. hat geschrieben:Hallo Klaus,
danke erst einmal für deine Mühe.
Leider läuft es auch mit den Änderungen nicht.
Habe meine database.php mal hochgeladen.
hier

Deine Änderungen habe ich gleich zum Anfang eingefügt (Zeile 18/19 oder so)

Bin dir schon mal jetzt dankbar :-D
Gruß
Dirk F.
Hi, here we go :-) :

Du hast zwar meine Zeile eingefügt, weiter unten wird es aber wieder überschrieben:

Code: Alles auswählen

 Zeile 41: $page = isset($HTTP_POST_VARS['page']); 
Dabei kommt als Ergebnis immer 1 raus . Also das löschen.

Für das Blättern, vor zurück, habe ich noch folgendes geändert, damit es funktioniert:


Finde:

Code: Alles auswählen

   
        if ($search_results > 0)
        {
                $previous_page_results = $search_results - $search_maximum;
                $previous_page = '<a href="'. $title_sort .'&sort='. $sort .'&search_results='. $previous_page_results . '">'. $lang['Previous'] .'</a>';
        }
        else
        {
                $previous_page = $lang['Previous'];
        }

        if ($search_results + $search_maximum < $total[0])
        {
                $next_page_results = $search_results + $search_maximum;
                $next_page = '<a href="'. $title_sort .'&sort='. $sort .'&search_results='. $next_page_results . '">'. $lang['Next'] .'</a>';
        }
        else
        {
                $next_page = $lang['Next'];
        }
     
und ersetze mit:

Code: Alles auswählen

         if ($search_results > 0)
        {
                $previous_page_results = $search_results - $search_maximum;
				$_page = $page - 1;
                $previous_page = '<a href="'. $title_sort .'&sort='. $sort .'&search_results='. $previous_page_results . '&page='.$_page.'">'. $lang['Previous'] .'</a>';
        }
        else
        {
                $previous_page = $lang['Previous'];
        }
   
        if ($search_results + $search_maximum < $total[0])
        {

				$next_page_results = $search_results + $search_maximum;
				$_page = $page + 1;
                $next_page = '<a href="'. $title_sort .'&sort='. $sort .'&search_results='. $next_page_results . '&page='.$_page. '">'. $lang['Next'] .'</a>';
        }
        else
        {
                $next_page = $lang['Next'];
        }


Zum Sortieren:

Die Sortierfunktion braucht den Sort String, dazu
musst Du die Variable $sort irgendwo am Anfang setzen per:

Code: Alles auswählen

 $sort = ( isset($HTTP_POST_VARS['post']) ) ? $HTTP_POST_VARS['post'] : $HTTP_GET_VARS['sort'];
Viele Grüße
Klaus

Verfasst: 11.02.2006 16:11
von Dirk F.
Hallo Klaus,
juhu - na ja fast juhu :-)
Sortieren klappt wunderbar, vorblättern allerdings erst, wenn ich das Button 2x anklicke. Erst dann wird die Seite 2 übergeben. Ganz unten erscheint Seite 1 von - und da fehlt die Gesamtseitenangabe.

Und weil unsere Beziehung so prima klappt (ja ja, den kleinen Finger gereicht :-D) - kann man die Datenbankzugriffe noch so einstellen, dass der User seinen Einträge selbst nacheditieren kann? Im Adminbereich auf USER gestellt, erlaubt es ja jedem User Änderungen vorzunehmen.

Aber wäre nicht so problematisch für mich, nur eben schön :-)

Danke :-)

die geänderte Datei liegt wieder wie oben

Verfasst: 11.02.2006 16:51
von Dirk F.
das editieren nur für den User müsste doch eigentlich so gehen, oder

$auth_edit = $userdata['user_level'] == $database_config['allow_edit'] || $userdata['user_level'] == ADMIN || ($database_config['allow_edit'] == all && $userdata['user_id'] != ANONYMOUS) || $database_entries['user_id']==$userdata['user_id'];

tut es aber nicht *grübel*

Verfasst: 13.02.2006 15:21
von SpectrumP
Dirk F. hat geschrieben:das editieren nur für den User müsste doch eigentlich so gehen, oder

$auth_edit = $userdata['user_level'] == $database_config['allow_edit'] || $userdata['user_level'] == ADMIN || ($database_config['allow_edit'] == all && $userdata['user_id'] != ANONYMOUS) || $database_entries['user_id']==$userdata['user_id'];

tut es aber nicht *grübel*
Hi Dirk,

Die Variable $database_entries ist nicht definiert. $database_config wird durch die Einbindung der Datei "functions_database.php" gesetzt (sieh Dir die ersten 19 Zeilen des Codes dort an) und somit kannst Du auf die Eintträge zurückgreifen.

Die einzelnen Einträge in der Datenbank haben aber verschiedene
user_id's , je nachdem, wer den Eintrag gemacht hatte. Falls Du als Admin Änderungen vorgenommen hast, steht dann Deine User ID in dem Eintrag.

Ich habe es für meinen Anwendungsfall so verändert:
Jeder User darf neue Einträge machen. Wenn er einen neuen Eintrag macht, wird seine User id in einem extra Feld des Datenbank Eintrags mit gespeichert. Wie gesagt, die Datenbank macht das zwar im Prinzip schon mit dem user_id Feld, wenn man dann aber als Administrator einen Eintrag macht, ändert sich damit auch die User ID.
Bei mir existiert also ein User, dem der Datenbankeintrag sozusagen gehört und trotzdem kann der Admin Änderungen vornehmen, die dann auch unter seiner ID verzeichnet werden.
Als Administrator kann er auch den entsprechenden verantwortlichen User
des Eintrags ändern.

Wenn dann sich dann ein User die Datenbank ansieht, bekommt er bei seinen eigenen Einträgen auch die Möglichkeit, diese zu modifizieren.

Ich habe dazu folgendes hinter die ganzen "$auth_" variablen gesetzt:

Code: Alles auswählen

// START Erlauben von Editierung User ID die gleiche wie im Feld 16a eingetragen ist

	    $sql = "SELECT field16a FROM ". DATABASE_TABLE . " WHERE id = ". intval($HTTP_GET_VARS[id]); 
			        if ( !$result = $db->sql_query($sql) )
					{
    	                message_die(GENERAL_ERROR, 'Could not retrieve value of field16a', '', __LINE__, __FILE__, $sql);	
					}
						$row = $db->sql_fetchrow($result);
						$field16a = $row['field16a'];
						$band_admin =  ($field16a == $userdata['user_id']) ?  1 :0;
						$auth_edit = $auth_edit || $band_admin;
// END Erlauben von Editierung wenn User ID die gleiche wie im Feld 16a eingetragen ist


Bei der Anzeige der Datenbankeinträge habe ich dann noch eingefügt/verändert:


Code: Alles auswählen

				$field16a = $row['field16a'];  // enthält Band_Admin_ID

/// START Anzeigen von Ändern / Löschoption wenn User ID die gleiche wie im Feld 16a eingetragen ist
			$band_admin =  ($field16a == $userdata['user_id']) ?  1 :0;
/// END Anzeigen von Ändern / Löschoption wenn User ID die gleiche wie im Feld 16a eingetragen ist


                $template->assign_block_vars('entries', array(
                        'ROW_CLASS' => $row_class,
                        'L_EDIT' => ( $auth_edit || $band_admin ) ? $lang['Edit'] : '',

Ich hoffe Du kannst damit vielleicht etwas anfangen. Wenn Du Probleme hast, melde Dich.

Klaus