3dimensionale array loopen.

Status
Niet open voor verdere reacties.

Simolokid

Gebruiker
Lid geworden
25 apr 2009
Berichten
92
Hey helpmij.nl

Ik ben bezig met het maken van een website waarbij ik nieuws uit de database haal en deze ordelijk neerzet.

Nu is alleen het probleem het volgende:

Ik krijg 't niet geloopt. Ik heb steeds duplicaten om 1 of andere reden.

Van db naar arrays
PHP:
$query = mysqli_query($link, "SELECT nieuws.ntitel,nieuws.nbericht,nieuws.ntijd,content.ctitel,content.cinhoud FROM content, nieuws");
$ctitel = array();
$ccontent = array();
$ntitel = array();
$ncontent = array();
$ntijd = array();
$nieuws = array();
if($query){
	while($result = mysqli_fetch_assoc($query)){
		$ctitel[] = $result['ctitel'];
		$ccontent[] = $result['cinhoud'];
		$ntitel[] = $result['ntitel'];
		$nbericht[] = $result['nbericht'];
		$ntijd[] = $result['ntijd'];
		
	}
	$nieuws[] = $ntitel;
	$nieuws[] = $nbericht;
	$nieuws[] = $ntijd;
}

Van arrays naar... loops/echos -> de gebruiker
PHP:
foreach($nieuws as $titel){
		echo "<a href=\"\">$titel</a>";
		foreach($titel as $bericht){
			echo $bericht."<br />";
			foreach($bericht as $tijd){
				echo $tijd."<br />";
			}
		
		}
	}

Maar die levert duplicaten op.

Ook deze methode werkt niet:
PHP:
for($i=0; $i < count($nieuws); $i++){
		echo $ntitel[$i];
		for($j = 0; $j < count($nieuws[1]); $j++){
			echo $nbericht[$j];
		}
	}
En dan natuurlijk even aangevuld met de tijd nog in een 3e for loop.

Kan iemand me vertellen wat ik fout doe? Dit moet toch kunnen zou je zeggen =/

Dankjullie wel! :)

Groetjes,

Simolokid
 
Waarom stop je fields van 1 record in verschillende arrays? Dat is om problemen vragen. Je kan veel beter met 1 enkele array werken. Gebaseerd op de query die je doet is de hele zooi ook slechts 1d. Dus die loops houden geen steek :p

Geef ook je vars deftige namen, en gebruik camelCase ofzo.
 
Die duplicates komen uit je query, je hebt data uit 2 tabellen zonder een koppelvoorwaarde, dus hij maakt gewoon elke mogelijke combinatie met data uit die twee tabellen.

Je moet een WHERE opnemen die aangeeft via welke velden de tabellen gekoppeld zijn.
 
Even reageren op de verschillende berichten, gezien een aantal zaken gewoon nog niet helemaal duidelijk zijn.

Die duplicates komen uit je query, je hebt data uit 2 tabellen zonder een koppelvoorwaarde, dus hij maakt gewoon elke mogelijke combinatie met data uit die twee tabellen.

Je moet een WHERE opnemen die aangeeft via welke velden de tabellen gekoppeld zijn.

De gegevens zijn niet gekoppeld. De tabel content bevat simpelweg dingen als de welkomstekst. de tabel nieuws bevat alleen nieuwsitems, en heeft verder 0 komma geen link met de tabel content.

Waarom stop je fields van 1 record in verschillende arrays? Dat is om problemen vragen. Je kan veel beter met 1 enkele array werken. Gebaseerd op de query die je doet is de hele zooi ook slechts 1d. Dus die loops houden geen steek

Geef ook je vars deftige namen, en gebruik camelCase ofzo.

Waarom stop ik de fields van 1 record in verschillende arrays? Omdat ik dmv het gebruik van bv. $result['title'] steeds maar 1 waarde heb. Dit is prima als ik het in een loopje douw bij bijvoorbeeld totaaloverzichten, maar als ik maar 1 enkele waarde wil weergeven zou ik geen idee hebben hoe ik dit uit een enkele array moet halen, gezien ik de index van de waarde simpelweg niet weet.

Ik ga trouwens vandaag googlen op camelCase.

Al met al is mijn vraag wel beantwoord, maar ik kan weinig met het antwoord gezien ik nou eigenlijk nog steeds geen idee heb hoe ik dit moet oplossen.

Wel in iedergeval bedankt voor de antwoorden tot zo ver!

Groetjes,

Simolokid
 
Als de data niet verbonden is, dan moet je 2 queries gebruiken... je krijgt nu een overkill aan resultaten terug.

Als je ene tabel 5 rijen bevat (met welkomstberichten) en de andere 10 (met nieuwsberichten) dan krijg je in totaal 50 resultaten terug; elke mogelijk combinatie van een welkomstbericht met een nieuwsbericht, en dat is waarschijnlijk waar al je duplicates vandaan komen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan