Hoi mensen,

Ik ben al effe een poosje bezig met onderstaand scriptje. Ik wil het aantal opdrachten (opdrachtid) per pagina beperken tot x (in dit v.b. is dat 3) en wanneer dit aantal is bereikt moet er een volgende pagina met $sHoofd en $sFooter komen. Wanneer ik echter b.v. 6 opdrachten heb dan geeft hij 6 pagina's met ieder 2 x dezelfde opdracht weer. Wanneer ik 3 opdrachten heb dan worden 6 pagina's weergeven; 1 pagina met 2x dezelfde opdracht, de volgende pagina met dezelfde opdracht maar dan 1x, etc.. Wat doe ik fout?
<?php
$iMarge = 3;

$result2 = mysql_query("SELECT opdrachtid FROM opdrachten WHERE map = '" . $map . "'",$db);
$iTotaalRijen = mysql_num_rows($result2);
if ($iTotaalRijen > $iMarge)
{
$iPaginas = ceil($iTotaalRijen / $iMarge);
}
else
{
$iPaginas = $iTotaalRijen;
}
$sHoofd = '<br/><img src="logo.gif"><p>';
$sFooter = '<br/>contact informatie<p>';
$iHuidigePagina = 1;

// Result points beginnen altijd met 0
for ($iRij = 0; $iRij < $iPaginas; $iRij++)
{
if ($iPaginas == 1)
{
print sprintf($sHoofd, $iHuidigePagina);
}

elseif ($iRij > 1 || ($iRij % $iPaginas) == 0)
{
// Dwing een nieuwe pagina af

print sprintf($sHoofd, $iHuidigePagina);
}

mysql_result($result2, $iRij, 'opdrachtid');
print $totaalopdrachten;
print '<br/>';

if ($iPaginas == 1)
{
print $sFooter;
}

elseif ($iRij > 1 || ($iRij % $iPaginas) == 1)
{
print $sFooter;
}
}
}
?>
<?php
if ($iTotaalRijen > $iMarge)
{
$iPaginas = ceil($iTotaalRijen / $iMarge);
}
else
{
$iPaginas = $iTotaalRijen;
}
// de if heeft weinig nut
// kan gewoon vervangen door dit
$iPaginas = ceil($iTotaalRijen / $iMarge);
?>

Verder zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Santhe, bedankt voor je reactie. Om te testen heb ik een factuur met 3 opdrachten en een factuur met 6 opdrachten Wanneer ik <?php $iPaginas = ceil($iTotaalRijen / $iMarge); ?>
neerzet en de factuur met 3 opdrachten oproep dan is het resultaat;
elke opdracht krijgt een eigen pagina.
Wanneer ik de factuur met 6 opdrachten oproep dan is het resultaat;
elke opdracht wordt 2x getoond en op een nieuwe pagina, m.a.w. ik krijg 6 pagina's met ieder dubbele opdrachten. Het aantal opdrachten wordt dus gedeeld door $iMarge en getoond. Er gaat iets fout in dit script maar ik weet niet wat?
En je wilt er 3 per pagina (max)?

Edit: En wat wil je hiermee?
print sprintf($sHoofd, $iHuidigePagina);
3 per pagina is slecht om te testen; ik wil kijken of het werkt.

Dit klinkt ongetwijfeld heel stom, maar iemand op een ander forum heeft print sprintf($sHoofd, $iHuidigePagina); voorgesteld en ik weet niet precies wat het doet, heb ernaar gezocht maar begrijp het niet goed. Daarnaast weet ik ook niet wat % doet. Als je een ander voorstel hebt hoor ik het graag...
Ik heb het inmiddels zo gedaan en dit geeft hetzelfde resultaat;
<?php
$iMarge = 3;

$iPaginas = ceil($iTotaalRijen / $iMarge);
$sHoofd = '<br/><img src="logo.gif"><p>';
$sFooter = '<br/>contact informatie<p>';

// Result points beginnen altijd met 0
for ($iRij = 0; $iRij < $iPaginas; $iRij++)
{
if ($iPaginas == 0)
{
print $sHoofd;
}

elseif ($iRij > 1 || ($iRij % $iPaginas) == 0)
{
// Dwing een nieuwe pagina af

print $sHoofd;
}

mysql_result($result2, $iRij, 'opdrachtid');
print $totaalopdrachten;
print '<br/>';

if ($iRij % $iPaginas == 0 || $iPaginas == $iRij)
{
print $sFooter;
}
}
?>
<?php
$iMarge = 3;

$sql = "SELECT opdrachtid FROM opdrachten WHERE map = '" . $map . "'";
$result2 = mysql_query($sql,$db);
if(!$result2)
{
echo 'Error: ' . mysql_error();
}
else
{
$teller = 0;
while($row = mysql_fetch_assoc($result2))
{
if(($teller % $iMarge) == 0)
{
echo '<br/><img src="logo.gif"><br/>';
}
// hier zet je de informatie
echo $row['opdrachtid'] . '<br/>';
$teller++;
if(($teller % $iMarge) == 0)
{
echo '<br/>contact informatie<br/>';
}
}
if(($teller % $iMarge) != 0)
{
echo '<br/>contact informatie<br/>';
}
}
?>
SanThe, allereerst heel veel dank voor je hulp. Wanneer ik de factuur met 6 opdrachten test geeft hij het weer in twee pagina's alleen deze 2 pagina's worden 6 x herhalend onder elkaar ge-echo-d. Hoe kan dat?
SanThe, hij doet het!! Ik had dit stukje script in een while lus gezet; ik heb deze eruit gehaald en nu doet ie wat ik wil. Enorm bedankt voor je hulp!!!

Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Heb je soms mijn stukje in een loop (for of while) in jouw stukje gezet?
Het totale plaatje zie je onder en hij doet nu precies wat ik wil; nogmaals bedankt en sorry voor het bumpen (wist ik niet)!
<?
print '<table border=0><tr valign=top><td width=700 height=425>';
$iMarge = 3;
$result2 = mysql_query("SELECT opdrachtid FROM opdrachten WHERE map = '" . $map . "'",$db);
$TotaalOpdracht = mysql_num_rows($result2);

