snelle vraag: if else binnen een sql row

Status
Niet open voor verdere reacties.

Dastrus

Gebruiker
Lid geworden
20 apr 2010
Berichten
21
Hallo,

Ik vroeg me af of het mogelijk is om een if statement te plaatsen binnen een sql row.

Dus zoiets als het onderstaande voorbeeld:

PHP:
<?php

$sql = mysql_query("SELECT * FROM trophies");
while ($row = mysql_fetch_array($sql))
{
	if ($row['if']) //Bijvoorbeeld: $geld > 10
	{
              //Voer code uit...
	}
}

?>

Ik wil de if/else statements namelijk zo dynamisch en makkelijk aanpasbaar mogelijk hebben. Misschien dat jullie nog een andere/juiste oplossing weten.

Alvast bedankt,

Dastrus
 
Je kunt binnen de SQL query een if uitvoeren:

[sql]
SELECT IF( geld > 10, 'iets', 'iets anders') as veldnaam
FROM trophies[/sql]

Als je daadwerkelijke code wilt ophalen en uitvoeren dan kan dat ook maar dan moet je heel goed weten wat je aan het doen bent. Dat is bijna nooit een goed idee, en extreem gevaarlijk want als je daar een security gaatje hebt kan iemand je hele webserver overnemen.

Dat gaat op deze manier:
PHP:
$var = 'return $geld > 10';

if ( eval( $var ) ) { // de inhoud van $var wordt nu uitgevoerd als PHP code en het resultaat wordt gebruikt in de IF.
  // code wordt uitgevoerd als $geld > 10
}

En nogmaals voor de duidelijkheid; eval is een zeer gevaarlijke construct die je beter kunt vermijden. Ik weet niet wat je precies wil doen maar er is vast een betere oplossing.
 
Ik probeer een achievement/trophy systeem te maken waarbij iedere trophy afhankelijk is van andere waardes etc. Bijvoorbeeld: Voor trophy 1 heb je 100 gold nodig op je account, voor trophy 2 moet je echter 25 forum posts hebben geplaatst. Dat soort dingen. Nu kan ik dat allemaal 1 voor 1 gaan checken met php, maar dat is niet te doen als er staats meer trophies bij komen. Het moet dus dynamisch zijn.

Nu kwam ik dus op dit idee, maar miss is dat inderdaad niet het beste. Maar ik weet niet wat ik anders zou kunnen doen. Misschien een idee?
 
Of je het nou via de database checkt of in PHP, in beide gevallen schrijf je evenveel code, maar het direct in PHP is veel sneller kwa uitvoering en ook veel veiliger. Ik zou ze dus gewoon allemaal individueel controleren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan