[PHP] Variabel aanroepen van functies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Beste Allemaal,

Ok nu heb ik ff een vraagje

ik heb in de database een veld waarmee ik wat met een datum wil rekenen

in de database staat het volgende
$DbDate = "0,0,0,1,17+17,2005";

echo strftime("%Y-%m-%d",call_user_func_array('mktime', explode(",",$DbDate)));

Nu lijkt due 17+17 f niet te werken...hij ziet dit als string

Eigenlijk moet de functie nog anders..in de DB moet eigenlijk staan
$DbDate = "0,0,0,date("d"),date("m")+17,date("Y")";

zodat hij dus vanaf de datum van vandaag er +17 dagen bijrekent..
Pak ik dit zo goed aan of moet ik gewooon anders denken.

thanks in advance

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
$DbDate = "0,0,0,1,".(17+17).",2005"; :?

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
nope werkt helaas ook niet. Hij blijft het al string zien.
Probeer het volgende maar eens uit...krijg je gewoon andere waraden te zien

Ik snap dat als ik het in PHP doe dan kan ik netjes breeken op punt maar het gaat er juist om dat ik vanuit een DB veld deze functie kan beinvloeden.


code:
1
2
3
4
5
6
7
8
9
$MkTimeArray = explode(",", "0,0,0,1,(17+30),2005");

$Kaas = "0,0,0,1,(17+30),2005";

echo "Org: ".strftime("%Y-%m-%d",mktime(0,0,0,1,(17+30),2005));
echo "<BR>";
echo "Array: ".strftime("%Y-%m-%d",mktime($MkTimeArray[0],$MkTimeArray[1],$MkTimeArray[2],$MkTimeArray[3],$MkTimeArray[4],$MkTimeArray[5]));
echo "<BR>";
echo "Func Ar: ".strftime("%Y-%m-%d",call_user_func_array('mktime', explode(",",$Kaas)));

[ Voor 25% gewijzigd door vorlox op 04-01-2005 16:35 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

En je hebt eval al gevonden? En wat sla je nu precies op in de DB?? Want zo te zien wil je code in de DB opslaan, iets wat mij niet zo'n goed idee lijkt. Je zou ook nog een een extra veld kunnen toevoegen waarin de waarde komt te staan welke er bij opgetelt moet worden. Dan kan dit veld nog een integer zijn ook, i.p.v. een string.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Moet het perse in 1 regel dan?

Je kunt toch ook eerst even exploden, evalueren en dan uitvoeren..

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
strftime("%Y-%m-%d",eval("mktime($DbDate)"));

Dat? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • MaTriCX
  • Registratie: Augustus 2002
  • Laatst online: 18-07-2024
Ik weet niet hoever je bent met het opzetten van je database, maar ik geef altijd de voorkeur aan het gebruik van de UNIX TIMESTAMP als ik wil gaan rekenen met datum en tijd.
De functies date() en mktime() zijn prima functies om dan vervolgens met de data te werken, wellicht een idee. Je zou dan in de database zelf ook kunnen rekenen omdat de TIMESTAMP bestaat uit een aantal seconden vanaf de datum 1 januari 1970.

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
MaTriCX schreef op dinsdag 04 januari 2005 @ 20:32:
Ik weet niet hoever je bent met het opzetten van je database, maar ik geef altijd de voorkeur aan het gebruik van de UNIX TIMESTAMP als ik wil gaan rekenen met datum en tijd.
De functies date() en mktime() zijn prima functies om dan vervolgens met de data te werken, wellicht een idee. Je zou dan in de database zelf ook kunnen rekenen omdat de TIMESTAMP bestaat uit een aantal seconden vanaf de datum 1 januari 1970.
De date en time functies in MySQL zijn tegenwoordig zo goed dat het je werk uit handen kan nemen. Voor de gevorderde PHP-er met MySQL is het zeker een aanrader aangezien je eventueel altijd nog ervoor kunt kiezen om niet de output van MySQL te gebruiken maar de meuk te editten in PHP...(Problemen rondom de jaren 70 zijn dan ook over)

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • MaTriCX
  • Registratie: Augustus 2002
  • Laatst online: 18-07-2024
Alex de Groot schreef op dinsdag 04 januari 2005 @ 21:33:
[...]
De date en time functies in MySQL zijn tegenwoordig zo goed dat het je werk uit handen kan nemen. Voor de gevorderde PHP-er met MySQL is het zeker een aanrader aangezien je eventueel altijd nog ervoor kunt kiezen om niet de output van MySQL te gebruiken maar de meuk te editten in PHP...(Problemen rondom de jaren 70 zijn dan ook over)
Eens :)
Ik ben zelf ook een ervaren MySQL en PHP gebruiker en geef de voorkeur aan het rekenen met de TIMESTAMP als het bedoeld is vanaf het heden of niet voor 1970. Het rekenen met de datumnotatie kan inderdaad ook, maar ik maak het mezelf nooit moeilijker dan nodig is. Tenzij het voor educatieve doeleinden is.

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Beste Allemaal haha
okok volgens mij heb ik jullie een beetje op een verkeerd spoor gezet.
Even voor de duidelijkheid. Ik heb een database met zegmaar twee tabllen
tabel: formulier met formuliernaam ID enz...en een tabel formuliervelden met veldID,formID,veldtype,en default value

Met deze twee tabllen en een klas genereer ik een formulier..
Nu wil ik dat er in 1 veld standaard een waarde komt te staan van vandaag + 1 week

de formule daarvan zou ik graag in de tabel formulier_velden bij het desbetreffende record in het veld default value willen zetten.

Vandaar dat ik zat te denken aan de hele formule in de database...let wel het gaat hier dus niet om het database ontwerp hehe.. ;)

'k heb dit nog geprobeerd?
code:
1
2
3
4
5
6
$DefaultValue = "mktime(0,0,0,1,17,2005)";

echo "Org: ".strftime("%Y-%m-%d",mktime(0,0,0,1,(17+30),2005));
echo "<BR>";
echo "Array: ".strftime("%Y-%m-%d",eval("$DefaultValue"));
echo "<BR>";


en dan krijg ik weer dit??
Org: 2005-02-16
Parse error: parse error in d:\www\vorlox.xs4all.nl\eval.php(8) : eval()'d code on line 1
Array: 1970-01-01

[ Voor 23% gewijzigd door vorlox op 04-01-2005 22:50 ]

Pagina: 1