abonnement Unibet Coolblue Bitvavo
pi_72362422
Ik heb even een vraagje over sql...

Ik zit met 't volgende probleem. Namelijk ik heb een tabel, laten we deze even y noemen. Deze heeft 2 velden.
id en naam. Nu kan een naam gekoppeld zijn aan 1 of meerdere andere namen in dezelfde tabel...

Dus gewoon een koppeltabel...
id_1 id_2
die beiden eigenlijk verwijzen naar de de eerste rij van de vorige tabel. Nu is mijn vraag.

Kan ik hier oor foreign key constraints op gebruiken? Ik probeer dit namelijk bij sql server maar lukt niet echt
pi_72362460
quote:
Op woensdag 2 september 2009 08:00 schreef ReWout het volgende:
Ik heb even een vraagje over sql...
Welke SQL smaak bedoel je precies?
pi_72362757
quote:
Op woensdag 2 september 2009 08:00 schreef ReWout het volgende:
Ik heb even een vraagje over sql...

Ik zit met 't volgende probleem. Namelijk ik heb een tabel, laten we deze even y noemen. Deze heeft 2 velden.
id en naam. Nu kan een naam gekoppeld zijn aan 1 of meerdere andere namen in dezelfde tabel...

Dus gewoon een koppeltabel...
id_1 id_2
die beiden eigenlijk verwijzen naar de de eerste rij van de vorige tabel. Nu is mijn vraag.

Kan ik hier oor foreign key constraints op gebruiken? Ik probeer dit namelijk bij sql server maar lukt niet echt
SQL Server. Verkeerde topic.
-> Het grote (?) .NET en MSSQL topic

Maar goed, wat gebruik je als ids? ints / bigints of uniqueidentifiers? De kolomtypes waar je de foreign key constraints op legt (dus de id kolom van je 'y' tabel en het betreffende id veld in je koppeltabel) dienen wel hetzelfde te zijn. Is het id veld van je 'y'-tabel wel primary key? Welke error krijg je overigens?
pi_72363730
quote:
Op woensdag 2 september 2009 08:37 schreef Tuvai.net het volgende:

[..]

SQL Server. Verkeerde topic.
-> Het grote (?) .NET en MSSQL topic

Maar goed, wat gebruik je als ids? ints / bigints of uniqueidentifiers? De kolomtypes waar je de foreign key constraints op legt (dus de id kolom van je 'y' tabel en het betreffende id veld in je koppeltabel) dienen wel hetzelfde te zijn. Is het id veld van je 'y'-tabel wel primary key? Welke error krijg je overigens?
Yup id in y is natuurlijk primary key. Mag ook geen null hebben en types zijn 't zelfde.
pi_72363793
quote:
Op woensdag 2 september 2009 08:37 schreef Tuvai.net het volgende:
Welke error krijg je overigens?
pi_72366488
nvm. heb 't al was een fout in 't schema.
pi_72366529
quote:
Op woensdag 2 september 2009 11:56 schreef ReWout het volgende:
nvm. heb 't al was een fout in 't schema.
quote] Op woensdag 2 september 2009 09:53 schreef Tuvai.net het volgende:
[..]
[/quote]

Kon je toch niets mee aangezien ie zei dat de PK van tabel y toestond dat ie op null kon staan. Maar dat was dus helemaal niet zo.
  FOK!-Schrikkelbaas woensdag 2 september 2009 @ 22:51:36 #108
1972 Swetsenegger
Egocentrische Narcist
pi_72384102
Kan je in een insert query een select subquery inbouwen?

voorbeeld

