mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 19.03.2024 06:57 Benutzername: Passwort: Auto-Login

Thema: [PHP] Letztes Bild suchen und dann Link nicht mehr anzeigen? vom 22.05.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Letztes Bild suchen und dann Link nicht mehr anzeigen?
Autor Nachricht
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 22.05.2008 23:08
Titel

[PHP] Letztes Bild suchen und dann Link nicht mehr anzeigen?

Antworten mit Zitat Zum Seitenanfang

Hey ihr,


folgendes Problem. Aus einer Datenbank werden seitenweise 6 Artikel ausgelesen. Nun soll unten drunter ein Link zur folgenden Seite (mit den nächsten 6 Artikeln) angezeigt werden. Aber eben nur solange, bis auch Daten vorhanden sind.

Ich habe jetzt folgenden Ansatz, nur irgendetwas stimmt nicht, es funktioniert jedenfalls nicht:
Code:

$row = mysql_fetch_array(...);

$lastArtikel = end($row[ID]);
            
            // Überprüfen ob nicht erste Seite, dann "previous page" Link anzeigen
            if($page>'1')
            {
               echo " <a href=\"#\"><img src=\"imghandler_pageback.png\" alt=\"Eine Seite zurück\" width=\"20\" height=\"20\" /></a> ";
            }
            // aktuelle Seite anzeigen
            echo "Seite $page ";
            // Überprüfen ob letzter Artikel angezeigt wird, wenn nicht, "next page" Link anzeigen
            if(!ereg($lastArtikel))
            {
               echo " <a href=\"#\"><img src=\"imghandler_pagenext.png\" alt=\"Eine Seite vorwärts\" width=\"20\" height=\"20\" /></a>";
            }


Oder habt ihr einen grundsätzlich sinnvolleren Ansatz? Man sollte wohl auch dazu sagen, dass die ID aus der mySQL DB an sich nicht durchgängig ist, da es versch. Bereiche gibt.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 22.05.2008 23:28
Titel

Antworten mit Zitat Zum Seitenanfang

Du setzt end() nicht korrekt ein, und wenn du das tun würdest dann würdest du trotzdem
nicht den Wert erhalten den du erwartest. end() erwartet als Parameter ein Array, und ist
ID eine Konstante?

Die höchsten Wert der Spalte id könntest du z.b. im Select per MAX erreichen.

Code:
SELECT spalte1, spalte2, MAX(id) as ....


Das müßtest du dann aber in einem extra Select Statement machen.

In der Regel ermittelt man Werte für eine Pagination in der Art:

Code:
SELECT COUNT(id) as count FROM tabelle


So erhältst du die Gesamtanzahl der vorhandenn Beiträge.

Diese teilst du durch die Anzahl von zu selektierenden Reihen, also sechs, somit
erhältst du die Anzahl an vorhandenen Seiten...


Zuletzt bearbeitet von m am Do 22.05.2008 23:41, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 00:05
Titel

Antworten mit Zitat Zum Seitenanfang

Wunderbar, so funktioniert es bestens!

Code:
SELECT COUNT(id) as count FROM tabelle



Danke m!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 23.05.2008 02:45
Titel

Antworten mit Zitat Zum Seitenanfang

Dein Script funktioniert. OK, dann könntest du es so lassen.
Aber für's nächste Mal:
Die POSIX-kompatiblen RegExp-Funktionen sind bei weitem langsamer als die Perl-kompatiblen.
Arbeite also besser mit den preg_irgendwas()-Funktionen als mit den ereg_irgendwas()-Funktionen.

und dann gibt es noch Fehler in dem Script:
Code:
if($page>'1')

Du hast die 1 in Quotes gesetzt. Du prüfst hier, ob der Inhalt der Variablen $page kleiner ist als der String 1 und nicht die Zahl 1. Laß die Single-Quotes hier weg.

und:
Code:
$row[ID]

Hier verwendest du eine nicht definierte Konstante. Nur weil es diese nicht gibt, nimmt PHP einfach mal an, daß du statt dieser Konstante, das Element des assoziativen Arrays $row meinst.
Wenn das error_reporting des Servers strenger eingestellt wird, bekommst du an dieser Stelle eine unschöne Warnung.
Richtig wäre also Folgendes:
Code:
$row['ID']


EDIT:
Übrigens ist "funktioniert jedenfalls nicht" keine brauchbare Fehlerbeschreibung.
Wenn das nächste Mal ein Problem auftritt, dann beschreib bitte genau, was passiert bzw. was nicht passiert und wenn es eine Fehlermeldung geben sollte, dann poste diese ebenfalls.


