[PHP / Mysql]

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb in een mysql tabel verschillende query's staan.
Nu wil ik dat ik niet voor elke user een apparte query hoef te maken om het zelfde resultaat te krijgen. Dit wil ik oplossen door in de query een global var van mijn script op te nemen.
Bijv.

SELECT * FROM Tabel WHERE UserId = $UserId

Dit werkt wel als je hem in je code zet, maar dit werkt niet als je die eerst uit een db haalt.

Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Zeus > waarom zou je in godsnaam query's in een database opslaan? Dan moet je imho in elk geval al 1 query te veel doen?

Wat probeer je met het opslaan van query's in de database te bereiken?

Verbouwing


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een wizard gemaakt die rapporten genereerd.
Die rapporten worden gemaakt aan de hand van een query.

Acties:
  • 0 Henk 'm!

  • Xenon
  • Registratie: Januari 2001
  • Laatst online: 21-08 09:12
euh, ge bent wel een beetje onduidelijk in wat je precies doet/van plan bent

SELECT * FROM Tabel WHERE UserId = $UserId
--> Dit zal enkel werken in code als $userid een waarde bevat

In de DB (phpmyadmin of wat bedoel je?) zal dit dus natuurlijk niet werken...

ProtocoLAN.be: De beste LAN van de Maaskant


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik bedoel dus gewoon dat inplaats van dat ik in de database (mysql) uit de tabel query's het volgende haal:

SELECT * FROM Tabel WHERE UserId = '5'

Ik dit kan halen

SELECT * FROM Tabel WHERE UserId = '$UserId'

Waarbij $UserId een global var is (die wordt uit een cookie gehaald).
Op deze manier hoef ik niet voor alle users die het zelfde rapport willen een andere query in mijn database op te slaan.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 23 May 2003 @ 07:39:
Ik bedoel dus gewoon dat inplaats van dat ik in de database (mysql) uit de tabel query's het volgende haal:

SELECT * FROM Tabel WHERE UserId = '5'

Ik dit kan halen

SELECT * FROM Tabel WHERE UserId = '$UserId'

Waarbij $UserId een global var is (die wordt uit een cookie gehaald).
Op deze manier hoef ik niet voor alle users die het zelfde rapport willen een andere query in mijn database op te slaan.
str_replace

PHP:
1
2
3
$userid = 5;
$query = "SELECT * FROM Tabel WHERE UserId = '%userid%' ";
$query = str_replace("%userid%", $userid, $query);

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens bedankt, maar deze manier had ik zelf ook bedacht.
Ik ben alleen benieuwd of ik het niet op de manier kan doen met gewoon $UserId in de code.

Acties:
  • 0 Henk 'm!

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 16-09 10:29

Apache

amateur software devver

3rk3ns! :P

Het zit gewoon in een cookie, dus hij kan:
PHP:
1
2
3
<?
$query = "SELECT * FROM Tabel WHERE UserId = ".intval($_COOKIE['UserId']);
?>


gebruiken.
die intval is er om ervoor te zorgen dat je enkel ints doorspeelt, wat bij id's vaak het geval is, zeker niet altijd. En de single quotes in SQL heb je ook niet nodig rond integer values.

If it ain't broken it doesn't have enough features


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar dat werkt weet niet als je het opslaat in een tabel :)

Acties:
  • 0 Henk 'm!

Verwijderd

Je zoekt waarschijnlijk http://nl.php.net/manual/en/function.eval.php, niet netjes, maar het werkt laten we maar zeggen :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 23 May 2003 @ 07:48:
Erkens bedankt, maar deze manier had ik zelf ook bedacht.
zet dat dan in je post |:(
en laat mij geen moeite voor niets doen :/
Ik ben alleen benieuwd of ik het niet op de manier kan doen met gewoon $UserId in de code.
PHP:
1
2
3
$userid = 5;
$query = "SELECT * FROM Tabel WHERE UserId = '$UserID' ";
$query = str_replace("$UserID", $userid, $query);

:P

Acties:
  • 0 Henk 'm!

  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 27-08 11:32
Wat wil je bereiken door je queries in een database te zetten, je moet die queries ook weer via een querie bereiken.
Zou je misschien nog wat meer achtergrond informatie kunnen geven over hoe applicatie er uit ziet en hoe het moet werken.
En misschien een data output van die tabel met queries?

Je hebt het namelijk over het niet steeds hoeven aanmaken van een querie voor elke gebruiker, dan vraag ik me af hoe je je aplicatie ontworpen hebt.

Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt idd zoals RobinVR zei de functie eval() gebruiken. Dan kun je gewoon $UserId in die query in je database laten staan ipv %userid%. Eerst doe je dus de query om de query op te halen, vervolgens zeg je $query = eval($query) en dan staat de query (uit de db) in de var $query, met de $UserId ingevuld. :Y)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Mag ik je erop wijzen dat dit een uiterst ranzige manier is van database gebruik. Als je ons wat meer info geeft, kunnen we je waarschijnlijk een veel beter alternatief laten zien. Want het lijkt mij uiterst sterk dat je queries per se op moet slaan in je DB.

Dus post zoals Mickman al vroeg eens wat meer info.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1