1
2
3
4
5
INSERT into bestellingInhoud
       (id,bestelId,eigId,aantal,prijs)
       VALUES(0,'".$bestelId."','".$k."','".$v."',".
               SELECT prijs FROM eigenschappen WHERE id=$k
              .")";


Maar dan werkend
pi_72384232
quote:
Op woensdag 2 september 2009 22:51 schreef Swetsenegger het volgende:
Kan je in een insert query een select subquery inbouwen?

voorbeeld
[ code verwijderd ]

Maar dan werkend
Ja.

1
2
3
INSERT INTO bestellingInhoud
(id, bestelId, eigId, aantal, prijs)
VALUES(0, '".$bestelId."', '".$k."', '".$v."', (SELECT prijs FROM eigenschappen WHERE id=".$k."))


Gewoon even puur op SQL niveau denken dus, volgens mij probeer jij je subquery als PHP uit te voeren, als ik de aanhalingstekens en de puntjes om je subquery heen zie. Voor de rest gewoon een kwestie van een ( en ) er om heen om een subquery aan te duiden, zoals je dat ook in een SELECT query doet.

[ Bericht 6% gewijzigd door Tuvai.net op 03-09-2009 07:40:30 ]
  FOK!-Schrikkelbaas woensdag 2 september 2009 @ 22:56:47 #110
1972 Swetsenegger
Egocentrische Narcist
pi_72384329
Cool! ga ik gelijk proberen

en het werkt natuurlijk...

[ Bericht 13% gewijzigd door Swetsenegger op 02-09-2009 23:14:02 ]
pi_72390066
Ja, dat kan dus
Handige manier om data van een tijdelijke tabel naar een live tabel over te pompen bijvoorbeeld

phpMyAdmin kan dat ook trouwens, dus daar had je het principe ook wel vandaan kunnen jatten
pi_72391882
vanaf welke versie (mysql) werken subqueries eingelijk?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_72393683
quote:
Op donderdag 3 september 2009 10:19 schreef Chandler het volgende:
vanaf welke versie (mysql) werken subqueries eingelijk?
Handig spul . Vertraagd de boel wel flink.
  donderdag 3 september 2009 @ 12:43:29 #115
75592 GlowMouse
l'état, c'est moi
pi_72395803
quote:
Op donderdag 3 september 2009 11:28 schreef Mordreth het volgende:

[..]

Handig spul . Vertraagdt de boel wel flink.
Er zijn genoeg situaties waarin een subquery sneller is dan dezelfde data ophalen zonder subquery.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72395838
quote:
Op donderdag 3 september 2009 12:43 schreef GlowMouse het volgende:

[..]

Er zijn genoeg situaties waarin een subquery sneller is dan dezelfde data ophalen zonder subquery.
Dat dus.

Om actuele data uit een andere tabel/record op te halen is een subquery ideaal bij een insert/update. Sowieso sneller dan de data zonder subquery ergens ophalen (en nog erger, dat IN je applicatie doen, buiten je database) en dan weer verwerken.
  donderdag 3 september 2009 @ 12:46:07 #117
75592 GlowMouse
l'état, c'est moi
pi_72395887
quote:
Op donderdag 3 september 2009 12:45 schreef Tuvai.net het volgende:

[..]

Dat dus.

Om actuele data uit een andere tabel/record op te halen is een subquery ideaal bij een insert/update. Sowieso sneller dan de data zonder subquery ergens ophalen (en nog erger, dat IN je applicatie doen, buiten je database) en dan weer verwerken.
Ook bij SELECTs kan een subquery sneller zijn.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72395999
Niks mis met subqueries
pi_72406809
Oke, ook ik zit met een mysql datum probleempje.

Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?

$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE $aid (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp BETWEEN $beginStamp AND $eindStamp) OR (eind_stamp BETWEEN $beginStamp AND $eindStamp) ) ORDER BY begin_stamp";

Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '

en daarna te controleren of er een afspraak is.

Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400

[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]

Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.

[ Bericht 2% gewijzigd door Darkomen op 03-09-2009 23:27:31 ]
  donderdag 3 september 2009 @ 19:06:45 #120
75592 GlowMouse
l'état, c'est moi
pi_72407072
Kijk eens naar mysql_error()
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72407417
quote:
Op donderdag 3 september 2009 18:57 schreef Darkomen het volgende:
Oke, ook ik zit met een mysql datum probleempje.

Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?

$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp=<$eindStamp) (eind_stamp>=$beginStamp ) ) ORDER BY begin_stamp";

Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '

en daarna te controleren of er een afspraak is.

Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400

[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]

Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.
1AND ( (begin_stamp=<$eindStamp) *** (eind_stamp>=$beginStamp ) ) 


Hoort er geen AND / OR te staan bij die sterretjes?
pi_72409778
quote:
Op donderdag 3 september 2009 19:16 schreef Tuvai.net het volgende:

