[Opgelost] Veld uit database halen met function?
Ik zit met een probleem...
Ik probeer met function een status uit de database te krijgen (Het is 0 of 1), maar hij laat niks zien...
Ik heb het al meerdere malen geprobeerd... Maar het werkt steeds niet...
Dit is het scriptje:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
function KrijgInstelling($InstellingNaam){
$KrijgSetting = mysql_query("SELECT status FROM Site_cron WHERE naam = '". $InstellingNaam ."'");
}
?>
function KrijgInstelling($InstellingNaam){
$KrijgSetting = mysql_query("SELECT status FROM Site_cron WHERE naam = '". $InstellingNaam ."'");
}
?>
Iemand een oplossing?
Mvg,
Jasper
Gewijzigd op 13/08/2012 11:57:26 door Jasper Vriends
Kijk eens wat een functie in php allemaal moet doen: http://www.php.net/manual/en/functions.user-defined.php
Daarnaast krijg je geen waarde in je $KrijgSetting, maar een resource. Als gevolg van je mysql_query().
Tenzij je query mislukt, dan krijg een FALSE.... waar je dan niets mee doet.
Gewijzigd op 12/08/2012 14:02:42 door Eddy E
Ik gebruik het hiervoor:
Jasper
Ik zie dat je veranderd hebt, ff kijken...
jasper
Toevoeging op 12/08/2012 14:14:33:
Hij werkt nu, ik heb er deze code van gemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
function KrijgInstelling($InstellingNaam){
$KrijgSetting = mysql_query("SELECT status FROM Site_cron WHERE naam = '". $InstellingNaam ."'");
$SettingZeggen = mysql_fetch_array($KrijgSetting);
$Status = $SettingZeggen['status'];
return $Status;
}
?>
function KrijgInstelling($InstellingNaam){
$KrijgSetting = mysql_query("SELECT status FROM Site_cron WHERE naam = '". $InstellingNaam ."'");
$SettingZeggen = mysql_fetch_array($KrijgSetting);
$Status = $SettingZeggen['status'];
return $Status;
}
?>
Bedankt van het zeggen van de waarde, anders had ik er niet aan gedacht XD.
Jasper
P.S. Misschien dat hij makkelijker kan, maar ik hou hem hier op :)
Gewijzigd op 12/08/2012 14:05:50 door Jasper Vriends
Je hebt nu nog wat onnodig gekopieer:
En het kan korter (zonder moeilijk te doen):
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
function krijginstelling($naam){
$res = mysql_query("SELECT status FROM Site_cron WHERE naam = '".$naam."'");
$res = mysql_fetch_array($res);
return $res['status'];
}
?>
function krijginstelling($naam){
$res = mysql_query("SELECT status FROM Site_cron WHERE naam = '".$naam."'");
$res = mysql_fetch_array($res);
return $res['status'];
}
?>
Daarnaast... waarom gebruik jij $VariabeleMetHoofdletter? Zonder hoofdletters is minder foutgevoelig en staat netter (dan vallen hoofdletters nog op...).
Daarnaast is het gebruikelijk om te programmeren in de Engelse taal, dus:
Eddy Erkelens op 12/08/2012 15:12:29:
Bijna perfect.
Je hebt nu nog wat onnodig gekopieer:
En het kan korter (zonder moeilijk te doen):
Daarnaast... waarom gebruik jij $VariabeleMetHoofdletter? Zonder hoofdletters is minder foutgevoelig en staat netter (dan vallen hoofdletters nog op...).
Je hebt nu nog wat onnodig gekopieer:
En het kan korter (zonder moeilijk te doen):
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
function krijginstelling($naam){
$res = mysql_query("SELECT status FROM Site_cron WHERE naam = '".$naam."'");
$res = mysql_fetch_array($res);
return $res['status'];
}
?>
function krijginstelling($naam){
$res = mysql_query("SELECT status FROM Site_cron WHERE naam = '".$naam."'");
$res = mysql_fetch_array($res);
return $res['status'];
}
?>
Daarnaast... waarom gebruik jij $VariabeleMetHoofdletter? Zonder hoofdletters is minder foutgevoelig en staat netter (dan vallen hoofdletters nog op...).
Dankje Eddy, ik zal het gebruiken ;)
Maar... Ik vind het juist weer fijner met hoofdletters, dan zie ik sneller waar het begint :) (En ik gebruik zo'n php editer, en die laat automatisch de variablen zien die bijv. beginnen met $Va... En dan kan je gewoon kiezen, gaat sneller dan je denkt XD)
Ozzie PHP op 12/08/2012 15:18:39:
Ik programmeer Nederlands, dan is het ook gelijk een stuk geloofwaardiger dat ÍK het script heb gemaakt... En niet iemand anders ;)
En uhmm... Mag ik mijn eigen script maken en zeggen hoe ze moeten? Want dat 'gebruikelijke' maakt niks uit, het werkt gewoon...
Maar wel bedankt voor de informatie, dat ga ik dan voor mijn andere projecten misschien wel gebruiken :)
Bedankt voor het helpen Eddy en Ozzie :)
Mvg.
Jasper
Gewijzigd op 12/08/2012 15:29:02 door Jasper Vriends
Jasper Vriends op 12/08/2012 15:26:38:
Ik programmeer Nederlands, dan is het ook gelijk een stuk geloofwaardiger dat ÍK het script heb gemaakt... En niet iemand anders ;)
En uhmm... Mag ik mijn eigen script maken en zeggen hoe ze moeten? Want dat 'gebruikelijke' maakt niks uit, het werkt gewoon...
En uhmm... Mag ik mijn eigen script maken en zeggen hoe ze moeten? Want dat 'gebruikelijke' maakt niks uit, het werkt gewoon...
Het is ook maar een tip die ik je geef. Het zal ook allemaal best werken. Dat geloof ik direct. Maar deze "standaarden" helpen je wel als je met meerdere mensen gaat samenwerken. Engels is de standaardtaal (zodat ook mensen buiten Nederland je code kunnen lezen), en ook voor functiebenamingen worden bepaalde standaarden gebruikt.
Stel ik zou een heel groot huis hebben met een racebaan waar ik iedere dag rondjes op rij. Ik rij in m'n racewagen 300 km/uur en ik rij altijd aan de linkerkant van de weg omdat ik dat fijn vind. Dan ga ik voor het eerst in m'n leven rijden op de openbare weg waar ook andere weggebruikers op rijden. Hmmm, misschien kan ik toch maar beter niet 300 km/uur rijden en dat links rijden is ook niet altijd even handig merk ik nu.
"Regeltjes" zijn er niet voor niets. Of je er iets mee doet moet je helemaal zelf weten, maar zeg niet dat niemand je er ooit op gewezen heeft ;-)
En beveiliging van de query ontbreekt ook nog.
Ozzie PHP op 12/08/2012 15:42:36:
Het is ook maar een tip die ik je geef. Het zal ook allemaal best werken. Dat geloof ik direct. Maar deze "standaarden" helpen je wel als je met meerdere mensen gaat samenwerken. Engels is de standaardtaal (zodat ook mensen buiten Nederland je code kunnen lezen), en ook voor functiebenamingen worden bepaalde standaarden gebruikt.
Stel ik zou een heel groot huis hebben met een racebaan waar ik iedere dag rondjes op rij. Ik rij in m'n racewagen 300 km/uur en ik rij altijd aan de linkerkant van de weg omdat ik dat fijn vind. Dan ga ik voor het eerst in m'n leven rijden op de openbare weg waar ook andere weggebruikers op rijden. Hmmm, misschien kan ik toch maar beter niet 300 km/uur rijden en dat links rijden is ook niet altijd even handig merk ik nu.
"Regeltjes" zijn er niet voor niets. Of je er iets mee doet moet je helemaal zelf weten, maar zeg niet dat niemand je er ooit op gewezen heeft ;-)
Jasper Vriends op 12/08/2012 15:26:38:
Ik programmeer Nederlands, dan is het ook gelijk een stuk geloofwaardiger dat ÍK het script heb gemaakt... En niet iemand anders ;)
En uhmm... Mag ik mijn eigen script maken en zeggen hoe ze moeten? Want dat 'gebruikelijke' maakt niks uit, het werkt gewoon...
En uhmm... Mag ik mijn eigen script maken en zeggen hoe ze moeten? Want dat 'gebruikelijke' maakt niks uit, het werkt gewoon...
Het is ook maar een tip die ik je geef. Het zal ook allemaal best werken. Dat geloof ik direct. Maar deze "standaarden" helpen je wel als je met meerdere mensen gaat samenwerken. Engels is de standaardtaal (zodat ook mensen buiten Nederland je code kunnen lezen), en ook voor functiebenamingen worden bepaalde standaarden gebruikt.
Stel ik zou een heel groot huis hebben met een racebaan waar ik iedere dag rondjes op rij. Ik rij in m'n racewagen 300 km/uur en ik rij altijd aan de linkerkant van de weg omdat ik dat fijn vind. Dan ga ik voor het eerst in m'n leven rijden op de openbare weg waar ook andere weggebruikers op rijden. Hmmm, misschien kan ik toch maar beter niet 300 km/uur rijden en dat links rijden is ook niet altijd even handig merk ik nu.
"Regeltjes" zijn er niet voor niets. Of je er iets mee doet moet je helemaal zelf weten, maar zeg niet dat niemand je er ooit op gewezen heeft ;-)
Ik bedoelde het niet boos he :$
Maar je hebt wel gelijk...
- SanThe - op 12/08/2012 15:42:55:
Nu nog een nette foutafhandeling voor als de query mislukt.
En beveiliging van de query ontbreekt ook nog.
En beveiliging van de query ontbreekt ook nog.
Beveiliging... Nooit eigenlijk aan gedacht.. Ik ga het er op zetten als ik het kan vinden :)
En die foutafhandeling is denk ik niet echt nodig, het moet werken, en niet mag :)
Nogmaals bedankt allemaal :)
Mvg.
Jasper
Vreemd dat zovele beginners denken dat altijd alles wel zal werken zoals ze denken, terwijl het zo simpel op te vangen is als het niet zo gaat. Leer het vroeg aan, dan is het later een vanzelfsprekendheid.
Erwin H op 12/08/2012 16:14:58:
Foutafhandeling zou je altijd moeten toepassen. Wat als bijvoorbeeld je query wel lukt, maar er gewoon geen rij uit de database wordt gehaald? Dan kan je "$res['status'];" niet doen en krijg je dus een fatale foutmelding en je script stopt dus. Kan je meteen niets meer. Een simpel try...catch blok zou dat al voorkomen en kan je een default waarde (0 of een lege string) teruggeven.
Vreemd dat zovele beginners denken dat altijd alles wel zal werken zoals ze denken, terwijl het zo simpel op te vangen is als het niet zo gaat. Leer het vroeg aan, dan is het later een vanzelfsprekendheid.
Vreemd dat zovele beginners denken dat altijd alles wel zal werken zoals ze denken, terwijl het zo simpel op te vangen is als het niet zo gaat. Leer het vroeg aan, dan is het later een vanzelfsprekendheid.
Als aller eerst, ik ben geen beginner ;)
Ten 2e, hij haalt alle velden uit de database, dus het kan niet dat een veld niet voorkomt... Dus dat kan niet...
ÉN ik gebruik ook foutafhandeling...
Jasper
Ten tweede weet jij helemaal niet wat hij eruit haalt. Dat denk je, dat verwacht je. Maar als je op een zeker moment een foute string in '$InstellingNaam' hebt staan dan gaat je query goed, maar krijg je 0 records terug. Ga je toch mooi de mist in. Dan kan je uiteraard ergens later nog een andere waarde gebruiken, maar bij dit soort 'getters' is het veel netter om dan een default waarde terug te geven. Zo kan de rest van je script door zonder iets te hoeven checken.
Maar goed, goed advies wordt vaker in de wind geslagen (is je goed recht), maar denk er nog eens aan terug als je eens goede foutafhandeling hard nodig blijkt te hebben. Geloof me, op dat punt zijn we allemaal al eens beland (of zullen er nog belanden).
off topic: Jasper, je hoeft niet telkens alles te quoten als je ergens op reageert. Zeker niet als het bericht er direct bovenstaat :-)
En een beoordeling geven over het eerste script is logisch, maar niet het verklaren dat ik nog steeds beginner ben...
Obelix en Idefix, oke zal ik onthouden :)
Mvg.
Jasper
Tja, of je nu 4 weken al bezig bent met php maakt je nog steeds niet echt een professional hoor. Ik ben al ruim 1 jaar ermee bezig en weet ook nog wel dat ik hier een snotneus ben vergeleken met de meesten.
Ik zeg dat ik onderhand geen beginner meer ben... Niet dat ik de slimste ben of meer weet dan jullie :$
Jasper
Jammer dat je goede raad ziet als een aanval op je kunnen.
Jasper Vriends op 12/08/2012 17:04:46:
Maar zo bedoel ik het ook niet Albert :$
Ik zeg dat ik onderhand geen beginner meer ben... Niet dat ik de slimste ben of meer weet dan jullie :$
Jasper
Ik zeg dat ik onderhand geen beginner meer ben... Niet dat ik de slimste ben of meer weet dan jullie :$
Jasper
Je bent inderdaad niet de slimste, je bent net als mij een beginner met php. Als je richting gevorderde gaat ben je namelijk al een jaar of 3 bezig.
Ik bedoel het allemaal goed?
Ik voel niks als een aanval hoor...
Misschien vind je dat ik misschien vervelend reageer, maar ik bedoel het allemaal aardig.
Albert:
Dit is ook niet mijn eerste jaar dat ik bezig ben met php, maar al jaren geleden... Maar toen was ik er niet zo diep ingegaan zoals ik nu doe, maar je hebt zeker gelijk ;)
Jasper
Wat ik jammer vind is dat je zo verdedigend reageert op het advies over foutafhandeling. Dat je dat niet nodig hebt. Daarom... heb ik het woord beginner gebruikt. Het is namelijk een typische beginners fout om problemen in de scripts niet te zien. Uit je antwoorden blijkt dat je ervanuit gaat dat er in deze kleine functie niets mis kan gaan. Ik zie minimaal drie mogelijke fouten die kunnen optreden die jij nu niet opvangt. Niet in deze functie in elk geval. Als je meer ervaring krijgt zal je dat soort dingen ook gaan zien en begrijpen dat je JUIST bij dit soort kleine stukjes een correcte foutafhandeling zou moeten toepassen. Als je namelijk elke functie (en later class) zijn eigen boontjes laat doppen kan je in de rest van je script altijd zonder verdere mitsen en maren erop vertrouwen. Kan je altijd verder zonder dat je tegen rare problemen aan loopt.
Dat is waarom ik het woord beginner noemde en dat heeft te maken met het 'niveau' waarop je bezig bent, niet hoeveel weken/jaren of hoeveel scripts je al hebt gebouwd. Nogmaals, dat is absoluut geen aanval of denigrerende opmerking (excuses als je dat wel zo ziet). Het is een tip waar je verder mee mag doen wat je wilt.
Jasper Vriends op 12/08/2012 17:13:21:
Albert:
Dit is ook niet mijn eerste jaar dat ik bezig ben met php, maar al jaren geleden... Maar toen was ik er niet zo diep ingegaan zoals ik nu doe, maar je hebt zeker gelijk ;)
Jasper
Dit is ook niet mijn eerste jaar dat ik bezig ben met php, maar al jaren geleden... Maar toen was ik er niet zo diep ingegaan zoals ik nu doe, maar je hebt zeker gelijk ;)
Jasper
Ik leer dit soort spul op school. De meeste mensen hier zijn klaar met mbo/hbo dat gespecialiseerd is rond webdevelopment