if(!$result2)
{
echo 'Error: ' . mysql_error();
}
else
{
$teller = 0;
while($row = mysql_fetch_assoc($result2))
{
if(($teller % $iMarge) == 0)
{
echo '<br/><img src="logo.gif"><br/>';
}
// hier zet je de informatie
$result = mysql_query("SELECT * FROM opdrachten WHERE opdrachtid = '" . $row['opdrachtid'] . "'",$db);
while ($row = mysql_fetch_array($result))
{
$bestand = $row["bestand"];
$produktid = $row["produktid"];
$uitvoeringid = $row["uitvoeringid"];
$formaatid = $row["formaatid"];
$kort = $row["kort"];
$lang = $row["lang"];
$afwerkingid = $row["afwerkingid"];
$aantalid = $row["aantalid"];
$prijs = $row["prijs"];
$prijsKomma = number_format($prijs, 2, ',', '.');

$produktfind = mysql_query("SELECT produkt FROM produkten WHERE produktid = '".$produktid."'",$db);
$produkt_produkten = mysql_result($produktfind,0);

$uitvoeringfind = mysql_query("SELECT uitvoering FROM uitvoeringen WHERE uitvoeringid = '".$uitvoeringid."'",$db);
$uitvoering_uitvoeringen = mysql_result($uitvoeringfind,0);

$formaatfind = mysql_query("SELECT formaat FROM formaten WHERE formaatid = '".$formaatid."'",$db);
$formaat_formaten = mysql_result($formaatfind,0);

$afwerkingfind = mysql_query("SELECT afwerking FROM afwerkingen WHERE afwerkingid = '".$afwerkingid."'",$db);
$afwerking = mysql_result($afwerkingfind,0);

$aantalfind = mysql_query("SELECT aantal FROM aantallen WHERE aantalid = '".$aantalid."'",$db);
$aantal = mysql_result($aantalfind,0);

if (isset($alternate) && $alternate == "1")
{
$color = "#efefef";
$alternate = "2";
}
else
{
$color = "#dedede";
$alternate = "1";
}

if ($formaat_formaten == 'custom')
{
$totaalopdrachten = '<table class=\'kop\' border=0 cellspacing=0 cellpadding=2 width=700>
<tr><td colspan=\'6\' class=\'kop3\'><b>'.$bestand.'</b></td></tr>
<tr><td bgcolor='.$color.' width=220 class=\'kop2\'>Produkt</td>
<td bgcolor='.$color.' width=130 class=\'kop2\'>Uitvoering</td>
<td bgcolor='.$color.' width=100 class=\'kop2\'>Formaat</td>
<td bgcolor='.$color.' width=130 class=\'kop2\'>Afwerking</td>
<td bgcolor='.$color.' width=50 class=\'kop2\'>Aantal</td>
<td bgcolor='.$color.' width=70 class=\'kop2\'>Totaal</td></tr>
<tr><td width=220 bgcolor='.$color.'>'.$produkt_produkten.'</td>
<td width=130 bgcolor='.$color.'>'.$uitvoering_uitvoeringen.'</td>
<td width=100 bgcolor='.$color.'>'.
$kort.' x '.$lang.' cm.
</td>
<td width=130 bgcolor='.$color.'>'.$afwerking.'</td>
<td width=50 bgcolor='.$color.'>'.$aantal.'</td>
<td width=70 bgcolor='.$color.'>&euro; '.$prijsKomma.'</td></tr></table>';
}
else {
$totaalopdrachten = '<table class=\'kop\' border=0 cellspacing=0 cellpadding=2 width=700>
<tr><td colspan=\'6\' class=\'kop3\'><b>'.$bestand.'</b></td></tr>
<tr><td bgcolor='.$color.' width=220 class=\'kop2\'>Produkt</td>
<td bgcolor='.$color.' width=130 class=\'kop2\'>Uitvoering</td>
<td bgcolor='.$color.' width=100 class=\'kop2\'>Formaat</td>
<td bgcolor='.$color.' width=130 class=\'kop2\'>Afwerking</td>
<td bgcolor='.$color.' width=50 class=\'kop2\'>Aantal</td>
<td bgcolor='.$color.' width=70 class=\'kop2\'>Totaal</td></tr>
<tr><td width=220 bgcolor='.$color.'>'.$produkt_produkten.'</td>
<td width=130 bgcolor='.$color.'>'.$uitvoering_uitvoeringen.'</td>
<td width=100 bgcolor='.$color.'>'.$formaat_formaten.'</td>
<td width=130 bgcolor='.$color.'>'.$afwerking.'</td>
<td width=50 bgcolor='.$color.'>'.$aantal.'</td>
<td width=70 bgcolor='.$color.'>&euro; '.$prijsKomma.'</td></tr></table>';
}
echo $totaalopdrachten;
}
$teller++;
if(($teller % $iMarge) == 0)
{
echo '<br/>contact informatie<br/>';
}
}
if(($teller % $iMarge) != 0)
{
echo '<br/>contact informatie<br/>';
}
}
print '</td></tr></table>';
?>

Reageren