Hallo, ik ben bezig met een volgsysteem. Er kunnen verschillende kaarten per leerling worden aangemaakt. Aan iedere kaart hangt een datum. In een andere tabel heb ik alle items van de kaart opgeslagen. In een derde tabel staat de score van de kaart. Ik heb al dat als er en kaart wordt aangeklikt dat de scores van die kaart zichtbaar zijn door kruisjes(zwart). Nu wil ik dat er ook kruisjes worden gezet op de plaatsen waar op de vorige kaarten de score stond.
Dit is mijn code:

<?php $sql_script_items_gray = "SELECT script_items.*, scripts.* FROM script_items LEFT JOIN scripts ON scripts.id = script_items.script_id WHERE script_items.kaart_item_id = :kaart_item_id AND script_items.script_id != :script_id AND scripts.datum < :datum";
	$stmt_script_items_gray = $pdo->prepare($sql_script_items_gray);
        $stmt_script_items_gray->bindParam(':script_id', $row_script['id'], PDO::PARAM_STR);
	$stmt_script_items_gray->bindParam(':kaart_item_id', $row_een['id'], PDO::PARAM_STR);
	$stmt_script_items_gray->bindParam(':datum', $datum, PDO::PARAM_STR);
	$stmt_script_items_gray->execute();
		if($stmt_script_items_gray->rowCount() > 0)  {	
			$result_script_items_gray = $stmt_script_items_gray->fetchAll();
			foreach($result_script_items_gray as $row_script_items_gray){
			$een_gray = ($row_script_items_gray['nummer'] == 1 ? '<i class="fa fa-times gray een"></i>' : '');
			$twee_gray = ($row_script_items_gray['nummer'] == 2 ? '<i class="fa fa-times gray twee"></i>' : '');
			$drie_gray = ($row_script_items_gray['nummer'] == 3 ? '<i class="fa fa-times gray drie"></i>' : '');
			$vier_gray = ($row_script_items_gray['nummer'] == 4 ? '<i class="fa fa-times gray"></i>' : '');
			$vijf_gray = ($row_script_items_gray['nummer'] == 5 ? '<i class="fa fa-times gray"></i>' : '');
			$zes_gray = ($row_script_items_gray['nummer'] == 6 ? '<i class="fa fa-times gray"></i>' : '');
			$zeven_gray = ($row_script_items_gray['nummer'] == 7 ? '<i class="fa fa-times gray"></i>' : '');
			$acht_gray = ($row_script_items_gray['nummer'] == 8 ? '<i class="fa fa-times gray"></i>' : '');
										}
									
		}else{
		        $een_gray 		= '';
		        $twee_gray 		= '';
			$drie_gray 		= '';
			$vier_gray 		= '';
			$vijf_gray		= '';
			$zes_gray		= '';
			$zeven_gray 	        = '';
			$acht_gray		= '';
								}
echo '<tr class="inside"><td class="title">'.$row_een['titel'].'</td>
<td class="een" width="30px">'.$een_gray.$een.'</td>
<td class="twee" width="30px">'.$twee_gray.$twee.'</td>
<td class="drie" width="30px">'.$drie_gray.$drie.'</td>
<td class="vier" width="30px">'.$vier_gray.$vier.'</td>
<td class="vijf" width="30px">'.$vijf_gray.$vijf.'</td>
<td class="zes" width="30px">'.$zes_gray.$zes.'</td>
<td class="zeven" width="30px">'.$zeven_gray.$zeven.'</td>
<td class="acht" width="30px">'.$acht_gray.$acht.'</td>

</tr>'; ?>


nu is het zo dat hij alleen de laatste score laat zien van de kaart ervoor, maar als er bijvoorbeeld drie kaarten in de database staan, moet hij twee kruisjes aangeven in het grijs: bijvoorbeeld 1,3. Maar als er een nummer dubbel is, moet hij een kruisje laten zien in plaats van twee
Sanne Zuidema op 17/08/2015 15:15:31
nu is het zo dat hij alleen de laatste score laat zien van de kaart ervoor

Heel snel kijkend naar jouw code: komt dat niet gewoon doordat je elke stap van de foreach-loop alle _gray-waarden leeggooit als er dan geen resultaat is?

Als je die waarden nu eens initialiseert op "leeg" en dan de foreach-lus doorloopt en daarbij deze waarden niet reset?
ik heb geprobeerd wat jij zei, eerst de waarden leeg intinaleren en dan de foreach, maar dat werkt niet. krijg nog steeds per item een kruisje te zien in plaats van twee
Heb je ook alle regels binnen de loop aangepast van:
$een_gray = ($row_script_items_gray['nummer'] == 1 ? '<i class="fa fa-times gray een"></i>' : '');


naar iets van de vorm:
if ($row_script_items_gray['nummer'] == 1) {
    $een_gray = '<i class="fa fa-times gray een"></i>';
}

zodat de waarden ook echt niet gereset worden?

Reageren