2 tabellen naast erlkaar

Status
Niet open voor verdere reacties.

parisdiesel

Gebruiker
Lid geworden
15 nov 2008
Berichten
94
Hoi, wil gegevens uit mysql database in een tabel plaatsen, en bij de 10de rij zou er een tabel bij moeten komen om een goed overzicht te houden.
voorbeeldje,
datum naam email datum naam email
1 Peter peter@ 11
2enz jan jan@ 12 enz

Code:
<?
<table border="1" width="600px" style="margin-left: 20">
<?php
$sql = "SELECT DATE_FORMAT(gbdatum,'%d-%m-%Y') AS nl_datum, naam, email FROM kalender ORDER BY 
  DATE_FORMAT(gbdatum, '%m-%d') ASC "; 
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($res)){
echo "<tr>";
echo "<td>".$row['nl_datum']."</td>";
echo "<td>".$row['naam']."</td>"; 
echo "<td>".$row['email']."</td>"; 
echo "</tr>";

} 

mysql_close();
?>
</table>
 
Je wilt dus de query tot 10 laten tellen en zodra hij daar is een hele nieuwe tabel laten maken? schiet toch niet op, dan word je website behoorlijk sloom.

Ik zou hem lekker tot 't eind laten tellen.
 
tja... Als je dit soort dingen wilt maken moet je anders leren denken :P
Je moet er als eerst rekening mee houden dat je een tabel van boven naar beneden opbouwt... dus als je de eerste rij aanmaakt, moet ie direct al het goede aantal rijen breed zijn.
Dan is het een kwestie van die code in een for loopje te plaatsen dat van 0 tot 9 loopt en klaar :thumb:



PHP:
<?php
// Eerste ALLE gegevens ophalen
$row = array();
/*
$query = mysql_query("SELECT DATE_FORMAT(gbdatum,'%d-%m-%Y') AS nl_datum, naam, email FROM kalender ORDER BY DATE_FORMAT(gbdatum, '%m-%d') ASC ");
while($gegevens = mysql_fetch_assoc($query))
{
  // Alles opslaan in een Array.
  $row[] = $gegevens
}
*/
for($x = 0; $x < 1000; $x++)
{
  $row[] = $x;
}

// Tellen hoeveel data je hebt:
$count = count($row);
?>



