Ik heb een site voor het beheren van telefoonnummers van een bedrijf. Nu moet er een lijst worden uitgedraait van alle interne nummers. Deze lijst moet op 1 A4 worden geplaatst.
Hiervoor heb ik de grootte van het lettertype aangepast en de lijst geprobeerd in twee tabellen te zetten.
Het probleem is dat deze lijst niet op alfabetische volgorde van naam kan worden gezet. Dit komt doordat ik alle even id-nummers in de rechter tabel heb geplaatst en alle oneven id-nummers in de linker tabel.
Weet er iemand een andere oplossing om te zorgen dat dit wel op alfabetische volgorde kan worden geplaatst?

Zie hier het tussenresultaat: http://rickvanderheiden.nl/telefoonlijst/internopnaamprint.php

De code:

<?php
ini_set('display_errors' , 1);
error_reporting(E_ALL ^ E_NOTICE);

//includes
include('config.php');
include('dbcon.php');

?>

<b>Interne nummers op naam</b>

<table BORDER="0" ALIGN="left" STYLE="font-size: 5.5pt;">
<tr align='left'>
	<td width="100"><b>Naam</b></td>
    <td width="10"><b>Telnr.</b></td>
    <td width="10"><b>Inlog</b></td>
    <td width="120"><b>Afdeling</b></td>
    <td width="10"><b>Groep</b></td>
	
	<td width="100"><b>Naam</b></td>
    <td width="10"><b>Telnr.</b></td>
    <td width="10"><b>Inlog</b></td>
    <td width="120"><b>Afdeling</b></td>
    <td width="10"><b>Groep</b></td>
</tr>
<?php 
	$sql3 = "SELECT * FROM intern WHERE naam LIKE '%$zoekterm%' ";
	$query3 = mysql_query($sql3); 
			if (!$query3) {
			echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$sql3;
			} 
			
			while($row2 = mysql_fetch_array( $query3 )) {
			$id = $row2['id'];
			$sql4 = "SELECT * FROM intern WHERE id=$id";
			$query4 = mysql_query($sql4);
			if (!$query4) {
			echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$sql3;
			} 
			if ($id % 2 == 1) {
			while($row4 = mysql_fetch_array( $query4 )) {
				$naam = $row4['naam'];
			}
			echo "<tr align='left'>";
			echo "<td width='100'>".$row2['naam']."</td>";
			echo "<td width='10'>".$row2['nummer']."</td>";
			echo "<td width='10'>".$row2['inlog']."</td>";
			echo "<td width='120'>".$row2['afdeling']."</td>";
			echo "<td width='10'>".$row2['groep']."</td>";
						
	}	if ($id % 2 == 0) {
			while($row4 = mysql_fetch_array( $query4 )) {
			$naam = $row4['naam'];
			}
			
			echo "<td width='100'>".$row2['naam']."</td>";
			echo "<td width='10'>".$row2['nummer']."</td>";
			echo "<td width='10'>".$row2['inlog']."</td>";
			echo "<td width='120'>".$row2['afdeling']."</td>";
			echo "<td width='10'>".$row2['groep']."</td>";

			echo "</tr>";
	}}
?></table>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin

if (window.print) {
document.write('<form>'
+ '<input type=button name=print value="Printen" '
+ 'onClick="javascript:window.print()"></form>');
}

// End -->
</script>
Hier werkt ie wel. Script uit post van 12.05.2009 14:45

Edit: Ik test natuurlijk met het array() en dat werkt. Je zou de resultaten (id's) eerst in een array() kunnen zetten.
Zo dan?
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

//includes
include('config.php');
include('dbcon.php');

echo '<b>Interne nummers op naam</b>';

// onderstaand de query
$query = mysql_query("SELECT naam, nummer, inlog, afdeling, groep FROM intern ORDER BY naam ASC");

// array vullen met resultaten
$array = array();
while($array[] = mysql_fetch_array( $query ));

// aantal kolommen die je wilt hebben
$kolommen = 2;

// dit is mysql_num_rows()
$max = mysql_num_rows($query);;

// aantal uitgerekende rijen
//$stap = ceil($max / $kolommen);
// vast aantal rijen
$stap = 79;

echo '<table BORDER="0" ALIGN="left" STYLE="font-size: 5.5pt;">
<tr align="left">
<td width="100"><b>Naam</b></td>
<td width="10"><b>Telnr.</b></td>
<td width="10"><b>Inlog</b></td>
<td width="120"><b>Afdeling</b></td>
<td width="10"><b>Groep</b></td>

<td width="100"><b>Naam</b></td>
<td width="10"><b>Telnr.</b></td>
<td width="10"><b>Inlog</b></td>
<td width="120"><b>Afdeling</b></td>
<td width="10"><b>Groep</b></td>
</tr>';

for($i=0; $i<$stap; $i++)
{
echo '<tr>';
for($j=0; $j<$kolommen; $j++)
{
if(($i + ($j * $stap)) < $max)
{
// hier moet je fetchen en de data neerzetten
$row2 = $array[$i + ($j * $stap)];
echo '<td width="100">' . $row2['naam'] . '</td>';
echo '<td width="10">' . $row2['nummer'] . '</td>';
echo '<td width="10">' . $row2['inlog'] . '</td>';
echo '<td width="120">' . $row2['afdeling'] . '</td>';
echo '<td width="10">' . $row2['groep'] . '</td>';
}
else
{
echo '<td width="100"> </td>';
echo '<td width="10"> </td>';
echo '<td width="10"> </td>';
echo '<td width="120"> </td>';
echo '<td width="10"> </td>';
}
}
echo '</tr>';
}
echo '</table>';
?>
Het script werkt nu wel =)
Super bedankt nogmaals.
Kwam het nou alleen omdat de resultaten niet in een array() stonden?
Ja. Dit: $i + ($j * $stap) geeft de juiste index van het array, maar dat werkt niet op een result van een query. Zoals je ziet wordt nu eerst alles in een array gezet en dan wordt het array doorlopen met de for's.

Reageren