Toon posts:

[PHP] Records uit datbase halen, in specifieke tabel layout

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb het volgende probleem:

Met behulp van de query wil ik de resultaten uit de database laten zien in een tabel in html.
Ik maak gebruik van PHP en een MYSQL database.

Voorbeeld:
er zijn 12 records in de database en ik wil ze weergeven over 4 rijen met 3 kolommen.
4x3 = 12. Elke cel moet een bepaalde record bevatten.

Ik heb onderstaande code ontworpen maar hij zet alle resultaten onder elkaar (dus in rijen) maar niet zoals de manier waarop ik wou, 4 rijen met elk 3 kolommen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$query = "SELECT onderwerp FROM $tablename ORDER BY InhoudsectieID DESC ";

$results_id = mysql_query($query, $connect);

if ($results_id) {
    print '<TABLE BORDER=1>';
    
    while ($row = mysql_fetch_row($results_id)) {
           print '<TR>';
           foreach ($row as $field) {
                    print "<TD>$field</TD>";
                    }
           print '</TR>';}}
    else { die ("Query=$query failed!"); };


Hoe zou ik dit probleem op kunnen lossen? [;

[ Voor 7% gewijzigd door Verwijderd op 17-05-2005 11:04 ]


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Je moet vantevoren goed nadenken:
- zijn het altijd maar 12 onderwerpen?
- als het er meer zijn: wil je dan graag 4 rijen, of 3 kolommen?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:48

TeeDee

CQB 241

Een teller mee laten lopen en dan de boel opdelen?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 15:16
Je doet nu elke keer een <TR>, kijk maar in je output. Je moet even een tellertje laten meelopen of de rowcount mod 3 doen ofzo en dan een <TR> printen.

ps: Je zegt: "Onder elkaar, dus in rijen". Dat zijn dus colommen, of begrijp ik je nu niet?

[ Voor 28% gewijzigd door Pino op 17-05-2005 11:08 ]

"If you don't know where you are going, any road will take you there"


  • Massiefje
  • Registratie: Mei 2002
  • Laatst online: 06-05 14:14
Ik ben bang dat dit toch echt een scriptrequest is en dat mag niet op tweakers :)

Wat jij wil is uiteraard wel mogelijk. Maar je moet slim nadenken. Wat gebeurt er met je functie, waarom maakt hij rijen en geen cellen in de rij en wat moet ik hieraan veranderen om er toch cellen van te maken (maximaal 3).

Het is klote, maar kan echt wel.

SUCCES !

Verwijderd

Topicstarter
GlowMouse schreef op dinsdag 17 mei 2005 @ 11:05:
Je moet vantevoren goed nadenken:
- zijn het altijd maar 12 onderwerpen?
- als het er meer zijn: wil je dan graag 4 rijen, of 3 kolommen?
Het zijn niet altijd maar 12 onderdelen, het kunnen er meer of minder zijn.
Wel moeten er standaard 3 kolommen zijn. De rijen zijn afhankelijk van het aantal items in de database.

Verwijderd

even /13 hier :D

geen tabel gebruiken, want dit is geen tabulaire data he, het is meer een lijst. Ergo: maak er een <ul> van met een vaste breedte en geef elke <li> float:left; mee. (eigenlijk zou display: inline-block beter zijn, maar dat gaat niet in IE)

het block dat dan niet meer op de regel past (de 4e) komt dan vanzelf op de volgende te staan

[ Voor 4% gewijzigd door Verwijderd op 17-05-2005 11:09 ]


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 16:06
Ik heb ditzelfde ook eens bij de hand gehad en toen direct in MySQL opgelost door een ORDER BY MOD(counter) of zoiets te doen. Helaas heb ik die code niet meer bij de hand (geen idee waar ik het toen voor gebruikt heb zelfs), maar ik ben bang dat dat in jouw geval toch niet gaat lukken omdat er al een ORDER BY in de query staat.

Dan maar met PHP oplossen: afhankelijk van of je rij-gewijs of kolomsgewijs wilt vullen, kan je werken met iets dergelijks (simpele pseudo-code):

PHP:
1
2
3
4
5
$col = 0;
while ($row = mysql_fetch_row($results_id))
  echo '<td>'.$row->data.'</td>';
  if ($col++ == #columns)
    echo '</tr><tr>';


Misschien niet helemaal in orde, maar het idee is er.

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 28-02 20:33
Zoals ze al zeggen, laat een tellertje meelopen die +1 doet elke record, staat het tellertje op 3 dan doe je een </tr> erbij staat die op 0 dan doe je eerst een <tr>. Wel bij 3 even het tellertje weer op 0 zetten en dan zou het moeten werken.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op dinsdag 17 mei 2005 @ 11:02:
Ik heb onderstaande code ontworpen maar hij zet alle resultaten onder elkaar (dus in rijen) maar niet zoals de manier waarop ik wou, 4 rijen met elk 3 kolommen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$query = "SELECT onderwerp FROM $tablename ORDER BY InhoudsectieID DESC ";

$results_id = mysql_query($query, $connect);

if ($results_id) {
    print '<TABLE BORDER=1>';
    
    while ($row = mysql_fetch_row($results_id)) {
           print '<TR>';
           foreach ($row as $field) {
                    print "<TD>$field</TD>";
                    }
           print '</TR>';}}
    else { die ("Query=$query failed!"); };


Hoe zou ik dit probleem op kunnen lossen? [;
Nogal logisch want je drukt voor elk record een af. Er is hier laatst ook al een topic over geweest, met de search moet je dat zeker kunnen vinden.

Met de modulo operator (zoek die maar op in de PHP manual ;) ) moet je een heel eind kunnen komen. En anders de oplossing met de if zoals al aangegeven.

Ik denk dat je zelf wel uit moet komen, zo niet en wil je een nieuw topic openen, geef dan concreet aan wat je al hebt en wat je hebt geprobeerd. Zie ook P&W FAQ - De "quickstart".

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.