Ik weet, maar hier ben ik weer ;)
Ik neem alle adviezen zeker ten harte en ik leer er ook van en pas ze zeker toe (of later)
Maar ik ben even bezig geweest met het kijken of dit misschien goed is of beter kan.
wat het script doet, is kijken of de user een bepaalde service aan heeft of niet.
Ik heb het op deze manier gedaan en het werkt, maar ik vraag me af, kon/kan het het beter?


<?php
		/* Services & Options page */
	
		/* In this table are all the user_id`s with the corrensponding services_id */
		$sql = 'SELECT * FROM Services ORDER BY ID';
		$result = mysqli_query($connect, $sql);
		$Options = mysqli_fetch_all($result, MYSQLI_ASSOC);
		
		foreach($Options as $option) {
			$MySql = 'Select UserServices.Services_ID, Services.Services FROM UserServices INNER JOIN Services ON Services.ID WHERE Services.ID = UserServices.Services_ID AND User_ID ='.$_SESSION['ID'].';';
			$myresult = mysqli_query($connect, $MySql);
			$uoptions = mysqli_fetch_all($myresult, MYSQLI_ASSOC);
				
				echo $option['Services'];
					
				foreach($uoptions as $services) {
					if(!empty($services['Services_ID'] == $option['ID'])){
						echo " this is checked";
					}
				}
				echo "<br>";
		}
?>
probveer eerst eens je query goed te krijgen.

Gewoon los van je php-script.
Die query kun je gewoon in een database-tool draaien. Bijvoorbeeld PhpMyadmin.

Ik was hierboven te slordig met de copy/paste, maar bottom line is dat deze info met 1 query opgehaald kan worden.
Zorg dat je dat eerst werkend hebt.

Je draait nu 2 query's, deels over dezelfde tabel, waarbij de 2e query vaak herhaald wordt. Naast dat dat extra werk voor php is, is dat ook onoverzichtelijk. (en zoals ook in een eerder topic al aangehaald en hierboven ook opgemerkt: je ON clause bevat normaal een vergelijking tussen 2 velden uit 2 tabellen. Niet 1 veld.

--
en voor je opmerking "het werkt voor 1 testcase, maar niet voor een andere"

los op: 2x2 = 4.
Mijn script klopt, want $antwoord = 2 + 2; geeft 4.
En het klopt ook voor 0.

Maar waarom werkt het niet voor 1 en 3??

Probeer niet blind te staren op dat het soms werkt. Dat kan een uitzondering zijn.
Okay,

Heb er een hele nacht over geslapen en goed nagedacht, dit werkt deels.
Nu wil ik alles van de database in een array wegzetten en deze vergelijken met wat de user geselecteerd heeft.
Deels werkt, maar ik zit met een klein probleem.

output :
Yes => 2

Warning: Undefined array key "Schep" in /data/sites/web/[cut]/www/Users/inc/services.php on line 24

Yes => 3

Warning: Undefined array key "Paraplu" in /data/sites/web/[cut]/www/Users/inc/services.php on line 24
de code :

<?php
	$Serving = array("1"=>"Emmer", "2"=>"Schep", "3"=>"Paraplu", "4"=>"Bril");
		
	$Selection1 = $Serving['1'];
	$Selection2 = $Serving['2'];
	$Selection3 = $Serving['3'];
	$Selection4 = $Serving['4'];
/*	
	echo $Selection1." => ".$Selection2." => ".$Selection3." => ".$Selection4;
*/	
	// Database where users has their selected services //
		$MySql = 'SELECT * FROM UserServices WHERE User_ID = '.$_SESSION['ID'].'';
		$Myresult = mysqli_query($connect, $MySql);
		$uoptions = mysqli_fetch_all($Myresult, MYSQLI_ASSOC);
			
			foreach($uoptions as $data => $value) {
				$val = $value['Services_ID'];
				$Uselct = array($data);
				
				if($Uselct = $Serving) {
					echo "Yes => ".$val."<br />";
				}
				if($val = $Serving[$val]) {
					$gotcha = $Serving[$val]; // <= hier zit het probleem in, hoe los ik dat op?
					echo $gotcha."<br />";
				}
/*				echo"<pre>";
				print_r($Uselct);
				echo"</pre>";
*/
			}
?>
Leer het verschil tussen =, == en ===.

Verder word ik moe van de afhaalbalie-vragen die je zo kan googlen. Lees de tips eens!

Dit topic gaat dicht.

Reageren