[..]
[ code verwijderd ]

Hoort er geen AND / OR te staan bij die sterretjes?
En:

begin_stamp=<$eindStamp
=< bestaat niet. Dat moet <= zijn
  donderdag 3 september 2009 @ 21:39:01 #123
37634 wobbel
Da WoBBeL King
pi_72413635
Op dit moment heb ik een zelfgeschreven webshop met een tabel Categorieen en tabel Subcategorieen...
Graag zou ik het willen maken dat je oneindig veel categorieen kan maken (in de praktijk 3 of 4 dus)

Hoe ga je dat oplossen met PHP? ik kan er geen tutorials over lezen...
pi_72413864
quote:
Op donderdag 3 september 2009 21:39 schreef wobbel het volgende:
Op dit moment heb ik een zelfgeschreven webshop met een tabel Categorieen en tabel Subcategorieen...
Graag zou ik het willen maken dat je oneindig veel categorieen kan maken (in de praktijk 3 of 4 dus)

Hoe ga je dat oplossen met PHP? ik kan er geen tutorials over lezen...
Niet per definitie met PHP. Je zorgt gewoon dat je één tabel categorieën hebt met daarin een veld ParentID. ParentID verwijst weer naar het ID van een ander record in diezelfde tabel.

Afhankelijk van (wat je presenteert in) je applicatie, zul je bijvoorbeeld wel een 'recursieve functie' moeten schrijven als je een pagina hebt waar je de hele 'boomstructuur' van categorieën wilt weergeven.

[ Bericht 6% gewijzigd door Tuvai.net op 03-09-2009 21:48:17 ]
  donderdag 3 september 2009 @ 21:53:55 #125
37634 wobbel
Da WoBBeL King
pi_72414448
quote:
Op donderdag 3 september 2009 21:42 schreef Tuvai.net het volgende:

[..]

Niet per definitie met PHP. Je zorgt gewoon dat je één tabel categorieën hebt met daarin een veld ParentID. ParentID verwijst weer naar het ID van een ander record in diezelfde tabel.

Afhankelijk van (wat je presenteert in) je applicatie, zul je bijvoorbeeld wel een 'recursieve functie' moeten schrijven als je een pagina hebt waar je de hele 'boomstructuur' van categorieën wilt weergeven.
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort en hoe kan ik dat makkelijk weergeven...Want ik zou wel ontiegelijk veel query's moeten uithalen om dat dan weer te geven...

En ik kan nergens een goede tuto ofzo vinden...
pi_72415003
zoek eens op nested set
lastig om te begrijpen maar zoveel beter dan met een parent_id werken
pi_72415279
quote:
Op donderdag 3 september 2009 21:53 schreef wobbel het volgende:
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort
Dat doe je dus met die ParentID kolom. Door rij ID 2 een ParentID van 1 te geven, wil dus zeggen dat rij ID 2 'onder' rij ID 1 ligt. Maak je nóg een record, maar dan met ParentID 2, dan leg je deze record 'onder' rij ID 2.
quote:
Op donderdag 3 september 2009 21:53 schreef wobbel het volgende:
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort en hoe kan ik dat makkelijk weergeven...Want ik zou wel ontiegelijk veel query's moeten uithalen om dat dan weer te geven...
Het klinkt moeilijker dan het lijkt. In feite neem je gewoon de volgende stappen:

1) Maak een functie, die a.h.v. een ID, alle 'child' records ophaalt van dat ID. Oftewel, alle records ophalen waar de ParentID kolom gelijk staat aan de ID parameter die je mee stuurt naar je functie.
2) Als je door die records heen gaat loopen ( while($bla = mysql_fetch_array($QueryVanStapEen) ), roep je per iteratie (oftewel voor elke rij) wéér je functie aan, maar dit keer met het ID van de record die je aan het loopen bent, als parameter voor de functie.

Op dat moment is je functie dus 'recursief' (oftewel, blijft zichzelf aanroepen totdat je geen loopjes meer hebt).

Er zijn meerdere methodes om dit te doen. Maar dit vind ik persoonlijk in ieder geval de makkelijkste. Je kunt altijd naderhand nog zelf naar een 'moeilijkere' op zoek gaan die beter is voor de performance van je applicatie (want ja, deze methode haalt veel queries in één keer op).
pi_72418462
quote:
Op donderdag 3 september 2009 19:16 schreef Tuvai.net het volgende:

[..]
[ code verwijderd ]

Hoort er geen AND / OR te staan bij die sterretjes?
Zal iets bij het copy/pasten fout gegaan zijn, er staat een or.
pi_72419157
quote:
Op donderdag 3 september 2009 22:10 schreef Tuvai.net het volgende:

[..]

Dat doe je dus met die ParentID kolom. Door rij ID 2 een ParentID van 1 te geven, wil dus zeggen dat rij ID 2 'onder' rij ID 1 ligt. Maak je nóg een record, maar dan met ParentID 2, dan leg je deze record 'onder' rij ID 2.
[..]

Het klinkt moeilijker dan het lijkt. In feite neem je gewoon de volgende stappen:

1) Maak een functie, die a.h.v. een ID, alle 'child' records ophaalt van dat ID. Oftewel, alle records ophalen waar de ParentID kolom gelijk staat aan de ID parameter die je mee stuurt naar je functie.
2) Als je door die records heen gaat loopen ( while($bla = mysql_fetch_array($QueryVanStapEen) ), roep je per iteratie (oftewel voor elke rij) wéér je functie aan, maar dit keer met het ID van de record die je aan het loopen bent, als parameter voor de functie.

Op dat moment is je functie dus 'recursief' (oftewel, blijft zichzelf aanroepen totdat je geen loopjes meer hebt).

Er zijn meerdere methodes om dit te doen. Maar dit vind ik persoonlijk in ieder geval de makkelijkste. Je kunt altijd naderhand nog zelf naar een 'moeilijkere' op zoek gaan die beter is voor de performance van je applicatie (want ja, deze methode haalt veel queries in één keer op).
Dat werkt, maar is niet efficient. Een goede regel is dat je geen queries in loopjes uitvoert. Er kan altijd een reden zijn om daarvan af te wijken, maar voor iets als een menu (dat op iedere pagina terugkomt) lijkt me dat geen goed uitgangspunt.
pi_72419240
quote:
Op donderdag 3 september 2009 23:44 schreef Light het volgende:

[..]

Dat werkt, maar is niet efficient. Een goede regel is dat je geen queries in loopjes uitvoert. Er kan altijd een reden zijn om daarvan af te wijken, maar voor iets als een menu (dat op iedere pagina terugkomt) lijkt me dat geen goed uitgangspunt.
Zie daarom dat laatste stukje tekst. Ik weet dat er duizend en één efficientere (doch vaak meer complexe) methodes zijn, maar lijkt me niet zo handig om daar een beginneling meteen mee te confronteren. Nogmaals, bovenstaand voorbeeld is kinderlijk eenvoudig en voor een leek heel snel onder de knie te krijgen.

[ Bericht 1% gewijzigd door Tuvai.net op 03-09-2009 23:52:21 ]
pi_72420359
quote:
Op donderdag 3 september 2009 23:46 schreef Tuvai.net het volgende:

[..]

Zie daarom dat laatste stukje tekst. :P Ik weet dat er duizend en één efficientere (doch vaak meer complexe) methodes zijn, maar lijkt me niet zo handig om daar een beginneling meteen mee te confronteren. Nogmaals, bovenstaand voorbeeld is kinderlijk eenvoudig en voor een leek heel snel onder de knie te krijgen.
Dan zou ik het toch anders doen. Gewoon in 1 query alle menu-items ophalen en daar in 1 lus een tweedimensionale array van maken.

1
2
3
4
5
6
<?php
$result 
mysql_query('SELECT * FROM menu');
while(
$row mysql_fetch_assoc($result)) {
  
$menu[$row['parentId']] = $row;
}
?>


Dan heb je alleen nog een recursieve oplossing nodig voor het weergeven van het menu.
pi_72420521
quote:
Op vrijdag 4 september 2009 00:19 schreef Light het volgende:

[..]

Dan zou ik het toch anders doen. Gewoon in 1 query alle menu-items ophalen en daar in 1 lus een tweedimensionale array van maken.
[ code verwijderd ]

Dan heb je alleen nog een recursieve oplossing nodig voor het weergeven van het menu.
Zo do ik het dus ook vaak. Nog vaker heb ik dat je niet default al de hele boom wilt laten zien en een hele lap records / resultset naar je applicatie wilt trekken, maar alleen de hoofd nodes en bij het openklappen pas child nodes wilt zien. In zo'n geval wil ik ook nog wel eens AJAX gebruiken om het lijsje met onderliggende nodes op te halen. Verschilt natuurlijk per situatie.
pi_72432889
Ik heb een UTF-8 tabel, en als ik daarin wil zoeken met LIKE, dan stuit ik op een probleem:

SELECT * FROM `tabel` WHERE titel LIKE '%belgie%';
levert niet dezelfde resultaten op als
SELECT * FROM `tabel` WHERE titel LIKE '%belgië%';

Ik heb al geprobeerd om ervan te maken:
SELECT * FROM `tabel` WHERE titel LIKE _utf8 '%belgië%' COLLATE utf8_general_ci;
Maar het enige resultaat is dan dat hij alleen de titels vindt zonder ë (dus waar de titel "Belgie" is en niet "België".

Wat kan ik hier aan doen?
Trotse poster van het 37000000ste bericht ^O^
pi_72436001
Ik heb weer een breinbreaker

Stel je voor ik heb een tabel voor het opslaan van hits, ips (het aantal unieke users), max online en de datum

nu doe ik voor deze query een ON DUPLICATE KEY UPDATE met de velden hits en ips maar wil ik ook graag gebruiken om te checken of de waarde die ik wil updaten groter of kleiner is, als deze groter is dan door te voeren en indien deze kleiner is de huidige waarde te laten staan! (voor veld max = max aantal online tegelijk die dag)

Weet iemand hoe ik dit kan realiseren?

ik schreef en begreep het zelf dus hopelijk jullie ook

[ Bericht 3% gewijzigd door Chandler op 04-09-2009 22:12:33 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_72454544
Ik heb een vraagje omtrent gebruikers die je site bezoeken (let op geregistreerd).
Wat ik aan het maken ben is een soort van hyves popup zoals je ziet wanneer iemand online komt. (als iemand een verwijzing naar zo'n dergelijk script heeft graag de URL)

Mijn probleem zit in het herkennen dat de gebruiker die de site bezoekt niet de gebruiker is die momenteel op de site zit. Zo heb ik niks aan de standaard PHP variablen als een IP uitlezen want ik kan deze niet vergelijken omdat je altijd de IP terug krijgt van de persoon die nu op de site zit.

Het loggen van een persoon in de database met een datum/tijd/logged/gebruiker bij elke page refresh uitlezen of er een nieuwe record is bijgekomen én dit niet de user is die momenteel op de site zit én er (vandaag, dit uur, afgelopen 10 minuten) nog geen melding is gegeven dat deze persoon online is gekomen lijkt me omslachtig.

Heeft iemand hier een goed idee voor?
pi_72455782
Hoi

Ben een redelijke beginner met PHP en MySQL maar nooit te beroerd om te leren natuurlijk Op het moment ben ik voor mijn stage een simpele CMDB aan het maken.

De basic dingen zitten er al wel in, layout begint ook wat te worden. Ik wil echter iets extra's hebben, maar ik heb geen idee hoe, daarom zou ik jullie om wat tips willen vragen zodat ik weer verder kan gaan klooien.

Stel;
Ik heb monitor-01, monitor-02 enz. Wat ik nu wil maken is een soort van reserveringssysteem, dus monitor-01 is van 01-01-2009 tot 31-08-2009 gereserveerd voor de schoonmaker. Vanaf 01-09-2009 is deze gereserveerd voor de helpdesk. Dit is op zich niet zo moeilijk, veld begin datum, veld eind datum en een eigenaar.

Ik wil echter ook de historie bij kunnen houden en daar loop ik vast...

Hebben jullie tips en tricks over hoe ik de historie netjes kan bijhouden..?

Alvast bedankt!
pi_72456231
quote:
Op zaterdag 5 september 2009 10:49 schreef new_guy1 het volgende:
Hoi
...
Wat voor historie zou je bij willen houden?
  zaterdag 5 september 2009 @ 11:17:37 #138
75592 GlowMouse
l'état, c'est moi
pi_72456295
quote:
Op zaterdag 5 september 2009 08:29 schreef Sjoe538 het volgende:
Het loggen van een persoon in de database met een datum/tijd/logged/gebruiker bij elke page refresh uitlezen of er een nieuwe record is bijgekomen én dit niet de user is die momenteel op de site zit én er (vandaag, dit uur, afgelopen 10 minuten) nog geen melding is gegeven dat deze persoon online is gekomen lijkt me omslachtig.

Heeft iemand hier een goed idee voor?
Je zult die informatie toch bij moeten houden. Je kunt het laatste bezoek bijhouden zodat je alleen maar nieuwe records op te vragen sinds het laatste bezoek.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72456942
quote:
Op zaterdag 5 september 2009 08:29 schreef Sjoe538 het volgende:
Ik heb een vraagje omtrent gebruikers die je site bezoeken (let op geregistreerd).
Wat ik aan het maken ben is een soort van hyves popup zoals je ziet wanneer iemand online komt. (als iemand een verwijzing naar zo'n dergelijk script heeft graag de URL)

Mijn probleem zit in het herkennen dat de gebruiker die de site bezoekt niet de gebruiker is die momenteel op de site zit. Zo heb ik niks aan de standaard PHP variablen als een IP uitlezen want ik kan deze niet vergelijken omdat je altijd de IP terug krijgt van de persoon die nu op de site zit.

Het loggen van een persoon in de database met een datum/tijd/logged/gebruiker bij elke page refresh uitlezen of er een nieuwe record is bijgekomen én dit niet de user is die momenteel op de site zit én er (vandaag, dit uur, afgelopen 10 minuten) nog geen melding is gegeven dat deze persoon online is gekomen lijkt me omslachtig.

Heeft iemand hier een goed idee voor?
Ik zou beginnen met je sessies in de database op te slaan, dan ben je al een heel eind met bezoekers identificeren
pi_72457401
quote:
Op zaterdag 5 september 2009 11:53 schreef Xcalibur het volgende:

[..]

Ik zou beginnen met je sessies in de database op te slaan, dan ben je al een heel eind met bezoekers identificeren
Idd zo ver was ik al, alleen hoopte ik dat er een makkelijkere manier was, aangezien PHP server side werkt, ik hoopte dat het mogelijk moest zijn om alle sessies uit te lezen die momenteel open staan.
pi_72457972
Als je de sessies in je database opslaat, kan je toch gewoon die tabel uitlezen?
Dat is een beetje het punt van die dingen in je database opslaan zeg maar
pi_72458528
quote:
Op donderdag 3 september 2009 18:57 schreef Darkomen het volgende:
Oke, ook ik zit met een mysql datum probleempje.

Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?

$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE $aid (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp BETWEEN $beginStamp AND $eindStamp) OR (eind_stamp BETWEEN $beginStamp AND $eindStamp) ) ORDER BY begin_stamp";

Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '

en daarna te controleren of er een afspraak is.

Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400

[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]

Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.
Hadden jullie nog een idee, volgens mij is het niet zo lang geleden langsgekomen in de topics, alleen heb ik het toen niet gevolgd

Edit: al lijkt hij nu wel te werken, ik ga straks maar eens goed testen

[ Bericht 4% gewijzigd door Darkomen op 05-09-2009 13:41:27 ]
pi_72461046
Ik heb een vreemd probleem, alleen geen idee of het per sé iets met PHP is.

Ik heb een PHP applicatie met een MySQL database er achter. De hele applicatie gaat multilingual worden dus alles zal opgeslagen en gepresenteerd worden middels de UTF-8 character set.

Daarvoor doe ik het volgende:
- Alle tabellen en kolommen in de MySQL database hebben de utf8_general_ci collatie.
- Met PHP geef ik de HTTP header mee: Content-Type: text/html; charset=charset=UTF-8
- In de HTML die gegenereerd wordt, doe ik zowel <?xml version="1.0" encoding="UTF-8"?> als <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Zou afdoende moeten zijn. Ik heb nu echter een regeltje tekst dat ik in de database op sla, en op een pagina in mijn applicatie weer wil laten zien. Het betreft het volgende regeltje:
Dit is een test áéí

Wanneer ik in PHPMyAdmin ga kijken, staat er inderdaad Dit is een test áéí waar dit regeltje tekst is opgeslagen. Wanneer ik echter na de pagina in mijn applicatie ga kijken waar dit regeltje tekst opgehaald wordt en weergegeven wordt, staat er, geheel willekeurig, rotzooi.

In Mozilla staat er soms de onbekende karakter blokjes 'met FFFD' er in, en soms wordt het tekstje wél goed weergegeven. In Internet Explorer hetzelfde: soms wél de goede tekst, en soms vierkantjes die duiden op onbekende karakters.

Waar zit het probleem?

EDIT: Doh. Ik gebruikte m'n "SET NAMES 'utf8'" query alleen bij m'n INSERT / UPDATE queries in plaats van alle (dus ook SELECT).

[ Bericht 4% gewijzigd door Tuvai.net op 05-09-2009 15:46:08 ]
  FOK!-Schrikkelbaas zondag 6 september 2009 @ 20:21:38 #144
1972 Swetsenegger
Egocentrische Narcist
pi_72497040
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8"?>
<status result="ok">
   <ewallet>
      <id>45177</id>
      <status>completed</status>
      <created>20090906135439</created>
      <modified/>
   </ewallet>
   <customer>
      <currency>EUR</currency>
      <amount>1595</amount>
      <exchange_rate>1</exchange_rate>
      <firstname>Naam</firstname>
      <lastname>Achternaam</lastname>
      <city>Woonplaats</city>
      <state/>
      <country>NL</country>
      <countryname>Netherlands</countryname>
   </customer>
   <transaction>
      <id>6</id>
      <currency>EUR</currency>
      <amount>1595</amount>
      <description>Webshop order</description>
      <var1/>
      <var2/>
      <var3/>
      <items/>
   </transaction>
</status>


Ik heb de waarde nodig tussen <id> en </id> in het <transaction> element.

1preg_match('/\<id\>(.*)\<\/id\>/U', $reply, $id);


$id bevat alleen de id uit het het <ewallet> element. Als ik 'm ungreedy maak krijg ik een lege array. Moet ik nu dit:

1
2
preg_match('/\<transaction\>(.*)\<\/transaction\>/U', $reply, $transaction);
preg_match('/\<id\>(.*)\<\/id\>/U', $transaction[1], $id);


of kan dat makkelijker?
pi_72501525
Kun je niets met de xml-functies in php(5)?

En anders is het ook met 1 preg_match() op te lossen:
1
2
3
<?php
preg_match
('/\<transaction\>.*\<id\>(.*)\<\/id\>.*\<\/transaction\>/U'$reply$id);
?>
  FOK!-Schrikkelbaas zondag 6 september 2009 @ 22:31:20 #146
1972 Swetsenegger
Egocentrische Narcist
pi_72503055
xml functies ga ik even naar kijken.
Iemand trouwens ervaring met multisafepay? In de documentatie staat dat je in een bepaald element van de transaction request (XML) een uitgebreide beschrijving mee kan geven van de bestelling. Er staat letterlijk "Uitgebreide beschrijving (HTML)". Maar zodra ik HTML embed in het xml element krijg ik de melding terug dat het een fout XML bericht is.
pi_72505380
quote:
Op zondag 6 september 2009 22:31 schreef Swetsenegger het volgende:
xml functies ga ik even naar kijken.
Iemand trouwens ervaring met multisafepay? In de documentatie staat dat je in een bepaald element van de transaction request (XML) een uitgebreide beschrijving mee kan geven van de bestelling. Er staat letterlijk "Uitgebreide beschrijving (HTML)". Maar zodra ik HTML embed in het xml element krijg ik de melding terug dat het een fout XML bericht is.
Doe je die HTML eerst replacen? Gooi eens een htmlentities / htmlspecialchars over je HTML data die je in je XML node stopt heen.

Ik ga binnenkort ook eens met multisafepay klooien, ziet er wel veelbelovend uit en ik heb alweer een paar webshops op de planning die al het betaal-gemeuks willen hebben.
  FOK!-Schrikkelbaas zondag 6 september 2009 @ 23:18:28 #148
1972 Swetsenegger
Egocentrische Narcist
pi_72505839
quote:
Op zondag 6 september 2009 23:11 schreef Tuvai.net het volgende:

[..]

Doe je die HTML eerst replacen? Gooi eens een htmlentities / htmlspecialchars over je HTML data die je in je XML node stopt heen. :)
Nou staan geen rare dingen in, gewoon een tabel met wat data.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="UTF-8"?>
<redirecttransaction ua="custom-1.2">
   <merchant>
      <account>1000000</account>
      <site_id>1000</site_id>
      <site_secure_code>100000</site_secure_code>
      <notification_url>http://www.domein.nl:80//notificatie.php?type=initial</notification_url>
   </merchant>
   <customer>
      <locale>nl_NL</locale>
      <ipaddress>255.255.255.255</ipaddress>
      <forwardedip></forwardedip>
      <firstname>Naam</firstname>
      <lastname>Naam</lastname>
      <address1>Adres</address1>
      <address2></address2>
      <housenumber>10</housenumber>
      <zipcode>1000 AA</zipcode>
      <city>Stad</city>
      <state></state>
      <country>NL</country>
      <phone></phone>
      <email>mail@domain.com</email>
   </customer>
   <transaction>
      <id>36</id>
      <currency>EUR</currency>
      <amount>1999</amount>
      <description>Bestelling 36 bij Webshop. U kunt de status van uw bestelling bekijken als u inlogged op onze website.</description>
      <var1></var1>
      <var2></var2>
      <var3></var3>
      <items>
         <table style="border-collapse:collapse;width:100%;text-align:center">
            <tr style="color:black;font-size:9pt;">
               <td style="border-style:solid;border-width:1px 0 1px 1px;border-color:rgb(160,166,176)">Aantal</td>
               <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Artikelcode</td>
               <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Artikel</td>
               <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Kleur</td>
               <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Maat</td>
               <td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Prijs</td>
            </tr>
            <tr style="background-color:white;font-size:11pt;">
               <td style="width:45px;">1</td>
               <td style="width:75px;">001</td>
               <td style="width:250px;">Mexx - Zomershirt</td>
               <td style="margin:5px;width:10px;background-color:#FF0011"></td>
               <td style="width:250px;">Small</td>
               <td>19,99</td>
            </tr>
         </table>
         <br />
         <table style="width:100%;border:solid 1px rgb(160,166,176);text-align:left;">
            <tr>
               <td style="color:black;font-size:11pt;">Prijs:</td>
               <td style="width:600px;text-align:right;font-size:14pt;color:black;">€ 19,99</td>
            </tr>
         </table>
      </items>
      <manual>false</manual>
      <gateway></gateway>
      <daysactive>2</daysactive>
   </transaction>
   <signature>d786a106edf874df4ed6e8cc612e9650</signature>
</redirecttransaction>
pi_72506033
quote:
Op zondag 6 september 2009 23:18 schreef Swetsenegger het volgende:

[..]

Nou staan geen rare dingen in, gewoon een tabel met wat data.
[ code verwijderd ]
Hoeft ook niet. Ligt er maar net aan hoe Multisafepay met de data in die node om gaat. Ik kan me herinneren dat ik wel eens RSS feeds heb moeten maken, en de HTML die in de <description> node stond moest parsen als reeds vervangen HTML. Waarschijnlijk wordt je <table> tag nu bijvoorbeeld als een daadwerkelijke node van het XML bestand geïnterpreteerd.
  FOK!-Schrikkelbaas maandag 7 september 2009 @ 08:57:07 #150
1972 Swetsenegger
Egocentrische Narcist
pi_72511235
quote:
Op zondag 6 september 2009 23:21 schreef Tuvai.net het volgende:

[..]

Hoeft ook niet. Ligt er maar net aan hoe Multisafepay met de data in die node om gaat. Ik kan me herinneren dat ik wel eens RSS feeds heb moeten maken, en de HTML die in de <description> node stond moest parsen als reeds vervangen HTML. Waarschijnlijk wordt je <table> tag nu bijvoorbeeld als een daadwerkelijke node van het XML bestand geïnterpreteerd.
Ok.... wat doe ik daaraan? -edit- ow wacht html entities en specialchars natuurlijk. Dat is het proberen waard
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')