Archief - php: 2 maal opgevraagde gegevens doorlopen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Incinnerator

Legacy Member
Yu allemaal

Als je een query uitvoert dan heb je een lijst van de gevraagde gegevens.
dan gebruik je een while loop om alles te tonen.

maar 2 maal die while loop achter elkaar zetten levert toch maar 1 keer het resultaat op. Hoe komt dit?

Kan je niet 2 maal door de lijst met gegevens gaan?

Greetz
Incinnerator

Dece

Legacy Member
kvermoed dat dit komt omdat de arraypointer op het laatste item staat.
probeer eens met reset($array[]);

servi

Legacy Member
post die code met die 2 whiles in eens. Vermoedelijk is het zoals dece zegt, maar zonder code kunnen we dat niet weten.

Incinnerator

Legacy Member
PHP:
$sqlophalenprogramma = mysql_query("SELECT * FROM F_Programma WHERE Afdeling_ID = '1' ORDER BY F_Programma_Datum");
$arraytype = array("H","P","F");
for ($i = 1; $i = 3; $i++)
	{
		while($recordophalenprogramma = mysql_fetch_array($sqlophalenprogramma))
			{
			$programmadatum = $recordophalenprogramma[2];
			$programmatype = $recordophalenprogramma[3];
			$programmatekst = $recordophalenprogramma[4];
							
			if($arraytype[$i] == $programmatype)
				{
					echo "$programmadatum $programmatype<br>";
				}
			}
		
	}

er staat dus in de databank een veld met type en daar staat H , P , F in
hij moet eerst alle velden met H ophalen
dan die van P en dan die van F

Dus ipv 3 queries te maken dacht ik om dus 3 maal door die opgehaalde lijst van gegevens te gaan.

servi

Legacy Member
:eek:
volgens mij heb je iets helemaal anders in je hoofd dan wat er in code staat, volgens mij is het dit wat je wil :


PHP:
 $sqlophalenprogramma = mysql_query('SELECT * FROM F_Programma WHERE Afdeling_ID = 1 ORDER BY naamvanveld2="H",naamvanveld2="P",naamvanveld2="F", F_Programma_Datum');
 
 while($recordophalenprogramma = mysql_fetch_array($sqlophalenprogramma)) {
 	$programmadatum = $recordophalenprogramma[2];
 	$programmatype = $recordophalenprogramma[3];
 	$programmatekst = $recordophalenprogramma[4];
 						    
 	echo "$programmadatum $programmatype<br>";
 
 }

overigens is het gevaarlijk om met array-plaatsen en * te werken, het kan immers gebeuren dat de kolommen van plaats verwisselen bij het ophalen van de data. Een betere methode is mysql_fetch_assoc te gebruiken, daar gebruik je de namen van de velden als referentie, dus bijvoorbeeld als volgt :
$programmadatum = $recordophalenprogramma['F_programma_datum'];


Incinnerator

Legacy Member
Waarom maak ik het altijd zo moeilijk

pfff I hate myself
Merci servi again

mysql_fetch_assoc
wat als je een functie toepast op een veld dan moet je zien dat je: AS orignelekolomnaam doet want anders komt die kolomnaam nimeer overeen.

just?

Greetz

Incinnerator

Legacy Member
Mag ik nog eens iets vragen?

ik die query uitgevoerd. Hij sorteert ze dus volgens H, P , F
en op datum ook maar dan krijg ik

1 9 2004
12 9 2004
19 9 2004
26 9 2004
5 9 2004
30 9 2004

5 9 2004 zou niet op die plek moeten staan.

Thx

servi

Legacy Member
da's teken dat je een verkeerde kolomtype hebt gebruikt, als je die datum immers opslaagt als een varchar of een tinytext dan gaat hij dat alfabetisch ordenen ( zoals bij u dus correct gedaan is), als je dat opslaagt als een date of datetime of timestamp dan gaat hij dat chronologisch weergeven.

je moet dus je veld-type aanpassen van varchar naar date

killgore

Legacy Member
btw: over je eerste code: je kan maar een keer een query-result assoc'en, dus als je daar 1 keer doorheenbent moet je opnieuw query'ien (tenzij je ffcourse een backup maakt van je gefetchte results, wat het logische is bij meerder gebruik).

servi zei:
overigens is het gevaarlijk om met array-plaatsen en * te werken, het kan immers gebeuren dat de kolommen van plaats verwisselen bij het ophalen van de data. Een betere methode is mysql_fetch_assoc te gebruiken, daar gebruik je de namen van de velden als referentie, dus bijvoorbeeld als volgt :
$programmadatum = $recordophalenprogramma['F_programma_datum'];
Ter aanvulling: mysql_fetch_assoc is zowat evensnel als mysql_fetch_row, maar mysql_fetch_array (combinatie van vorige) is wel redelijk wat trager. mysql_fetch_assoc is dus de beste keuze imho.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan