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>
Hoe krijg ik nu automatisch die rechter kolom dan als mijn A4 vol is???
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

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

// onderstaand array is dus jouw database
$query = mysql_query("SELECT * FROM intern ORDER BY naam ASC"); 
$max = mysql_num_rows($query);

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

// afblijven
$stap = ceil($max / $kolommen);

echo '<table>';
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
			while($row = mysql_fetch_array( $query )) {
			$id = $row['id'];
						
			$sql2 = "SELECT * FROM intern WHERE id=$id";
			$query2 = mysql_query($sql2);
			if (!$query2) {
			echo "Foutje in je query: ".mysql_error().".<br />De query was: ".$query;
			} 
			
			while($row2 = mysql_fetch_array( $query2 )) {
				$naam = $row2['naam'];
			}
						
            echo "<td width='140'>" . $row['naam']. '</td>';
			echo "<td width='100'>" . $row['nummer'] . '</td>';
			echo '</tr>';
			}
		}
        else
        {
            echo '<td> </td>';
        }
    }
    echo '</tr>';
}
echo '</table>';
?>
rick schreef op 12.05.2009 11:31
Hoe krijg ik nu automatisch die rechter kolom dan als mijn A4 vol is???[/code]

Ik denk niet dat dat gaat...
De echo kun je uiteraard uitbreiden.
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

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

// onderstaand array is dus jouw database
$query = mysql_query("SELECT * FROM intern ORDER BY naam ASC");
$max = mysql_num_rows($query);

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

// afblijven
$stap = ceil($max / $kolommen);

echo '<table>';
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 = mysql_fetch_array( $query ));
echo '<td width="100">' . $row2['naam'] . '</td>';
}
else
{
echo '<td> </td>';
}
}
echo '</tr>';
}
echo '</table>';
?>
Hij doet het hartstikke bedankt voor jullie hulp.
Mijn uiteindelijke code:

<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

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

// onderstaand array is dus jouw database
$query = mysql_query("SELECT * FROM intern ORDER BY naam ASC"); 
$max = mysql_num_rows($query);

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

// afblijven
$stap = ceil($max / $kolommen);
?>
<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
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 = (mysql_fetch_array( $query ));
            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> </td>';
        }
    }
    echo '</tr>';
}
echo '</table>';
?>

Graag gedaan en mooi dat je tevreden bent.
Ik zit nu een beetje te proberen weer met het script. Nu wordt de alfabetische volgorde van links naar rechts gedaan en zo de gehele lijst door. Nu ben ik aan het proberen om de volgorde van boven naar beneden te krijgen. En wanneer de linker tabel 79 rows telt de rechter tabel te openen.

De linkerkant gaat maar tot 79 rows maar nu moet ik de rest van de rows nog in de rechter tabel plaatsen.

Dit stukje code heb ik tot nu toe:

<?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 array is dus jouw database
$query = mysql_query("SELECT * FROM intern ORDER BY naam ASC"); 
$aantal = mysql_num_rows($query);

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


?>
<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
// afblijven
$max = 79;

for($links=0; $links<$max; $links++)
{
    echo '<tr>';

       // if($max < $aantal) 

	if ($links < $max)
    {
            // hier moet je fetchen en de data neerzetten
			$row2 = (mysql_fetch_array( $query ));
            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> </td>';
    }       
}

echo '</table>';
?>
Dit zou het moeten doen.
<?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 * FROM intern ORDER BY naam ASC");

// 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 = (mysql_fetch_array( $query ));
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>';
?>
Edit: Script gewijzigd.
Ik had even rijen veranderd ipv 2 naar 79. Hij pakt nu wel precies 79 rijen alleen de alfabetische volgorde is nog steeds van links naar rechts.
Deze moet nu nog van boven naar beneden worden. Ik probeer het ook als ik het weet post ik het.

Dus resultaat moet worden:

a f
b g
c h
d i
e j

Het resultaat is nu:

a b
c d
e f
g h
i j




<?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 * FROM intern ORDER BY naam ASC"); 

// aantal rijen die je wilt hebben
$rijen = 79;

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

// afblijven
$kolommen = ceil($max / $rijen);

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<$rijen; $i++)
{
    echo '<tr>';
    for($j=0; $j<$kolommen; $j++)
    {
        if(($i + ($j * $rijen)) < $max)
        {
            // hier moet je fetchen en de data neerzetten
            $row2 = (mysql_fetch_array( $query ));
            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>';
?> 
Ik heb mijn script gewijzigd. Zou nu goed moeten zijn.
SanThe schreef op 12.05.2009 15:06
Ik heb mijn script gewijzigd. Zou nu goed moeten zijn.


Nog steeds hetzelfde probleem.

Het resultaat is nu:

a b
c d
e f
g h
i j

En het resultaat moet worden:

a f
b g
c h
d i
e j

Reageren