Zuletzt bearbeitet von rob am Fr 23.05.2008 02:53, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 09:10
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Dein Script funktioniert. OK, dann könntest du es so lassen.
Aber für's nächste Mal:
Die POSIX-kompatiblen RegExp-Funktionen sind bei weitem langsamer als die Perl-kompatiblen.
Arbeite also besser mit den preg_irgendwas()-Funktionen als mit den ereg_irgendwas()-Funktionen.


Danke, gut zu wissen! Ich habs zwar jetzt im aktuellen Script gar nicht mehr drin, aber falls ich mal wieder so was brauche... *zwinker*

rob hat geschrieben:

und dann gibt es noch Fehler in dem Script:
Code:
if($page>'1')

Du hast die 1 in Quotes gesetzt. Du prüfst hier, ob der Inhalt der Variablen $page kleiner ist als der String 1 und nicht die Zahl 1. Laß die Single-Quotes hier weg.


Stimmt, ja. Flüchtigkeitsfehler, da war vor längerem noch ein String und ich habs dann auf die 1 abgewandelt.

rob hat geschrieben:

Code:
$row[ID]

Hier verwendest du eine nicht definierte Konstante. Nur weil es diese nicht gibt, nimmt PHP einfach mal an, daß du statt dieser Konstante, das Element des assoziativen Arrays $row meinst.
Wenn das error_reporting des Servers strenger eingestellt wird, bekommst du an dieser Stelle eine unschöne Warnung.
Richtig wäre also Folgendes:
Code:
$row['ID']


Sorry, das versteh ich jetzt nicht so ganz. $row[ID] ist ein Array (ausgelesen per mysql_fetch_array(); aus einer DB). Damit brauche ich dann doch keine Hochkommatas?

rob hat geschrieben:

Übrigens ist "funktioniert jedenfalls nicht" keine brauchbare Fehlerbeschreibung.
Wenn das nächste Mal ein Problem auftritt, dann beschreib bitte genau, was passiert bzw. was nicht passiert und wenn es eine Fehlermeldung geben sollte, dann poste diese ebenfalls.


Hm... ja *zwinker*
Und nochwas: rob, was wär das Forum nur ohne dich? * Applaus, Applaus * * Applaus, Applaus * * Applaus, Applaus *
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Fr 23.05.2008 09:18
Titel

Antworten mit Zitat Zum Seitenanfang

Smooth-Graphics hat geschrieben:

Sorry, das versteh ich jetzt nicht so ganz. $row[ID] ist ein Array (ausgelesen per mysql_fetch_array(); aus einer DB). Damit brauche ich dann doch keine Hochkommatas?


doch brauchst du.
falls du nach einem index suchst, musst du natürlich keine klammern setzten, allerdings müsste es dann eine zahl sein.

willst du aber einem wert haben, der einem string zugeordnet ist, musst du klammern einfügen.
das was du machst, ist auf eine konstante zurückgreifen
Code:

$a['a'] = 'hallo';

echo $a['a']; //hallo
echo $a[0]; //hallo

// Konstante:

define ('TEST', 'a');

echo $a[TEST]; // hallo


Zuletzt bearbeitet von choise am Fr 23.05.2008 09:19, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 23.05.2008 09:25
Titel

Antworten mit Zitat Zum Seitenanfang

PHP Manual:
Zitat:
Falls Sie eine undefinierte Konstante verwenden, nimmt PHP an, dass Sie den Namen der Konstanten selbst meinen, so als ob Sie sie als einen string (CONSTANT vs "CONSTANT") aufgerufen hätten. Falls das passiert, wird Ihnen ein Fehler vom Typ E_NOTICE ausgegeben. Lesen Sie ebenfalls den entsprechenden Manualabschnitt, der erklärt, warum $foo[bar] falsch ist (zumindest solange Sie nicht zuvor bar mittels define() als Konstante definiert haben).


und hier lesen: http://www.php-faq.de/q/q-fehler-konstante.html
Dein Zugriff auf's Array dauert so 4 bis 5 mal länger und das eventuell ausgebene E_NOTICE sieht für die User natürlich unschön aus. Außerdem könnte es sogar dein Script daran hindern, korrekt weiterzulaufen. Danach könntest du weder eine Session starten, noch Header zum Client senden, da ja bereits eine Ausgabe erfolgt ist.
  View user's profile Private Nachricht senden
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 09:38
Titel

Antworten mit Zitat Zum Seitenanfang

Achso, okay... *Thumbs up!* * Ich bin unwürdig *
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen javascript - div/bild bei mouseover neben link anzeigen
Bild anzeigen und verstecken sowie ändern mit einem Link
Unteranimatin im Movie -> letztes Bild auf Hauptbühne
Wie springt letztes Bild einer GIFani zu index.htm?
Inhalt Anzeigen Mit Link
grafik hinter link anzeigen...
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.