SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 09.03.2015, 14:49:01
datalink datalink ist offline
Anfänger
 
Registriert seit: Mar 2015
Alter: 53
Beiträge: 3
vorhergehender und nächster Datensatz bei gleichen Values

Hi,

vielleicht kann mir hier einer weiterhelfen, stehe total auf dem Schlauch.

Ich habe eine Tabelle mit Timestamps. Wenn ein Datensatz aufgerufen wird, soll es einen Link zum vorhergehenden und einen zum nächsten Datensatz geben. Problem ist, daß die Timestamps nicht unique sind und die Links dann nicht mehr stimmen.

Beispiel

Tabelle:
Code:
id  | topicid | copyof | onoff | datum      | headline    | text
1   | 1       |        | 0     | 1418770800 | Headline 1a | Text
2   | 2       |        | 1     | 1418770800 | Headline 2a | Text
6   | 2       |        | 1     | 1418770800 | Headline 3a | Text
7   | 2       |        | 1     | 1418598000 | Headline 2c | Text
8   | 2       |        | 1     | 1419375600 | Headline 2d | Text
9   | 1       |        | 1     | 1418770800 | Headline 1b | Text
10  | 1       |        | 1     | 1418857200 | Headline 1c | Text
11  | 1       |        | 0     | 1418770800 | Headline 1d | Text
12  | 2       | 10     | 1
13  | 2       | 9      | 1
Der aktuell aufgerufene Datensatz hat die ID 6.

Select vorhergehender Datensatz:
PHP-Code:
SELECT DISTINCT d.id AS idd.topicidd.onoffd.datumcopyd.id AS copydidCOALESCE(copyd.datumd.datum) AS ddatum 
FROM datas d 
LEFT JOIN datas copyd ON copyd
.id d.copyof 
WHERE d
.topicid AND d.onoff AND ((d.datum BETWEEN 1418425200 AND 1418943600) OR (copyd.datum BETWEEN 1418425200 AND 1418943600)) AND d.id NOT IN (6) AND ((d.datum 1418770800 OR copyd.datum 1418770800) OR ((d.datum 1418770800 OR copyd.datum 1418770800) AND d.id 6)) 
ORDER BY ddatumid ASC LIMIT 1 
Select nächster Datensatz:
PHP-Code:
SELECT DISTINCT d.id AS idd.topicidd.onoffd.datumcopyd.id AS copydidCOALESCE(copyd.datumd.datum) AS ddatum 
FROM datas d 
LEFT JOIN datas copyd ON copyd
.id d.copyof 
WHERE d
.topicid AND d.onoff AND ((d.datum BETWEEN 1418425200 AND 1418943600) OR (copyd.datum BETWEEN 1418425200 AND 1418943600)) AND d.id NOT IN (6) AND ((d.datum 1418770800 OR copyd.datum 1418770800) OR ((d.datum 1418770800 OR copyd.datum 1418770800) AND d.id 6)) 
ORDER BY ddatumid DESC LIMIT 1 
Plan:
Die vor - zurück Links sollten mir die Datensätze mit den IDs 12 - 13 - 6 - 2 - 7 (in dieser Reihenfolge) liefern.

Ergebnis:
Der Link vorhergehender Datensatz klappt. Außer beim ersten Datensatz, da springt es zum zweiten - Result bei Aufruf der ID 12 sollte aber leer sein.
Der Link nächster Datensatz sprint immer zum letzten Datensatz (ID 7), egal wo ich gerade bin.


Hat jemand eine Idee? Ich arbeite übrigens mit einer SQLite DB, falls das eine Rolle spielt.
Mit Zitat antworten
  #2  
Alt 09.03.2015, 19:02:35
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: vorhergehender und nächster Datensatz bei gleichen Values

Hi,

ich würde diesen Pager über ein Array in der Scriptsprache lösen.
Z.B. Alle möglichen Ergebnisse jedesmal liefern und per Linkid das jeweilige
Ergebnis ausgeben.
12 - 13 - 6 - 2 - 7 =>
1=>12,2=>13,3=>6,4=>2,5=>7

Damit ist die Ergebnismenge egal und das Script gibt nur vorherigen Link bei ID>1
und nächsten Link nur bei ID<count(ARRAY)

MfG

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #3  
Alt 09.03.2015, 21:34:03
datalink datalink ist offline
Anfänger
 
Registriert seit: Mar 2015
Alter: 53
Beiträge: 3
AW: vorhergehender und nächster Datensatz bei gleichen Values

Hallo Ckaos,

ja so hatte ich das ursprünglich mal. Fand es aber nicht so schön wegen den vor/zurück Links alle Datensätze aus der DB zu holen.

Kann man die Abfrage (Deinen Vorschlag) nicht irgendwie begrenzen? Die Problemstelle ist ja Folgende:
PHP-Code:
WHERE ... (datum 1418770800 OR (datum 1418770800 AND id 6)) 
(JOIN hab ich mal rausgenommen)
Im Falle meines ersten Datensatzes führt das dazu, daß datum > TS nicht gefunden wird (= richtig, weil es der erste ist) aber dann nach datum = TS und ID > 6 gesucht wird - was im Egebnis aber der zweite Datensatz ist.

Eine schöne Lösung wäre, wenn ich als Result alle Datensätze mit datum = 1418770800 und nur die ersten mit datum > 1418770800 abfragen könnte. Also wenn es 1418770801 gibt, bekomm ich die geliefert und 1418770802 nicht mehr. Geht sowas? Kann man dafür irgendwas mit min() bauen?
Mit Zitat antworten
  #4  
Alt 11.03.2015, 19:06:15
datalink datalink ist offline
Anfänger
 
Registriert seit: Mar 2015
Alter: 53
Beiträge: 3
AW: vorhergehender und nächster Datensatz bei gleichen Values

Lösung mit einem Query hab ich nicht gefunden. Hab's jetzt mit 2 Queries gemacht.
PHP-Code:
$next WHERE datum > (Timestamp aktueller Datensatz)
$query WHERE datum $next OR datum = (Timestamp aktueller Datensatz
und dann die ID nach dem aktuellen Datensatz aus dem Query-Array holen. Damit kann ich leben :-)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem!! In XAMPP eine Datenbank importieren erniedd MySQLi/PDO/(MySQL) 2 31.03.2009 15:24:26
"Verschachtelte" Selects über 3 Tabellen Mattes1001 MySQLi/PDO/(MySQL) 6 09.06.2008 16:22:46
Die zwei besten Werte pro Land frank2342 MySQLi/PDO/(MySQL) 4 14.05.2008 16:30:44
Leeres Resultat? Sk3y MySQLi/PDO/(MySQL) 10 13.11.2006 18:57:40
Menüstruktur aus Datenbank rekursiv auslesen daf555 PHP Entwicklung und Softwaredesign 3 26.02.2006 13:04:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:16:09 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt