[php]database herontwerpen...word er gek van

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Hey,

Ik heb (voor mijn gevoel) een vrij complex probleem.
Het probleem is als volgt.

Ik heb 4 websites. Al deze 4 websites hebben een "top20" referals. Daar staan de 20 websites die mij de meeste bezoekers sturen, op volgorde van de hits die ze sturen. Ook heb ik op elke site de rest van de sites, met naam en url, gesorteerd op naam.

Het werkt zo. Elke bezoeker die een van mijn sites bezoekt, kom eerst op in.php. Die file doet een bepaalde procedure:
1. Kijken of het ip van de bezoeker al voorkomt in de DB.
2. Zo ja, dan niks doen en de bezoeker met "header" forwarden naar index.php
3. Zo nee, het ip adden in de DB. Dan kijken of er al een rij is van waarbij de dag gelijk is aan vandaag, en de "siteid" gelijk is aan de "siteid" opgegeven bij in.php. Zo ja, +1 doen bij het aantal hits van de site waar het om gaat(mijn site dus). Zo nee, toevoegen met waarde 1 bij de site waar het om gaat.

Ik heb dus 2 tabellen.
1 tabel met alle site informatie. De link, de url, siteid, het aantal bezoekers, email adres, laatstehit, adddate, wie de eigenaar is, en nog meer dingen. Iemand maakt dus 1 account, en kan vervolgens meerdere sites adden.

Dan heb ik er nog een, die houd bij hoeveel hits er gestuurd zijn door welke site. Zoals beschreven hierboven, werkt deze met de datum, een siteid, en 4 colums; voor elk van mijn site 1. Hier word dus voor de dag waarop een site een bezoeker(unique dus, eerst ip check in de db) stuurt pas een rij ingevoerd, met 1 als waarde voor de site waar hij een bezoeker heeft gestuurd, en voor de rest van de colums 0.

Afin, best lastig om uit te leggen :P

Nu het probleem.
Sommige sites werken met een soortgelijk systeem.

Ja...so? zou je denken :?

Nou...kijk....

In hun database, moet ik dus een url opgeven voor mijn site. Laat zeggen "http://www.altavista.com/in.php?siteid=altavista". Das geen probleem. Nou moet hun site dus ook geadd worden in mijn database. MAAR, met welke siteid dan? Stel het is henk.com. Dan add ik hem dus als siteid henk. Maar welke url geef ik op? "http://www.henk.com/in.php?siteid=altavista" kan ja, voor op altavista.com. Maar al mn andere sites zullen ook die code gebruiken.


henk.com ---> altavista.com/in.php?siteid=henk (siteid "henk" krijgt +1 voor collum altavista, met dag is vandaag)

Nu word henk.com dus op mn pagina gezet, met de link "http://www.henk.com/in.php?siteid=altavista", maar als ik dus een hit stuur vanaf mn andere site, laat zeggen google.com, dan zal henk.com denken dat ie van altavista.com komt, en zal google.com nooit daar verschijnen, en andersom ook niet.

Bah, ik snap mn eigen probleem niet eens meer.
Het is echt irritant. Elke keer als ik er over nadenk raak ik helemaal in de war en kom ik er niet meer uit. ;(
Is het echt zo complex of ligt het gewoon aan mij? :?

Ik hoop dat iemand me kan helpen... :)

Leef lekker in het nu, er is niks anders


Verwijderd

Kan je niet even kort en bondig het "doel" uitleggen? Van je bestaande procedures wordt ik weinig wijzer.

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
het doel waarvan?

kijk het probleem is dat mensen die zon gelijksoort systeem hebben hun site niet kunnen adden, omdat elke site een apparte code nodig heeft, en die aparte code is dus op elke site waar de link staat, en ook op waar die naar toe gaat (duh)

het is heel moeilijk uit te leggen... ;(

Leef lekker in het nu, er is niks anders


  • roelkw
  • Registratie: Augustus 2000
  • Laatst online: 23-08 13:48
Net wat je zegt: volgens mij snap je 't zelf niet helemaal meer.

Wat heb je nu precies? Een script wat bijhoudt hoeveel mensen waarvandaan komen, of heb ik 't nou mis? Als 't dat is, hebbik nog wel wat ideeën.
Zo niet: leg dan ff goed uit, ik snap geen reet van je uitleg! :)

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
wheheh jah het is heel kut uit leggen :)


Jah ik heb dus gewoon een systeem dat bijhoud hoeveel hits een site (die in de database staat) heeft gestuurd, en ze dan vervolgens op volgorde van het aantal hits op de pagina zet.

Om het maar ff kort samen te vatten. Nou heb ik dus een probleem met de linking code, omdat elke site een eigen siteid heeft. Als iemand datzelfde systeem heeft (en dat zijn er al aardig wat) werkt het dus niet meer,omdat mijn database maar 1 url heeft bij de site.

Snap je? :)

Leef lekker in het nu, er is niks anders


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
is het nou nog zo onduidelijk :?
Ik weet niet hoe ik het anders kan uitleggen...

Leef lekker in het nu, er is niks anders


  • cemtex
  • Registratie: Januari 2000
  • Laatst online: 22-04 20:52

cemtex

Version 1.1.1

Dus je probleem is dat als je www.jouwsite.comin.php?siteid doet dat je dan een probleem hebt met die siteid omdat je die niet kan terugvinden :?

Maar die siteis kan je toch gewoonn terugvinden in de database ? Als je dat niet hebt dan moet je het op username doen ofzo....:?

Maar om een kleine tip te geven, je zegt zelf al dat je er zelf niet uit komt , hoe denk je dan dat ik je wel kan volgen, het lijkt wel of je een breezer te veel hebt gehad ;)

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op donderdag 04 oktober 2001 09:06 schreef cemtex het volgende:
Dus je probleem is dat als je www.jouwsite.comin.php?siteid doet dat je dan een probleem hebt met die siteid omdat je die niet kan terugvinden :?

Maar die siteis kan je toch gewoonn terugvinden in de database ? Als je dat niet hebt dan moet je het op username doen ofzo....:?

Maar om een kleine tip te geven, je zegt zelf al dat je er zelf niet uit komt , hoe denk je dan dat ik je wel kan volgen, het lijkt wel of je een breezer te veel hebt gehad ;)
hmmmzzz nee :P

Ik ga het nog een keertje uitleggen :)
Elke site staat in mijn database met een unique site id. Deze moet die site gebruiken om mij te linken, zodat ik het aantal bezoekers dat ie stuurt kan tellen. ok?

Hij gebruikt precies hetzelfde. Dus, in zijn database, staat de link naar mijn site, als mijnsite.com/in.php?siteid=znsiteid

MAAR, op de plek van die siteid kan dus maar 1 siteid staan. Ik heb 4 sites, en 1 database.

Voorbeeldje. Stel mijn sites zijn altavista.com en google.com. Zijn site is henk.com en harry.com.

We hebben allebij maar 1 database.

In mijn database, staan zijn sites met de volgende link:
harry.com/in.php?siteid=altavista
henk.com/in.php?siteid=altavista

nu staan dus zowel harry.com als henk.com in mijn database. Maar hoe moet google ze nou linken? Google.com zal ook "altavista" gebruiken als siteid, en zodoende zullen de hits die Google stuurt, bij Altavista worden opgeteld!

Snap je het nou? :)

Leef lekker in het nu, er is niks anders


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Het word steeds vager :)
Helaas jongen, ik snap er niets van...

  • dmnq
  • Registratie: Januari 2000
  • Laatst online: 16-09 13:29

dmnq

zonder klinkers

je kan toch de hostname opvragen van de referer?

Hosting (100 MB Harddisk, 1 GB Traffic, 5 POP, MySQL, PHP voor € 3,60 per maand)


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
blah...

lezen jullie wel alles?
hmmm
Ik nummer ze maar ff, dan kan je zeggen tot waar je het snapt :P

1. De link naar een site die dit systeem gebruikt, is dus op elke site anders. Ok? de siteid is voor elke site anders, dus het gedeelte http://www.altavista.com?siteid= is nog hetzelfde maar de rest is dus op elke site anders, ok?

2. In de database staat de site maar 1 keer, met 1 link (en dus maar 1 siteid)

3. Ik heb 4 sites, en gebruik 1 centrale database. De link naar een site is dus op al mn 4 sites hetzelfde.

4. Als de link naar henk.com dus ""http://www.henk.com?siteid=altavista" is, dan zal op al mn sites die link worden gebruikt, en zal henk.com alle hits (van al mn sites dus) bij siteid "altavista" optellen.

5. Gevolg: Alleen altavista komt op henk.com te staan, en de rest van mn sites niet.

6. In principe zouden mijn andere sites nooit hits naar altavista kunnen sturen, omdat ik hetzelfde systeem heb: als een site geen hits stuurt komt ie er ook niet op te staan, maar dat ff terzijde.

Snap je het nou? En zo nee vanaf of waar niet?

Leef lekker in het nu, er is niks anders


  • dmnq
  • Registratie: Januari 2000
  • Laatst online: 16-09 13:29

dmnq

zonder klinkers

voor 1 val ik weg....sorry :'(

Hosting (100 MB Harddisk, 1 GB Traffic, 5 POP, MySQL, PHP voor € 3,60 per maand)


  • dmnq
  • Registratie: Januari 2000
  • Laatst online: 16-09 13:29

dmnq

zonder klinkers

okay...maak een tabel met eigen sites <eigensiteid> <sitenaam> en voeg een kolom <eigensiteid> toe aan je sitehits...of snap ik het nou verkeerd?

Hosting (100 MB Harddisk, 1 GB Traffic, 5 POP, MySQL, PHP voor € 3,60 per maand)


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
;(
Het is dus echt complex :P

Ok....uhmmmmm...hoe kan ik dit nou nog anders uitleggen :?
FF denken....

ik zal het eerst eens proberen uit te leggen zonder mn probleem, dus hoe het nu werkt.

Mijn sites zijn dus altavista en google.
Zijn site is henk.com (vb ofcourse :P)

Iemand wilt graat link echange doen met mij. Ok. Dan kan hij een account aanmaken, en vervolgens zn site(henk dus) toevoegen. Bij het toevoegen van zn site moet ie dus zn site titel opgeven, de url, het email adres en nog wat meer kleinere dingen, waaronder een uniek siteid(hij vult henk in). Door middel van deze siteid kan ik de sites van elkaar onderscheiden.

Okay, hij heeft zn site geadd, en nu add ie op zijn site(handmatig) een link met de url:
http://www.altavista.com/in.php?siteid=henk

en eentje voor google:
http://www.google.com/in.php?siteid=henk

Als er nou iemand op http://www.altavista.com/in.php?siteid=henk klikt, komt ie dus op in.php.
Die pagina kijkt of het ip van de bezoeker al in mn database zit, zoniet dan voegt ie hem toe en doet +1 bij het aantal hits in van de site met het siteid "henk". Ok? Dat valt wel te begrijpen toch...? (hij voegt een nieuwe rij toe als er nog geen rij voor die dag is, maar dat is nu ff niet belangrijk).

Ok. Stel hij heeft dus wat bezoekers gestuurd. Op altavista.com heb ik een select van alle sites waarbij het aantal hits > 0 is, in een while. Hij sorteerd ze op het aantal hits in. Henk heeft dus een aantal hits gestuurd, en dus zal er een link verschijnen als:

Henk(met als link http://www.henk.com)

Die titel+url staan dus in mijn database.

Nou heeft henk.com ook wat hits gestuurd naar mn andere site, google. Hier gebeurt dus hetzelfde:

select where hitsin > 0 Sorteren op het aantal hits dat ie gestuurd heeft. Wederom komt er een link:

Henk(met als link http://www.henk.com)

Ook nu weer haalt ie de titel+url uit de database(dezelfde database als altavista gebruikt, dus dezelfde titel+url).
De site henk staar er dus maar een keer in, dus met 1 titel en met maar 1 url.
Duidelijk, toch?
-------------------------------------------
Ok, nu komt dus het probleem.
Stel nou dat henk.com ook een soorgelijk systeem gaat gebruiken (dus niet hetzelfde!). Daardoor moet de link naar zijn site op ieder van mijn site anders zijn

Mijn sites moeten in zijn database toegevoegt worden. Altavista.com met een url zowiets als http://www.altavista.com/in.php?siteid=henk en google als http://www.google.com?siteid=henk.

Stel dat ie 10 hits stuurt naar beide links. Altavista denk dus: "oh, henk heeft 10 hits gestuurd, ff de titel en url uit de database halen, en printen". Dat doet ie dus ook. Google doet precies hetzelfde.

En nu komt het: er is maar 1 url in mn database. De url op google.com moet dus anders zijn dan de url op altavista.com. Snap je? Anders worden de hits verkeert geteld.

FF tekenen:

henk.com ---> altavista.com(http://www.altavista.com?siteid=henk

henk.com ---> google.com(http://www.google.com?siteid=henk

---> is een bezoeker

In mijn database staat nu dus dat henk.com 1 hit heeft gestuurd naar mn site altavsista, en eentje naar google.

Henk.com moet nu dus gelinkt worden op altavista.com en google.com.

De naam van de site en de url haalt ie uit de database.
In die database kan echter maar 1 url staan, dus niet henk.com/in.php?siteid=altavista voor mn site altavista en henk.com/in.php?siteid=google voor mn site google.

Snap je? Er kan dus maar 1 url staan voor een site, en dus zal op elke site van mij dezelfde url gebruikt worden.

als het nu nog niet duidelijk is ga ik maar een andere hobby zoeken ofzo...

Leef lekker in het nu, er is niks anders


Verwijderd

Erikje, jou systeem is een beetje omslachtig..mijn nieuwe central database systeem werkt prima..Ik zal je het wel ff uitleggen over de phone morgen ofzo :)

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
doe nu maar :P
dds

Leef lekker in het nu, er is niks anders


  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
Je moet zorgen dat je per user een x aantal sites kan toevoegen. Met andere woorden, je moet naast de tabel die de referer opslaat met het siteid, nog 2 tabellen hebben. 1 met de username etc. en 1tje die username + siteid aan elkaar knoopt, en als je dat een beetje slim doet, zorg je ervoor dat 1 username meerdere siteid's kan hebben. Problem solved. :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

TIP

Gebruik nooit inhoudgerelateerde waarden als sleutel in een tabel. Oftewel, als het om de site henk.com gaat, moet de siteID niet henk worden, (bijvoorbeeld omdat er ook een henk.nl kan zijn), maar gewoon een nummertje krijgen.

Oftewel, verwijderen je primaire sleutel, en voeg een nieuwe autoincrement sleutel toe, en gebruik die als siteID. Dan weet je zeker dat elke sleutel uniek is.

of * drm heeft het niet begrepen


edit:
Bij het toevoegen van zn site moet ie dus zn site titel opgeven, de url, het email adres en nog wat meer kleinere dingen, waaronder een uniek siteid(hij vult henk in).
NOOIT doen! Sleutels altijd aan de database kant houden. Ze zijn niet interessant voor de gebruiker, en kunnen bij verkeerd gebruik alleen maar problemen of extra errorhandling opleveren.

kortom: Laat je DB de sleutel genereren. Alle andere info die je nodig hebt van de gebruiker zijn "gewone" velden.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Dat is waar. Had ik beter kunnen doen, vind ik achteraf ook. Maar ik kan het nu niet meer veranderen, omdat er nu al 172 sites in mn database zitten, en ik dus op 172 sites gelinked word. Als ik die siteid dus verander in cijfers dan moeten al die links veranderd worden, dat lukt me nooit...


Godver, ik heb steeds 404 met tweakers, schiet niet op. Net weer een dik verhalen lopen typen...

Uhm... elke user kan meerdere site adden, met een unqiue id voor elke site. Dus dat is het probleem niet. Probleem is dat een site maar 1 keer in de database staat, en dat de url dus per (MIJN)site verschilt.

Leef lekker in het nu, er is niks anders


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Vermakelijk topic :)

extra id toevoegen voor op welke site de url "gebruikt" wordt zoals ergens hierboven al gemeld is. Dan op jouw site alleen naar de "id" van de site zelf toevoegen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

dusty:
extra id toevoegen voor op welke site de url "gebruikt" wordt zoals ergens hierboven al gemeld is. Dan op jouw site alleen naar de "id" van de site zelf toevoegen.
amen

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1