Resultaten uit query per 4 in een rij plaatsen en dan een nieuwe rij beginnen. Hoe doe ik dat?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ief De Laender

Ief De Laender

10/07/2012 20:22:30
Quote Anchor link
Hoi iedereen,

Ik ben bezig me een portfolio site aan het maken en zou graag m'n foto's per 4 naast elkaar plaatsen en daarna een nieuwe rij beginnen met opnieuw weer 4 foto's maar hoe speel ik dat nu klaar in een query?

Ik heb hieronder eens een simpel voorbeeldje.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
      $result
=mysql_query("SELECT id, title
        FROM photos
        ORDER BY id"
);

        while ($row = mysql_fetch_array($result))
            {

            $id=$row["id"];
                        $title=$row["title"];

         echo "  <div class='preview'>
                    <img src='$id.jpg'alt='$title' />
                </div>"
;
          }

    ?>

Dus eigenlijk wil ik zoiets bekomen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="row">
  <div class="preview">
  <img src='1.jpg' alt='foto 1' />
  </div>
  <div class="preview">
  <img src='2.jpg' alt='foto 2' />
  </div>
  <div class="preview">
  <img src='3.jpg' alt='foto 3' />
  </div>
  <div class="preview">
  <img src='4.jpg' alt='foto 4' />
  </div>
</div>

<div class="row">
  <div class="preview">
  <img src='5.jpg' alt='foto 5' />
  </div>
  ...
</div>

Dus per 4 resultaten moet er een <div class="row"> ... </div> komen te staan.
Kan iemand me hier mee helpen aub?

Vriendelijke groeten,
Ief

Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 11/07/2012 14:12:08 door Bas IJzelendoorn
 
PHP hulp

PHP hulp

26/12/2024 18:49:31
 
Erwin H

Erwin H

10/07/2012 20:38:07
Quote Anchor link
Als je het in een rij wilt hebben hoef je niets in een query te doen. Je moet zorgen dat je de juiste css hebt. Die hele 'row' heb je dan niet eens nodig.
 
Ief De Laender

Ief De Laender

10/07/2012 20:42:40
Quote Anchor link
Probleem is dat m'n foto's niet allemaal even groot zijn. Wel in breedte maar niet in hoogte en als ik zonder nieuwe rij werk krijg ik ze niet mooi uitgelijnd. Die 'row' gebruik ik om uit te lijnen. Tenzij er toch een oplossing is via css dan is dat uiteraard ook welkom. :)
Gewijzigd op 10/07/2012 20:42:56 door Ief De Laender
 
- SanThe -

- SanThe -

10/07/2012 20:44:34
 
Obelix Idefix

Obelix Idefix

10/07/2012 20:46:30
Quote Anchor link
Ief De Laender op 10/07/2012 20:22:30:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
      $result
=mysql_query("SELECT id, title
        FROM photos
        ORDER BY id"
);

        while ($row = mysql_fetch_array($result))
            {

            $id=$row["id"];
                        $title=$row["title"];

         echo "  <div class='preview'>
                    <img src='$id.jpg'alt='$title' />
                </div>"
;
          }

    ?>

Mis foutafhandeling
Waarom mysql_fetch_array en niet mysql_fetch_assoc?
Waarom $id en $title aanmaken als variabelen?
Gebruik bij php (echo) ' en in html "
Variabelen buiten quotes.

Ten aanzien van je vraag: laat een teller meelopen (zie de link van SanThe)
Gewijzigd op 10/07/2012 20:47:09 door Obelix Idefix
 
Erwin H

Erwin H

10/07/2012 20:57:42
Quote Anchor link
Ief De Laender op 10/07/2012 20:42:40:
Wel in breedte maar niet in hoogte

Als ze in de breedte allemaal even groot zijn dan is het donders eenvoudig. Maak 1 container div waarin je alle foto divjes gooit en geef die een breedte. Daarnaast geef je de foto divjes een float: left mee, zodat ze naast elkaar worden gepositioneerd.
De divjes komen dan automatisch naast elkaar te staan, met op elke 'rij' evenveel.

De reden waarom ik je deze oplossing geef (en niet simpel je vraag beantwoord) is omdat je met deze oplossing je lay out ook nog eens simpel kan aanpassen. Als je morgen geen 4 maar 5 naast elkaar wilt hebben hoef je alleen de breedte van de container aan te passen en hopla. Met de door jouw gevraagde methode gaat dat iets moeilijker.

Overigens zou het me niets verbazen als Wouter J zometeen met een nog veel mooiere CSS/HTML5 oplossing komt aandragen :-)
 
Ief De Laender

Ief De Laender

10/07/2012 21:23:55
Quote Anchor link
Erwin H op 10/07/2012 20:57:42:
Ief De Laender op 10/07/2012 20:42:40:
Wel in breedte maar niet in hoogte

Als ze in de breedte allemaal even groot zijn dan is het donders eenvoudig. Maak 1 container div waarin je alle foto divjes gooit en geef die een breedte. Daarnaast geef je de foto divjes een float: left mee, zodat ze naast elkaar worden gepositioneerd.
De divjes komen dan automatisch naast elkaar te staan, met op elke 'rij' evenveel.


Heb ik al gedaan maar probleem is als je een foto's door elkaar hebt in portrait en landscape formaat dan krijg ik dit:
Afbeelding

En wat ik wil bekomen is dit:
Afbeelding
 
Eddy E

Eddy E

10/07/2012 21:36:00
Quote Anchor link
Geef ze allemaal een element extra (een <span> oid) met daarbij:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
span.om_foto
{
height: 200px;
width: 50px;
float: left;
}
span.om_foto img
{
max-height: 200px;
max-width: 50px;
}


Of zoiets.
 
- SanThe -

- SanThe -

10/07/2012 21:39:26
Quote Anchor link
Per vier in een div doen en dan na de vierde een clear both geven.
 
Reshad F

Reshad F

11/07/2012 09:53:36
Quote Anchor link
of gewoon zo..

(natuurlijk wordt dit iets anders bij jou maar ik moest even de foto's nabootsen met blocks)

http://cssdesk.com/b8DJE
 
Erwin H

Erwin H

11/07/2012 09:54:36
Quote Anchor link
Ief De Laender op 10/07/2012 21:23:55:
Heb ik al gedaan maar probleem is als je een foto's door elkaar hebt in portrait en landscape formaat dan krijg ik dit:

En wat ik wil bekomen is dit:

Ok, ik geef toe, mijn idee was net even te snel gedacht. Maar.... met iets extra CSS3 kan het wel. Dit werkt dus alleen in browsers die CSS3 ondersteunen en dus niet in bijvoorbeeld IE8:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
.preview:nth-child(4n+1){ clear: both; }

Dit geeft aan dat elk element na het vierde element een clear: both moet krijgen. Daarmee werkt het wel en krijg je precies de rijen die je wil. Getest in FF.
 
Ief De Laender

Ief De Laender

11/07/2012 20:44:09
Quote Anchor link
Bedankt iedereen voor de vele en vooral snelle reacties.
Het één en ander opgestoken :)
Hiermee kan ik aan de slag. Vooral die teller is wel heel knap.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.