<?PHP // HTML gescheiden houden van PHP... voor zover dat kan... ?>
<table border="0" cellpadding="0" cellspacing="0">
<?PHP
  for($i=0; $i<10; $i++)
  {
    echo '<tr>';
      for($j=0; $j<ceil($count/10); $j++)
      {
        if(isset($row[$i+($j*10)]))
        {
          // hey, hij bestaat... tonen die hap!
          echo '<td height="15">'.$row[$i+($j*10)].'</td>';
          echo '<td>'.$row[$i+($j*10)].'</td>'; 
          echo '<td>'.$row[$i+($j*10)].'</td>'; 
          echo '<td  style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer
        }else{
          // Hij bestaat niet meer.. gewoon lege tabel tonen
          echo '<td height="15"></td>';
          echo '<td></td>'; 
          echo '<td></td>'; 
          echo '<td style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer
      }
    echo '</tr>';
  }
?>
</table>


Mocht je iets niet begrijpen: laat het me weten...

Jeffrey :thumb:
 
Hoi, Jeffrey bedankt dat je mij wilt helpen. heb de code gekopieerd en geplakt in kladblok, maar als ik het run laat tie niets zien. Ik kan de fout zelf niet vinden omdat de code iets boven mijn pet gaat.:confused:
ps, wat betekend deze code: ceil
 
Laatst bewerkt:
Hey,

ik heb de code getest en het werkt allemaal...
gecopieerd in kladblok.. oké... heb je het bestand ook als .php opgeslagen?
heb je het bestand geupload naar een server die php ondersteund?

Ceil betekend "rond af naar boven" dus ceil(10/3) = 4 en ceil(99/3) = 33
tegenovergesteld van ceil is "floor" floor(10/3) = 3 (rond af naar beneden)

normaal afronden is: round(2.343, 0) waarbij 0 aangeeft op hoeveel decimalen hij moet afronden... 0 is dus nul decumalen en zal dus 2 worden..

M.v.g.
Jeffrey
 
Jeffrey, plaats nog een keer de code met alles erin. bij mij werkt het niet, sorry,
Heb het ook op geslagen onder tabel.php
en dit is wat tie aangeeft in de browser
Kan de pagina niet weergeven
HTTP 500
Meest waarschijnlijke oorzaken:
Aan deze website wordt gewerkt.
De website bevat een programmeerfout.



Code:
<?php 
$server = mysql_connect("localhost","root","usbw");
mysql_select_db("verjaardag",$server);
$row = array(); 
/* 
$query = mysql_query("SELECT gbdatum, naam, email FROM kalender"); 
while($gegevens = mysql_fetch_assoc($query)) 
{ 
  // Alles opslaan in een Array. 
  $row[] = $gegevens 
} 
*/ 
for($x = 0; $x < 1000; $x++) 
{ 
  $row[] = $x; 
} 

// Tellen hoeveel data je hebt: 
$count = count($row); 
?> 



<?PHP // HTML gescheiden houden van PHP... voor zover dat kan... ?> 
<table border="0" cellpadding="0" cellspacing="0"> 
<?PHP 
  for($i=0; $i<10; $i++) 
  { 
    echo '<tr>'; 
      for($j=0; $j<ceil($count/10); $j++) 
      { 
        if(isset($row[$i+($j*10)])) 
        { 
          // hey, hij bestaat... tonen die hap! 
          echo '<td height="15">'.$row[$i+($j*10)].'</td>'; 
          echo '<td>'.$row[$i+($j*10)].'</td>';  
          echo '<td>'.$row[$i+($j*10)].'</td>';  
          echo '<td  style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
        }else{ 
          // Hij bestaat niet meer.. gewoon lege tabel tonen 
          echo '<td height="15"></td>'; 
          echo '<td></td>';  
          echo '<td></td>';  
          echo '<td style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
      } 
    echo '</tr>'; 
  } 
?> 
</table>
 
Laatst bewerkt:
Jeffrey, krijg nu wel getallen van 1 tot 1000 te zien in een tabel, maar de bedoeling is dat daar mijn gegevens komen te staan, wat doe ik verkeerd?
 
Jeffrey, krijg nu wel getallen van 1 tot 1000 te zien in een tabel, maar de bedoeling is dat daar mijn gegevens komen te staan, wat doe ik verkeerd?

Dat je de getallen ziet is goed...
dat betekend dat PHP werkt, en dat het bestand doet wat ie moet doen...
het zou slim zijn om een goede PHP editor te installeren, omdat fouten opsporen in notepad redelijk lastig is :P

De regen dat je alleen de getallen ziet, is omdat dit er staat:
PHP:
for($x = 0; $x < 1000; $x++) 
{ 
  $row[] = $x; 
}
De array $row wordt hier gevult met de getallen 0 t/m 999

Als je je eigen gegevens erin wilt hebben moet je /* en */ weghalen
ook haal je de for loop weg die er alleen getallen inzet.. aangezien die zinloos is, en alleen om te testen....
dan krijg je dus iets als dit:
PHP:
<?php 
$query = mysql_query("SELECT gbdatum, naam, email FROM kalender"); 
while($gegevens = mysql_fetch_assoc($query)) 
{ 
  // Alles opslaan in een Array. 
  $row[] = $gegevens 
}

Nu wil je uiteraard je gegevens nog tonen...
Omdat je nu een array in een array stopt ($gegevens is een array, en $row is een array: je stopt $gegevens in $row...) werk je nu met een 2 dementionale array (of hoe je het ook wilt noemen :P)

Stel:
PHP:
$row = array();
$row[1] = array('gbdatum' => 1990, 'naam' => 'piet', 'email ' => 'email@email.com');
$row[2] = array('gbdatum' => 1960, 'naam' => 'thijs', 'email ' => mail@mail.com');

// Als je alle gegevens handmatig in de array zou zetten, zou je dit als uitkomst hebben...
// Kost veel werk.. dus makkelijker is het om het uit de database te halen :P
// De database laadt de gegevens op exact dezelfde manier in de array, als dat je hierboven kunt zien!
// Als je nu b.v.  zou doen:
echo $row[1]['gbdatum']; // Dit wordt "1990"
echo $row[2]['naam']; // Dit wordt "thijs"

// het weergeven van de data in de tabellen zal dus ook op die manier moeten gebeuren.. maar dan wordt het getalletje 1 en 2,  zoals hierboven, vervangen voor [ $i + ($j * 10) ]
// Je krijgt dan:
echo '<td height="15">'.$row[$i+($j*10)]['gbdatum'].'</td>'; 
echo '<td>'.$row[$i+($j*10)]['naam'].'</td>';  
echo '<td>'.$row[$i+($j*10)]['email'].'</td>';  
echo '<td  style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer


Als je alles samenvoegt krijg je dus:
PHP:
<?php 
$server = mysql_connect("localhost","root","usbw");
mysql_select_db("verjaardag",$server);
$row = array(); 
$query = mysql_query("SELECT gbdatum, naam, email FROM kalender"); 
while($gegevens = mysql_fetch_assoc($query)) 
{ 
  // Alles opslaan in een Array. 
  $row[] = $gegevens 
} 

// Tellen hoeveel data je hebt: 
$count = count($row); 
?> 

<?PHP // HTML gescheiden houden van PHP... voor zover dat kan... ?> 
<table border="0" cellpadding="0" cellspacing="0"> 
<?PHP 
  for($i=0; $i<10; $i++) 
  { 
    echo '<tr>'; 
      for($j=0; $j<ceil($count/10); $j++) 
      { 
        if(isset($row[$i+($j*10)])) 
        { 
          // hey, hij bestaat... tonen die hap! 
          echo '<td height="15">'.$row[$i+($j*10)]['gbdatum'].'</td>'; 
          echo '<td>'.$row[$i+($j*10)]['naam'].'</td>';  
          echo '<td>'.$row[$i+($j*10)]['email'].'</td>';  
          echo '<td  style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
        }else{ 
          // Hij bestaat niet meer.. gewoon lege tabel tonen 
          echo '<td height="15"></td>'; 
          echo '<td></td>';  
          echo '<td></td>';  
          echo '<td style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
      } 
    echo '</tr>'; 
  } 
?> 
</table>

Succes :thumb:

Jeffrey

---EDIT----
p.s. het was toch de bedoeling dat het 10 rijen hoog is, en X rijen breed??? en niet 10 rijen breed en X rijen hoog?
 
Laatst bewerkt:
Hallo Jeffrey, je bent geweldig, het werkt goed, moest allen nog een } toevoegen onderin. bedankt en nog eens bedankt.:thumb:
 
Jefrey, zou ik onderstaande code in het script kunnen verwerken? dan zou ik de rijen om en om kunnen kleuren.
$kleur = ($i++ % 2) ? '#dff0fb' : '#9dafff';

echo '<td bgcolor="'.$kleur.'" height="15">'.$row[$i+($j*20)]['gbdatum'].'</td>';
echo '<td bgcolor="'.$kleur.'">'.$row[$i+($j*20)]['naam'].'</td>';
echo '<td bgcolor="'.$kleur.'">'.$row[$i+($j*20)]['email'].'</td>';
 
Hey,

je kunt het inderdaad met shortscript doen.. maar of dat nou netjes is? ik gebruik het iig niet...

je krijgt dan hetvolgende:
Voorbeeld
PHP:
<?php  
for($x = 0; $x < 100; $x++) 
{ 
  echo ($x % 2) ? 'aapje' : 'beertje';
  echo '<br />';
}
?>
Script
PHP:
<?PHP 
  for($i=0; $i<10; $i++) 
  { 
    echo '<tr>'; 
      for($j=0; $j<ceil($count/10); $j++) 
      { 
        if(isset($row[$i+($j*10)])) 
        { 
          // hey, hij bestaat... tonen die hap! 
          echo '<td height="15" style="background-color:'.($x % 2) ? '#FFFFFF' : '#000000'.'">'.$row[$i+($j*10)].'</td>'; 
          echo '<td style="background-color:'.($x % 2) ? '#FFFFFF' : '#000000'.'">'.$row[$i+($j*10)].'</td>';  
          echo '<td style="background-color:'.($x % 2) ? '#FFFFFF' : '#000000'.'">'.$row[$i+($j*10)].'</td>';  
          echo '<td  style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
        }else{ 
          // Hij bestaat niet meer.. gewoon lege tabel tonen 
          echo '<td height="15" style="background-color:'.($x % 2) ? '#FFFFFF' : '#000000'.'"></td>'; 
          echo '<td style="background-color:'.($x % 2) ? '#FFFFFF' : '#000000'.'"></td>';  
          echo '<td style="background-color:'.($x % 2) ? '#FFFFFF' : '#000000'.'"></td>';  
          echo '<td style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
      } 
    echo '</tr>'; 
  } 
?> 
</table>

Zelf geef ik de voorkeur aan de gewone if else, omdat het er netter uitziet en makkelijker te zien is wat er nu allemaal gebeurt..

PHP:
<?PHP 
  for($i=0; $i<10; $i++) 
  { 
    echo '<tr>'; 
      for($j=0; $j<ceil($count/10); $j++) 
      { 
        if($i % 2) { $kleur = '#FFFFFF'; }else{ $kleur = '#000000'; }
        if(isset($row[$i+($j*10)])) 
        {
          // hey, hij bestaat... tonen die hap! 
          echo '<td height="15" style="background-color:'.$kleur.'">'.$row[$i+($j*10)].'</td>'; 
          echo '<td style="background-color:'.$kleur.'">'.$row[$i+($j*10)].'</td>';  
          echo '<td style="background-color:'.$kleur.'">'.$row[$i+($j*10)].'</td>';  
          echo '<td  style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
        }else{ 
          // Hij bestaat niet meer.. gewoon lege tabel tonen 
          echo '<td height="15" style="background-color:'.$kleur.'"></td>'; 
          echo '<td style="background-color:'.$kleur.'"></td>';  
          echo '<td style="background-color:'.$kleur.'"></td>';  
          echo '<td style="border-right:#000000 1px solid; border-left:#000000 1px solid;">&nbsp;</td>'; // Spacer 
      } 
    echo '</tr>'; 
  } 
?> 
</table>


m.v.g.
Jeffrey
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan