SQL foreach: Ausgabe je Zeile doppelt, soll aber nicht...

D

dreivier

Gast
Zum Problem...

In $sql ist mein Datensatz

PHP:
<?php

        foreach($sql as $dat) {
        <tr>
         <td><a href="'.$dat[bla1].'">..1</a> Daten ..1, mehr Daten ..1, andere Daten ..1</td>
         <th><img src="..1" width="60" height="60" alt=""> Daten ..1, noch etwas ..1</th>
         <th><img src="..2" width="60" height="60" alt=""> Daten ..2, noch etwas ..2</th>
         <td><a href="'.$dat[bla2].'">..2</a> Daten, mehr Daten ..2, andere Daten ..2</td>
        </tr>
        }

?>

Funktioniert mit foreach so nicht, da Satz1 gedoppelt wird, in der Html-Tabelle erscheinen links und rechts in einer Zeile immer die
selben Daten..logisch, soll aber nicht...wie mache ich es das es funktioniert?


pr.jpg
 
Du könntest eine for statt foreach-Schleife verwenden.
Oder du merkst dir, wo du den nächsten Datensatz (links oder rechts) einfügen musst (oder eingefügt hast).
 
  • Gefällt mir
Reaktionen: Der Lord
Hi,

erstell dir eine Laufvariable, erhöhe die inkrementell, prüfe, ob die gerade (rechts) oder ungerade (links) ist und fülle bei dem einen die linke, bei dem anderen die rechte Seite.

VG,
Mad
 
Alles nicht so einfach, das Problem was dann noch dazu kommt ist das ich da auch noch eine Blätterfunktion einbauen muss...sonst würde ich ja die ganze Ausgabe inkl. fertiger Tabelle in eine $var schreiben und dann einfach ausgeben..wäre nicht schön, deshlab lasse ich das auch....ätzend, nervt mich langsam...
 
Eine Blätterfunktion lässt sich doch relativ einfach einbauen, indem du dem SQL-Query einfach ein Limit abhängig von der aktuellen Seitenanzahl mitgibst. Beispiel (Nr 2).

Oder du greifst auf sowas wie Datatables zurück, damit kann man schon ganz tolle Sachen basteln.
 
  • Gefällt mir
Reaktionen: Madman1209
Wie Madman1209 schon sagte musst du nur eine Variable erstellen, die deine aktuelle Position überprüft. Bist du noch auf der linken Position, erstelle die rechte in der selben Zeile ergo machst du ein td / th.
Bist du aber schon auf der rechten Position, dann machst du ein <tr> und td / th

Blätterfunktion musst du vorher noch wissen, wieviele Datensätze du hast. Dann noch wieviele Datensätze du pro Seite anzeigen willst.
 
  • Gefällt mir
Reaktionen: Madman1209
Kein table, sondern grid oder flex nutzen, dann kannste das einfach nach einander füllen und über css formatieren.
Tabellen nur dann wenn es wirklich Tabellendaten sind.
 
  • Gefällt mir
Reaktionen: Der Lord
Wenn die Möglichkeit zum grid besteht würde ich das ganz klar nutzen. Wenn du deinen Datensatz via Mail verschicken musst, brauchst du eh deine Table aber wenn nicht dann nutze die Macht des GRID :D

display: grid;
grid-template-columns: repeat(2, 1fr);
grid-auto-rows: 250px;

Möglichkeiten zur Definierung der Reihen und Spalten gibt es viele aber da wird Google helfen können :-)
 
Von wegen Blätterfunktion, ich brauche für eine Seite eigentlich nur 2 Links und zwar [Seite 1] [Seite 2] weil ich hier genau weiß wieviel maximal ausgegeben werden soll und wieviel IMMER verfügbar ist, und zwar 200 Ergebnisse.

Ich dachte da an je Link ein query, einmal für 0-100 Ergebnisse und einmal von 100-200 Ergebnisse..denke das wäre technisch am einfachsten? sonst müsste ich teilen und und und und das würde meiner Meinung nach unnötig Code verursachen oder?
Ergänzung ()

-Rayz- schrieb:
Wenn die Möglichkeit zum grid besteht würde ich das ganz klar nutzen.

Kenn ich nicht, hab ich noch nie benötigt..ich packe tabellarische Daten immer in einer Tabelle. Hab das Problem aber gelöst, mit einem Counter und dann per if Abfrage hin und her einfügen, einfach wenn man weiß wie es geht...ich saß da 5 Tage dran für nicht einmal eine Zeile Code :-/
 
Zuletzt bearbeitet von einem Moderator:
Nur weil man etwas nicht kennt muss man es nicht gleich verteufeln. Mir ist aber das Jahrhundert auch noch bekannt wo alles in eine Table gepackt wurde. Wenn man sich das Leben unnötig schwer machen will weil man nicht über den Tellerrand schauen möchte dann ist das eben so.
Die ganzen Tipps dann als kindisch abzulegen ist mehr als....

Und Blätterfunktion hin oder her ob du nun vorher schon weißt wieviele Daten geladen werden sollen nicht ist egal. So oder so wird Limit genutzt nur mit dem Unterschied, dass du Limit fest hinterlegen kannst und nicht mit Variablen füllen musst falls mal einer pro Seite doch nur 50 Datensätze sehen will.
 
  • Gefällt mir
Reaktionen: GroMag und Der Lord
Ich gebe zu, dass mein letzter Beitrag #11 nicht zielführend war und entschuldige mich auch dafür. Aber wenn man bei den vielen guten und konstruktiven Beiträgen, die absolut zielführend waren, Reaktionen liest wie "Kenn ich nicht, hab ich noch nie benötigt" kann einem auch schon mal eine Trotzreaktion rausrutschen, da man den Eindruck gewinnt das Thema ist dem OT nicht sonderlich ernst. ;)

Wie auch immer, schau dir einfach wie angesprochen LIMIT an und du wirst deine Daten wie gewünscht selektieren können. Wenn es irgendwo hakt, helfen wir dir bei gezielten Fragen sehr gerne weiter.
 
Zurück
Oben