Ergebnis 1 bis 17 von 17

Thema: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

  1. #1
    Warp drölf

    Moderator

    Avatar von godlike
    Registriert seit
    Jul 2013
    Ort
    Topkekistan
    Beiträge
    13.328
    ngb:news Artikel
    8

    SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Moin ihr PHP und SQL Götter

    Habe ein eigentlich simples Problem. Möchte Daten aus einer Datenbank auslesen (z.B. 9 Zufällige Datensätze aus einer DB) und diese dann in einem responsive Grid darstellen: http://www.responsivegridsystem.com/calculator/

    Die SQL Abfrage ist jetzt ja kein großes Problem. Sowas halt:

    Code (PHP):
    1. $query = "SELECT db.foo, db.bar, db.anzahl FROM db order by RAND() LIMIT 9";
    Nun sollte das ja in 3 Zeilen gepackt werden. Wenn ich da aber eine Schleife mache kommen ja 9 Zeilen raus, mit immer den selben 3 Datensätzen. Ihr versteht was ich meine?

    Das ganze sollte ja so aussehen am Ende:

    Code (HTML):
    1. <div class="section group"> <div class="col span_1_of_3">
    2.     <h3 class="ico1">Name 1</h3>
    3.     Datensatz 1.1 Datensatz 1.2</div>
    4.    
    5.     <div class="col span_1_of_3">
    6.     <h3 class="ico1">Name 2</h3>
    7.     Datensatz 2.1 Datensatz 2.2</div>
    8.    
    9.     <div class="col span_1_of_3">
    10.     <h3 class="ico1">Name 3</h3>
    11.     Datensatz 3.1 Datensatz 3.2</div>
    12. </div>
    13.  
    14.  
    15. <div class="section group">
    16.     <div class="col span_1_of_3">
    17.     <h3 class="ico1">Name 4</h3>
    18.     Datensatz 4.1 Datensatz 4.2</div>
    19.    
    20.     <div class="col span_1_of_3">
    21.     <h3 class="ico1">Name 5</h3>
    22.     Datensatz 5.1 Datensatz 5.2</div>
    23.    
    24.     <div class="col span_1_of_3">
    25.     <h3 class="ico1">Name 6</h3>
    26.     Datensatz 6.1 Datensatz 6.2</div>
    27. </div>
    28.  
    29.  
    30. <div class="section group">
    31.     <div class="col span_1_of_3">
    32.     <h3 class="ico1">Name 7</h3>
    33.     Datensatz 7.1 Datensatz 7.2</div>
    34.    
    35.     <div class="col span_1_of_3">
    36.     <h3 class="ico1">Name 8</h3>
    37.     Datensatz 8.1 Datensatz 8.2</div>
    38.    
    39.     <div class="col span_1_of_3">
    40.     <h3 class="ico1">Name 9</h3>
    41.     Datensatz 9.1 Datensatz 9.2</div>
    42. </div>
    Die Frage ist jetzt wie muss die Schleife aussehen um dieses Ergebnis zu erzielen?

    Also so:



    Hat mir da jemand einen schnellen Rat? Irgend eine for-Schleife mit $i++ ?

    Gruß godlike
    »Ask not what you can do for your country. Ask what's for lunch« Orson Welles

    „Eine Gestalt von seltenem Ebenmaß“

  2. #2
    Boardgrieche Avatar von Cybergreek
    Registriert seit
    Nov 2017
    Beiträge
    105

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Ich weiß nicht genau, wie Deine php-Kenntnisse sind und wie Deine Versuche bisher aussehen, deswegen beschreibe ich es mal kurz, vielleicht hilft Dir das schon weiter. Wenn nicht, sag Bescheid.

    Als erstes gibst Du Dein einleitendes div aus, dann in einer Schleife die Datensätze einzeln und bei jedem dritten Datensatz die "zwischen"-divs. Also:

    Code (PHP):
    1.  
    2. echo '<div class="section group"> ';
    3. for (schleife mit hochzählendem $i) {
    4.   echo '<div class="col span_1_of_3"><h3 class="ico1">'.$db_name.'</h3>
    5.    '.$db_11_12.'</div>';
    6.   if ($i % 3 == 0) {
    7.   echo '</div>
    8.     <div class="section group">';
    9.   }
    10. }
    11. echo '</div>';
    12.  
    Kann auch sein, dass Du ($i+1)%3==0 nehmen musst, je nachdem wo Dein $i anfängt.
    Für diesen Beitrag bedanken sich Larius, godlike

  3. #3
    Warp drölf

    Moderator

    (Threadstarter)

    Avatar von godlike
    Registriert seit
    Jul 2013
    Ort
    Topkekistan
    Beiträge
    13.328
    ngb:news Artikel
    8

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Zitat Zitat von Cybergreek Beitrag anzeigen
    Kann auch sein, dass Du ($i+1)%3==0 nehmen musst, je nachdem wo Dein $i anfängt.
    Ich hatte bis dato noch kein $i irgendwo

    Hab das Ganze mal so angepasst:

    Code (PHP):
    1.  
    2. $query = "blabla";
    3. echo '<div class="section group"> ';
    4. for($i=0; $i < 9; $i++) {
    5.     echo '<div class="col span_1_of_3"><h3 class="ico1">'.$row["name"].'</h3>
    6.    '.$row["test"].'</div>';
    7.     if ($i % 3 == 0) {
    8.         echo '</div>
    9.        <div class="section group">';
    10.     }
    11. }
    12. echo '</div>';
    Allerdings bekomme ich jetzt nur gleiche Datensätze ausgegeben. Muss das Ganze Konstrukt noch in eine Schleife?
    »Ask not what you can do for your country. Ask what's for lunch« Orson Welles

    „Eine Gestalt von seltenem Ebenmaß“

  4. #4
    Boardgrieche Avatar von Cybergreek
    Registriert seit
    Nov 2017
    Beiträge
    105

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Das beantwortet die Frage nach den php-Kenntnissen...
    (sorry, der musste sein )

    Wie kommst Du an Dein $row dran?
    Das wird irgendeine db-Funktion sein, die Du auf Dein db-Objekt drauf lässt.
    Das müsstest Du in der Schleife dann wiederholen.
    Also:

    Code (PHP):
    1. $query = "blabla";
    2. $row = funktion_zu_db();
    3. echo '<div class="section group"> ';
    4. for($i=0; $i < 9; $i++) {
    5.     echo '<div class="col span_1_of_3"><h3 class="ico1">'.$row["name"].'</h3>
    6.   '.$row["test"].'</div>';
    7.     if ($i % 3 == 0) {
    8.         echo '</div>
    9.       <div class="section group">';
    10.     }
    11.     $row = funktion_zu_db();
    12. }
    13. echo '</div>';
    Wenn das nicht hilft, dann poste mal ein bisschen mehr von Deinem Code. Also den Bereicht ab Definition der Abfragen bis zur Ausgabe.
    Für diesen Beitrag bedankt sich phre4k

  5. #5
    Warp drölf

    Moderator

    (Threadstarter)

    Avatar von godlike
    Registriert seit
    Jul 2013
    Ort
    Topkekistan
    Beiträge
    13.328
    ngb:news Artikel
    8

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Zitat Zitat von Cybergreek Beitrag anzeigen
    Das beantwortet die Frage nach den php-Kenntnissen...
    (sorry, der musste sein )
    Ja, toll sind die nicht Hab das aber auch nie richtig gelernt Auf jeden Fall klappt es jetzt super

    Zitat Zitat von Cybergreek Beitrag anzeigen
    Wie kommst Du an Dein $row dran?
    Code (PHP):
    1. $row = mysqli_fetch_array($result);
    Genau so hab ich mir das vorgestellt! Bin auf so was natürlich nicht gekommen Tausend Dank
    Für diesen Beitrag bedankt sich Cybergreek
    »Ask not what you can do for your country. Ask what's for lunch« Orson Welles

    „Eine Gestalt von seltenem Ebenmaß“

  6. #6
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.580

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Je nachdem, wie viel du mit den Technologien arbeitest könntest du dir mal passende Frameworks angucken.
    Clientseitig z.B. Bootstrap, welches unter anderem mit einem responsive Grid-System kommt. Kommt man mMn relativ schnell rein.

    Serverseitig irgendein PHP-MVC Framework. Im Idealfall ist der einzige eingebettete php-code für deinen Anwendungsfall:
    Code (PHP):
    1.  
    2. someClass.getResultTable();
    3.  
    Zumindest der Query und eine aufbereitete Rückgabe sollte mMn aber in ein Service-Objekt.
    Für diesen Beitrag bedanken sich Cybergreek, KingJamez

  7. #7

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Erweiternd zu @BurnerR:´s Antwort. Schau dir mal CodeIgniter an, da kommst du sehr schnell rein. Für den Einstieg in MVC und die Denkweise die du dafür brauchst ist das gut geeignet. Ich bin, weil ich mit CI irgendwann an meine Grenzen gestoßen bin, bei Laravel gelandet. Das ist offener und du hast mehr Freiheiten, die können einen am Anfang aber auch erschlagen.

    Allein ein ORM wie Doctrine nimmt dir schon wahnsinnig viel Arbeit ab, Doctrine wird unter anderem in Symfony eingesetzt.

    CakePHP wird auch oft eingesetzt, damit habe ich aber noch nicht gearbeitet.

    Der Aufwand sich in ein solches System einzuarbeiten ist erstmal recht hoch, das System nimmt dir aber viel Arbeit ab und du kannst dich auf das wirklich wichtige konzentrieren, deine Logik, die du brauchst.
    Für diesen Beitrag bedanken sich Cybergreek, BurnerR

  8. #8
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.580

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Das ist so der Schritt, wo die reine Programmierung[*] nicht mehr so stark im Fokus ist und es sich mehr zur Software-Entwicklung verlagert.
    Meiner Meinung nach, sobald man etwas fitter mit reiner Programmierung geworden ist, ist es eigentlich immer obligatorisch, zu frameworks bzw. libs (z.B. für ORM) zu wechseln.

    So beim zweiten drüberlesen wäre die Empfehlung aber eher, noch ein wenig reine Programmierung zu üben.
    Da Grundlagen aber vorhanden sind wäre evtl ein Buch zu OOP oder "OOP mit PHP" eine gute nächste Anlaufstelle.
    Im Idealfall lieber ein gutes Buch zu OOP (z.B. aus der "Heads First" / "Von Kopf bis Fuß" Reihe), statt ein "naja" Buch zu OOP mit PHP.


    [*] = ganz grob: Probleme lösen orientiert an den von der Sprache explizit zur Verfügung gestellten Mechanismen
    Geändert von BurnerR (27.06.18 um 13:08 Uhr)

  9. #9

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Also für solch kleine Dinge ein ausgewachsenes Framework zu nutzen und alles in irgendwelche Objekte zu packen, halte ich für wenig zielführend.
    Bis man sich in CI / Symfony / Cake / oder was auch immer eingearbeitet hat, hat man so kleine Dinge schneller und ressourcenschonender prozedural programmiert.

    Aber es ist irgendwie die Unart schlechthin geworden, alles OOP zu gestalten, ob es nun Sinn macht oder nicht.
    Und wenn ich erst eine Klasse untersuchen muss (oder die passende Dokumentation wälzen) um eine einfache Aufgabe zu erledigen läuft was falsch.
    Daher mal ein etwas älteres Pamphlet: http://okmaya.com/2014/10/16/oop-php-sucks/
    Für diesen Beitrag bedankt sich Cybergreek
    Gruß
    braegler

  10. #10
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.580

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Im Update relativiert der Autor sein Pamphlet allerdings und schreibt sinngemäß "Nachdem ich jetzt etwas Erfahrung damit habe, finde ich Code Igniter doch nicht mehr ganz so schlecht" ;-).

    Bis man sich in CI / Symfony / Cake / oder was auch immer eingearbeitet hat, hat man so kleine Dinge schneller und ressourcenschonender prozedural programmiert.
    Das hat einen eigenen Namen bekommen: Technical Debt.

    Der Umfang des eigentliches Projektes geht hier ja nicht draus hervor. Aber alleine für den Lerneffekt lohnt es sich erstmal, in jedem Falle möglichst good practice umzusetzen, auch wenn man das Gefühl hat, dass es ein wenig overkill sein könnte.

    Und wenn ich erst eine Klasse untersuchen muss (oder die passende Dokumentation wälzen) um eine einfache Aufgabe zu erledigen läuft was falsch.
    Das finde ich nicht so entscheidend. Wichtiger ist, Regression zuverlässig zu erkennen, den Code gut erweitern zu können. Oder auch mal Dinge zu ändern, ohne dass man sich durch das ganze Projekt wühlen muss. Oder das man auch ein Jahr später noch versteht, wie einzelne Aspekte des Code zusammen spielen. Oder konkreter eben auch, dass SQL-Abfragen an definierten Stellen auftauchen und nicht potenziell überall.

    Es stimmt allerdings, dass:
    1. Frameworks gerne grausam in der Einarbeitung sind.
    2. Frameworks gerne mal 50% der Zeit im Weg stehen anstatt zu helfen
    -> Meist ist dann entweder das Frameworks schlicht nicht so toll oder es passt nicht so gut zum Anwendungsfall.
    -> Vermutlich noch häufiger: Man hätte das Problem auch ohne Framework, nur anders.

  11. #11
    Warp drölf

    Moderator

    (Threadstarter)

    Avatar von godlike
    Registriert seit
    Jul 2013
    Ort
    Topkekistan
    Beiträge
    13.328
    ngb:news Artikel
    8

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Äh, oh, hmmm....

    Also ich brauch das, so mit DB Abfragen usw., evtl 4 Tage im Jahr. Wenn ich was wo anpassen muss oder schnell aus einer DB ein paar Daten wo einbinden soll. Das bekomme ich dann schon hin. Halt im herkömmlichen Sinn -> DB Abfrage, Schleife, Rows einbinden, fertig. Ich hab jetzt glaub nicht die nötige Ahnung mich in irgendwelche Frameworks einzuarbeiten, auch nicht die Zeit und danken tut es mir am Ende auch keiner. Kurse oder Fortbildungen hab ich auch noch nie bekommen. Die sollen froh sein wenn ich als Grafiker und Designer überhaupt irgendwelche Webseiten anpasse

    Oder in wie weit ist das kompliziert wenn man keinen Schimmer von Programmieren hat. Ich kann halt HTML Seiten erstellen, formatieren mit CSS, ne Datenbank irgendwie füllen und per PHP da wieder Zeug anzeigen lassen auf ner Webseite. Wenn ich da jetzt anfange bzw versuche mich wo einzuarbeiten wird es mir jetzt ja schon ganz anders
    »Ask not what you can do for your country. Ask what's for lunch« Orson Welles

    „Eine Gestalt von seltenem Ebenmaß“

  12. #12

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Einfaches beispiel aus CodeIgniter (version 2.x, pseudocode, entspricht aber dem von CI)

    Code (PHP):
    1.  
    2. // Controllers / PageController.php
    3.  
    4. class PageController extends Controller
    5. {
    6.      public function all() {
    7.          $all = $this->get_model('page')->all();
    8.          $this->view('page/list', $all)
    9.      }
    10. }
    11.  
    12. // Models / PageModel.php
    13.  
    14. class PageModel extends Page
    15. {
    16.     public function all() {
    17.         return $this->db->query('SELECT * FROM pages');
    18.     }
    19. }
    20.  
    21. // Views / Page / list.php
    22.  
    23. <?php foreach($pages as $page) {
    24.  
    25.     echo $page;
    26. }?>
    27.  
    28.  
    29. // öffne: deineUrl/Page und du siehst die liste
    30.  

    Ein Framework nimmt dir einfach einiges an Arbeit und Strukturierung ab.

  13. #13

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    ch hab jetzt glaub nicht die nötige Ahnung mich in irgendwelche Frameworks einzuarbeiten,
    Ich sag es mal so: Wenn Du die Grundzüge von php kennst, kannst Du auch mit einem FW starten.

    Gezwungener massen verwende ich bei einem Projekt CakePHP.
    Das Ding ist, ähnlich wie CI recht einfach auszubauen. Hat man sich mit dem MVC Konzept angefreundet und auch mit dem Gedanken alles in Objekte zu pressen, spricht nicht viel dagegen.
    Ich persönlich sträube mich dagegen. Für die Meisten meiner Projektchen brauche ich kein Modelling und kein Database Abstraction Layer und für eine anzuzeigende Page gleich 3 Dateien zu schreiben widerstrebt mir.


    Gerne verwende ich jedoch Hilfsmittel (die z.g.T. OO sind) wie Smarty als Template Engine oder MeekroDB als MySQLi-Wrapper.
    Aber wirklich alles zu objektisieren, neeeee.
    Mal böse übertrieben:
    Code:
    $BookName = fGetBookNameByISBN("1231231234");
    vs.
    Code:
    $Book = new ClsBook();
    $Book->SelectByISBN("1231231234");
    $BookName = $Book->GetName();

    Spoiler: 


    Wobei auch ich nicht so weit gehen würde ein komplettes CRUD prozedural zu schreiben.
    Es kommt IMO immer auf die Anwendung an, deshalb auch das komische Beispiel:
    Möchte ich eine eigene Bibliothek verwalten, würde ich klar OO gehen. Ich möchte Titel ändern können und und und.
    Will ich aber wirklich nur den Namen des Buches aufgrund der gegebenen ISBN auslesen (z.B. weil die Daten aus einem ERP-System kommen) würde ich nicht den Aufwand betreiben das in eine Klasse zu verpacken (das ist ja auch eine gern genutzte Möglichkeit der Klassen, die simple Zusammenfassung von Funktionen, meist um Kollisionen zu vermeiden)
    Geändert von braegler (28.06.18 um 07:04 Uhr)
    Gruß
    braegler

  14. #14
    Warp drölf

    Moderator

    (Threadstarter)

    Avatar von godlike
    Registriert seit
    Jul 2013
    Ort
    Topkekistan
    Beiträge
    13.328
    ngb:news Artikel
    8

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    also um ehrlich zu sein verstehe ich nur Bahnhof von dem was ihr hier schreibt. ich weiß halt was eine Variable ist, kann was mit echo ausgeben und dazu behersche ich google. Also Sachen wie mysql_real_escape_string usw. ne funktion kann ich auch schreiben und verstehen, alles darüber verstehe ich aber auch nicht. wie gesagt ich brauch das pro Jahr halt an 3 Tagen ungefähr...
    »Ask not what you can do for your country. Ask what's for lunch« Orson Welles

    „Eine Gestalt von seltenem Ebenmaß“

  15. #15
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.580

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Ging aus dem ersten Beitrag bei dir jetzt nicht hervor, sah halt aus als wenn das ein Teilproblem eines größeren Projektes ist, an dem du kontinuierlich arbeitest oder so. Für dich ergibt ein Framework und Co. eventuell wirklich keinen Sinn.



    Will ich aber wirklich nur den Namen des Buches aufgrund der gegebenen ISBN auslesen (z.B. weil die Daten aus einem ERP-System kommen) würde ich nicht den Aufwand betreiben das in eine Klasse zu verpacken (das ist ja auch eine gern genutzte Möglichkeit der Klassen, die simple Zusammenfassung von Funktionen, meist um Kollisionen zu vermeiden)
    Meine persönliche Faustregel ist so:
    Einmal ist in Ordnung. Aber auf das zweite mal folgt irgendwann immer ein drittes und viertes mal. Deswegen refactor ich, sobald eine Doppelung auftritt.

    Dein Beispiel-Code verstehe ich nicht. Wo ist das Problem? 2 Zeilen Code? Weniger Zeilen stehen allgemein weit unten in der Priorität.

    Code (PHP):
    1.  
    2. $Book->SelectByISBN("1231231234");
    Das gehört ja in den Controller.

    Code (PHP):
    1.  
    2. $BookName = $Book->GetName();
    3.  
    Und das in die View, ggf. aber gekapselt in einem Decorator oder Presenter.

    Ohne ORM kann ich eventuell noch nachvollziehen. Aber ohne Kapselung wild auf die Datenbank zugreifen fände ich schon sehr grausam.
    Komme auch nicht aus der PHP-Ecke, glaube in PHP werden solche Dinge eher mal nahe gelegt.
    Für diesen Beitrag bedankt sich KingJamez

  16. #16

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    @braegler:
    Für einen einmaligen Zugriff kann ich das nachvollziehen, will ich aber nicht nur den Namen sondern auch den Author, erzeugt dein Beispiel aber schon einen Rattenschwanz, den ich mit einer Class vermeiden könnte.

    zb. Laravels ORM nutzt static methods zum erzeigen des Objects.
    Code (PHP):
    1.  
    2. $book = ClsBook::where(['isbn' => '1232'])->get();
    3.  
    4. $name = $book->name;
    5. $author = $book->author;
    6.  

  17. #17
    Cloogshicer®

    Moderator

    Avatar von dexter
    Registriert seit
    Jul 2013
    Beiträge
    1.839

    Re: SQL-Query ausgabe in 3 spaltiges responsive Grid packen - steh auf dem Schlauch!

    Zitat Zitat von godlike Beitrag anzeigen
    Habe ein eigentlich simples Problem. Möchte Daten aus einer Datenbank auslesen (z.B. 9 Zufällige Datensätze aus einer DB) und diese dann in einem responsive Grid darstellen:
    ein responsive grid funktioniert bei der Aufgabenstellung recht gut, wenn man drauf scheisst und es weglässt.


    • hole 9 elemente aus der DB
    • floate diese
    • Kaffee
    Für diesen Beitrag bedanken sich Jester, KingJamez
    Wer nachts schläft, muss sich nicht wundern, wenn er tagsüber arbeitet!

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •