ik wil graag een script maken dat records sorteert op een bepaalde waarde, in dit geval ja en nee. het script wat ik nu gemaakt heb slaat hierbij 1 record over als het ware.

de database opbouw met inhoud:
-- Tabel structuur voor tabel `klantdocument`
-- 

CREATE TABLE `klantdocument` (
  `id` int(11) NOT NULL auto_increment,
  `gebruikerID` int(11) default '0',
  `aanvraagID` int(11) NOT NULL default '0',
  `documentID` int(11) default '0',
  `binnen` enum('nee','ja') default NULL,
  PRIMARY KEY  (`id`),
  KEY `KlantID` (`gebruikerID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

-- 
-- Gegevens worden uitgevoerd voor tabel `klantdocument`
-- 

INSERT INTO `klantdocument` VALUES (3, 1, 5, 1, 'ja');
INSERT INTO `klantdocument` VALUES (4, 1, 5, 2, 'ja');
INSERT INTO `klantdocument` VALUES (5, 1, 5, 1, 'nee');
INSERT INTO `klantdocument` VALUES (6, 1, 5, 2, 'nee');


de php code:
<?php
include('config.php');

$aanvraagID	= $_GET['aanvraagID']; //aanvraagID uit URL halen

//alle documenten ophalen die binnen zijn
$query1 		= "SELECT * FROM klantdocument WHERE aanvraagID=".$aanvraagID." AND binnen='ja'";
$result1		= mysql_query($query1) or die (mysql_error());
$row1_1			= mysql_fetch_array($result1);

//naam van klant ophalen
$query2			= "SELECT voornaam,tussenvoegsel,achternaam FROM gebruiker WHERE id=".$row1_1['gebruikerID'];
$result2		= mysql_query($query2) or die (mysql_error());
$row2			= mysql_fetch_array($result2);
$voornaam		= $row2['voornaam'];
$tussenvoegsel	= $row2['tussenvoegsel'];
$achternaam		= $row2['achternaam'];

	echo('<table cellspacing="0" width="150">');
	echo('<tr><th><h3>'.$voornaam.' '.$tussenvoegsel.' '.$achternaam.'</h3></th></tr>');
	echo('<tr><td> </td></tr>');
	echo('<tr><td> </td></tr>');
	echo('<tr><th style="border-top: 1px solid Black" style="border-bottom: 1px solid Black" style="border-left: 1px solid Black" style="border-right: 1px solid Black"><h3>Binnen</h3></th></tr>');
	echo('<tr><th style="border-bottom: 1px solid Black" style="border-left: 1px solid Black" style="border-right: 1px solid Black" align="left">Document</th><th></th>');
	
	while($row1 = mysql_fetch_array($result1))
	{
	//document naam ophalen
	$query3		= "SELECT document_naam FROM documenten WHERE id=".$row1['documentID'];
	$result3	= mysql_query($query3);
	$document	= mysql_result($result3,'document_naam');
	
	echo('<tr><td style="border-bottom: 1px solid Black" style="border-left: 1px solid Black" style="border-right: 1px solid Black">'.$document.'</td><td>'.$row1['id'].'</tr>');
	}
	
		//alle documenten ophalen die nog niet binnen zijn
		$query4 		= "SELECT * FROM klantdocument WHERE aanvraagID=".$aanvraagID." AND binnen='nee'";
		$result4		= mysql_query($query4) or die (mysql_error());
		if (mysql_num_rows($result4) >= 0)
		{
			echo('<tr><td> </td></tr>');
			echo('<tr><td> </td></tr>');
			echo('<tr><th style="border-top: 1px solid Black" style="border-bottom: 1px solid Black" style="border-left: 1px solid Black" style="border-right: 1px solid Black"><h3>Nog niet binnen</h3></th></tr>');
			echo('<tr><th style="border-bottom: 1px solid Black" style="border-left: 1px solid Black" style="border-right: 1px solid Black" align="left">Document</th></tr>');
			
			while($row4	= mysql_fetch_array($result4))
			{
			$query5		= "SELECT document_naam FROM documenten WHERE id=".$row4['documentID'];
			$result5	= mysql_query($query5);
			$document	= mysql_result($result5,'document_naam');
			
			echo('<tr><td style="border-bottom: 1px solid Black" style="border-left: 1px solid Black" style="border-right: 1px solid Black">'.$document.'</td><td>'.$row4['id'].'</tr>');
			}
		}
	echo('</table>');		
?>


het resultaat is hier te vinden
http://www.elektronica-onderdelen.nl/gedegen/?page=ingeleverdedocumenten&aanvraagID=5

ik zie de fout niet, het zal wel weer net zo'n stomme fout zijn als gisteren, maar zit er al ruim een half uur op te staren en te proberen.

ps, niets over de opmaak, dat komt later en is niet voor mijn rekening.
Het komt omdat je eerst mysql_fetch array 1 keer uitvoert (regel 9) en later pas in een while loop (regel 26).
mmh juist, en hoe moet ik het het dan oplossen omdat ik de gebruikerID nodig heb in de query om de klantgegevens op te halen, en de naam eerder weergegeven moet worden dan de resultaten
Staat in je tabel klantdocument niet toevallig een veld gebruikerID? Dan kun je de twee queries combineren:

SELECT
d.gebruikerID,
g.voornaam,
g.tussenvoegsel,
g.achternaam
FROM klantdocument AS d, gebruiker AS g
WHERE
d.gebruikerID = g.id
ik heb nu de volgende vereenvoudigde code
<?php 
$query1 		= "SELECT *,voornaam,tussenvoegsel,achternaam FROM klantdocument AS document, gebruiker AS gebruiker WHERE document.aanvraagID=".$aanvraagID." AND document.binnen='ja' AND gebruiker.id=document.gebruikerID";
$result1		= mysql_query($query1) or die (mysql_error());
echo('<tr><th><h3>'.$gebruiker['voornaam'].' '.$gebruiker['tussenvoegsel'].' '.$gebruiker['achternaam'].'</h3></th></tr>');
?>


maar hij geeft de naam niet weer.

EDIT: ik zie net een stomme fout

<?php 
$query1 		= "SELECT *,voornaam,tussenvoegsel,achternaam FROM klantdocument AS document, gebruiker AS gebruiker WHERE document.aanvraagID=".$aanvraagID." AND document.binnen='ja' AND gebruiker.id=".$document['gebruikerID'];
$result1		= mysql_query($query1) or die (mysql_error());
echo('<tr><th><h3>'.$gebruiker['voornaam'].' '.$gebruiker['tussenvoegsel'].' '.$gebruiker['achternaam'].'</h3></th></tr>');
?>


alleen nu zegt hij: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
dus ik zal toch nog wel een foutje erin hebben.

maar ik heb totaal geen ervaring met het samenvoegen van meerdere query's tot een query. dat maakt het er niet echt makkelijker op natuurlijk :s
Ja, je moet in je select nu bij elk veld aangeven uit welke tabel hij komt. En je tabelalias 'gebruiker' is hetzelfde als de oorspronkelijke naam, dus dat schiet niet op. Verder geen * gebruiken, gewoon precies de velden opgeven die je nodig hebt.

Kijk even naar mijn vorige post, daarin vind je de juiste syntax.

Reageren