Patrick: bestimmte Datensätze die per script ermittelt werden ausgeben

Hallo,

ich möchte aus einer Datenbank bestimmte Datensätze in einer Galerie anzeigen lassen.

Es sollen pro Galerie Seite 28 Datensätze angezeigt werden und dann wenns mehr sind eine neue Seite erstellt werden.

Im ersten teil des scripts wird ermittelt welche Datensätze für die Anfrage in frage kommen. Es werden die IDs der Datensätze ermittelt.

Mein Problem ist jetzt wie ich 28 dieser IDs in die SELECT anfrage bekomme und dann fals mehr da sind die IDs die danach kommen in der anderen Seite abgefragt werden.

Wenn jetzt z.B. 46 Datensätze dafür in frage kommen müssen dann auf der ersten seite davon 28 Datensätze geöffnet werden und die anderen 18 dann auf Seite 2.

Wie kann ich dies umsetzen??

Mit freundlichen Grüßen,
Patrick

  1. select * from tabelle order by id limit 0,28

    1. Hallo

      select * from tabelle order by id limit 0,28

      Ja aber dann werden 28 Datensätze geöffnet aber nicht die die ich will. z.B. id 1,4,8,10,15 wie mache ich das?

      Mit freundlichen Grüssen,
      Patrick

      1. select tabelle2.* from tabelle1,tabelle2 where tabelle1.ref_id=tabelle2.id and
        (deine where klausel wo du die 48 datensätze ermittels) order by id limit 0,28

        gruss chris

  2. Hallo Patrick,

    Es sollen pro Galerie Seite 28 Datensätze angezeigt werden und dann wenns mehr sind eine neue Seite erstellt werden.

    blöde Frage am Rande: warum ausgerechnet 28?

    Im ersten teil des scripts wird ermittelt welche Datensätze für die Anfrage in frage kommen. Es werden die IDs der Datensätze ermittelt.

    wie werden die IDs ermittelt? Nach welchen Kriterien? Warum werden die nicht erst beim Abfragen der DB ermittelt (was imho wesentlich sinnvoller ist)?

    Mein Problem ist jetzt wie ich 28 dieser IDs in die SELECT anfrage bekomme und dann fals mehr da sind die IDs die danach kommen in der anderen Seite abgefragt werden.

    Das wirst du wohl etwas umständlicher machen müssen, etwa so:
    SELECT ... FROM ... WHERE id=1 OR id=3 OR id=10 ... OR id=100 ORDER BY irgendwas LIMIT 0,28
    allerdings dürfte das (v.a. wenn es mehr Datensätze werden) sehr lange Querys geben

    Wenn jetzt z.B. 46 Datensätze dafür in frage kommen müssen dann auf der ersten seite davon 28 Datensätze geöffnet werden und die anderen 18 dann auf Seite 2.
    Wie kann ich dies umsetzen??

    das dürfte wie auf http://www.dclp-faq.de/q/q-mysql-seitenweise.html beschrieben funktionieren - nur dass du eben dein WHERE-Zeug mitschleppen musst.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. ###################
      Das wirst du wohl etwas umständlicher machen müssen, etwa so:
      SELECT ... FROM ... WHERE id=1 OR id=3 OR id=10 ... OR id=100 ORDER BY irgendwas LIMIT 0,28
      allerdings dürfte das (v.a. wenn es mehr Datensätze werden) sehr lange Querys geben

      ####################

      schmann.. man muss nur beide tabellen verknüpfen und dann suchen.

      wie select tabelle2.* from tabelle1,tabelle2 where tabelle1.ref_id=tabelle2.id and tabelle1.bezeichnung='test' order by id limit 0,28

      gruss chris

      1. Hallo chris,

        ###################
        [...]

        warum lässt du nicht einfach die Zitatzeichen vor dem was ich geschrieben habe?

        schmann.. man muss nur beide tabellen verknüpfen und dann suchen.

        welche beiden Tabellen? soweit ich das verstanden habe, gibt es eine Tabelle in der die Daten drinstehen und von diesen Daten wird - wie auch immer - die ID ermittelt. Zu diesen IDs will Patrick die Daten haben, nur nicht alle sondern die der Datensätze 0-27.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. *gggg* :)
          wegen seiner frage auf meine antwort
          bin ich von zwei tabellen ausgegangen:
          --------------------------------------
          meine erste antwort:
          select * from tabelle order by id limit 0,28

          seine darauf:
          Ja aber dann werden 28 Datensätze geöffnet aber nicht die die ich will. z.B. id 1,4,8,10,15 wie mache ich das?

          denn er hat dann ja die daten sätze schon ermittelt und müsste nur noch limit anhängen.

          oder verstehe ich das jetzt falsch *lol* das kann jetzt natürlich auch sein *gg*

          gruss chris ;)

        2. Hallo

          schmann.. man muss nur beide tabellen verknüpfen und dann suchen.
          welche beiden Tabellen? soweit ich das verstanden habe, gibt es eine Tabelle in der die Daten drinstehen und von diesen Daten wird - wie auch immer - die ID ermittelt. Zu diesen IDs will Patrick die Daten haben, nur nicht alle sondern die der Datensätze 0-27.

          ja du hast es richtig verstanden. die daten sin in einer tabelle.

          nur irgendwie versteht mich keiner richtig wie ich da ganze gerne hätte.

          also es kommt ein model auf meine seite und hätte gern eine sedcard bei mir. dann klickt das model auf anmelden und meldet sich erstmal mit benutzernamen, passwort, geschlecht und email adresse an. für diese daten wird direkt ein datensatz in meiner db erstellt. da dies nicht alle daten sind die man für eine sedcard brauch muss das model sich dann noch die anderen daten nach der anmeldung angeben. es loggt sich mit seinen daten ein und ergänzt diese daten. diese daten muss dann das model nach der anmeldung im userbereich angeben weil ich es doof finde direkt alle daten anzugeben. bis dahin sind die daten unvollständig. und halt diese datensätze sollen in der galerie nicht erscheinen. diese müssen herausgefiltert werden. es gibt bestimmt mal welche die sich aus spaß anmelden und die daten unvollständig lassen und das würde dann doof in der galerie ausehen.

          wie mache ich das jetzt? freue mich über jede antwort denn an diesem prob sitze ich schon sehr lange.

          Mit freundlichen Grüssen,
          Patrick

          1. Hallo Patrick,

            bis dahin sind die daten unvollständig. und halt diese datensätze sollen in der galerie nicht erscheinen. diese müssen herausgefiltert werden.

            ich würde zwar gleich alle Daten erforderlich machen, aber gut - du musst im WHERE-Teil eben abfragen, ob das entsprechende Feld leer ist:
            SELECT ... FROM ... WHERE datenfeld1 != '' AND datenfeld2 != '' ... AND datenfeldn != '' ORDER BY LIMIT 0,28

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            1. Hallo

              bis dahin sind die daten unvollständig. und halt diese datensätze sollen in der galerie nicht erscheinen. diese müssen herausgefiltert werden.
              ich würde zwar gleich alle Daten erforderlich machen, aber gut - du musst im WHERE-Teil eben abfragen, ob das entsprechende Feld leer ist:
              SELECT ... FROM ... WHERE datenfeld1 != '' AND datenfeld2 != '' ... AND datenfeldn != '' ORDER BY LIMIT 0,28

              ja ok aber wie bekomme ich das in eine while schleife rein und wie weiß seite 2 welche datensätze schon auf seite 1 angezeigt wurden??
              es sind insgesammt 18 felder die überprüft werden müssen.

              Mit freundlichen Grüssen,
              Patrick

              1. Hallo Patrick,

                ja ok aber wie bekomme ich das in eine while schleife rein

                wieso in eine while-Schleife?

                und wie weiß seite 2 welche datensätze schon auf seite 1 angezeigt wurden??

                in dem du der Folgeseite einen neuen Startwert mitgibst also, z.B. wenn auf der 1. Seite die Datensätze 0-27 angezeigt werden (0-27 _nach_ dem aussortieren der "ungültigen") übergibst du der zweiten Seite einfach ein datei.php?start=28 und machst dann in deinem Query
                SELECT ... LIMIT mysql_escape_string($_GET['start']),28 und fertig.

                es sind insgesammt 18 felder die überprüft werden müssen.

                dann musst du bei WHERE eben 18mal feldname != '' schreiben oder mach es so wie wahsaga es vorschlägt (eine Spalte in der drinsteht ob komlett oder nicht) - den Vorschlag finde ich besser.

                Grüße aus Nürnberg
                Tobias

                --
                Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
          2. hi,

            nur irgendwie versteht mich keiner richtig wie ich da ganze gerne hätte.

            nicht unbedingt unser fehler, würde ich sagen ...

            also es kommt ein model auf meine seite und hätte gern eine sedcard bei mir. dann klickt das model auf anmelden und meldet sich erstmal mit benutzernamen, passwort, geschlecht und email adresse an. für diese daten wird direkt ein datensatz in meiner db erstellt.

            ok. dieser datensatz ist also später noch zu ergänzen - noch ist er also unvollständig.
            um dies zu kennzeihnen, würde sich wohl eine weitere spalte namens "komplett" o.ä. anbieten, die zuerst mal auf "nein" oder "false" oder 0 oder wasweissich gesetzt wird.

            da dies nicht alle daten sind die man für eine sedcard brauch muss das model sich dann noch die anderen daten nach der anmeldung angeben. es loggt sich mit seinen daten ein und ergänzt diese daten. diese daten muss dann das model nach der anmeldung im userbereich angeben weil ich es doof finde direkt alle daten anzugeben.

            ok. das model füllt im userbereich dein formular aus.
            du überprüfst, ob die eingaben komplett sind, wenn ja werden die neuen angaben per UPDATE in den schon bestehenden datensatz eingetragen, und unser kennzeichen "komplett" von oben wird jetzt auf "ja" oder 1 gesetzt.

            bis dahin sind die daten unvollständig. und halt diese datensätze sollen in der galerie nicht erscheinen. diese müssen herausgefiltert werden. es gibt bestimmt mal welche die sich aus spaß anmelden und die daten unvollständig lassen und das würde dann doof in der galerie ausehen.

            jetzt noch ein select mit einer where-bedingung, die unser komplett-kennzeichen abfragt, und die sache dürfte erledigt sein.
            für deine "28 datensätze", wie eingangs gefordert, kannst du jetzt noch ein geeingetes LIMIT hinzufügen.

            gruss,
            wahsaga

            1. Hallo

              nur irgendwie versteht mich keiner richtig wie ich da ganze gerne hätte.
              nicht unbedingt unser fehler, würde ich sagen ...

              ne das wollte ich damit auch nicht sagen. habs vielleicht nicht richtig beschrieben.

              Also es klappt jetzt so wie ich es wollte. habs mit dem komplett feld gemacht.

              danke an alle die mir geholfen haben!!!

              Mit freundlichen Grüssen,
              Patrick