array vraag

Status
Niet open voor verdere reacties.

siem1986

Gebruiker
Lid geworden
30 dec 2009
Berichten
8
De situatie is als volgt ik heb een tabel genaamd;

t_adds deze ziet er als volgt uit;

id winkel_id titel
26 1 test
27 3 test
28 3 test2

Wat ik nu wil doen is plaatjes weergeven iedere "id" komt overeen met een plaatje. Deze plaatjes moeten echter in deze volgorde getoond worden namelijk;

1 plaatje van winkel 1, dan een plaatje van winkel 2, etc.

In de tabel komt momenteel geen plaatje voor van winkel 2 nu laat het script dat ik reeds heb alleen maar een plaatje zien van winkel 1. Dat is dan ook hetgeen waar ik tegenaan loop.

Kan iemand mij helpen?

Het script;
PHP:
<?php
	echo "<script type=\"text/javascript\" src=\"/jquery/js/jquery-1.3.2.min.js\"></script>\n";
	echo "<script type=\"text/javascript\" src=\"/jquery/js/jquery.slideshow.js\"></script>\n";

	$winkel = array();
	$adds = array();
	
	$x_winkels 	= 1;
	$x_adds 	= 0;

	$query = "SELECT DISTINCT `winkel_id` FROM `t_cms_adds`";
	$result = @mysql_query($query);
	while ($row = mysql_fetch_object($result)) 
	{
		$winkel[] = $row->winkel_id;
		$x_winkels++;
	}
	
	foreach($winkel as $value) {
		$query = "SELECT `id` FROM `t_cms_adds` WHERE `winkel_id` = ".$value."";
		$result = @mysql_query($query);
		while ($row = mysql_fetch_object($result)) 
		{
			$adds[$value][] = $row->id;
			$x_adds++;
		}
	}

	$x = 1;
	echo "<div class=\"slideshow slideshow\">\n";
	for($i = 1; $i <= ($x_adds * $x_winkels); $i++) {		
		
		if($i < $x_winkels) {
			@$img_path = "/adds/".substr(("000000".reset($adds[$x])), -6)."0.jpg";					
		}
		else {
			@$img_path = "/adds/".substr(("000000".next($adds[$x])), -6)."0.jpg";
		}
		
		if(file_exists($_SERVER['DOCUMENT_ROOT'].$img_path)) {
			
			echo "<img src=\"".$img_path."\" style=\"width: 600px; height: 450px; padding-left: 100px;\" />\n";
		}				
		
		$x++;
		
		if($x > $x_winkels) {
			$x  = 1;
		}
	}

	echo "</div>\n";
	// http://malsup.com/jquery/cycle/browser.html
	echo "<script type=\"text/javascript\">$('.slideshow').cycle({fx: 'none', timeout:7000});</script>\n";
?>
 
Laatst bewerkt:
Er staat volgensmij vrij hardcoded bovenaan dat x_winkels 1 is, zou dat er niet mee te maken kunnen hebben? :)
 
Deze 1 heeft er niets mee te maken deze is wel nodig om de for loop uit te voeren.
 
Ahja ik zie het.

Hm, wat er waarschijnlijk gebeurd is dat als je als winkel ID's ( 1, 3, 4 ) hebt, er 3 winkels geteld worden, wat betkeend dat je For loop over de getallen ( 1, 2, 3 ) heen loopt.

Echter; er zijn geen winkels met id 2, dus die worden niet getoond. En over id 4 wordt nooit heengelopen, omdat er maar 3 winkels zijn en de loop dus van 1 tot 3 loopt.

Ik denk dat je het probleem kunt fixen door de For loop te vervangen door een Foreach, die over de lijst met winkel_id heen loopt.

Daarnaast tel je x_adds, maar dat is het totaal aantal adds opgeteld; en bij je for loop vermigvuldig je dat ook nog eens met het aantal winkels; je loop gaat dus veel te lang door (en zal heel veel fouten gooien, als je die niet onderdrukt)

Je moet ook hier opletten dat je alleen de plaatjes toont die daadwerkelijk bestaan; als niet elke winkel evenveel ads heeft moet de code daar rekening mee houden en alleen over degene lopen die bestaan.


Ik raad je ook aan om Error_reporting aan te zetten zodat je zelf de fouten ziet die het script gooit, en geen @ te gebruiken om dingen weg te moffelen, want daardoor wordt het alleen maar onduidelijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan