[php] advies gevraagd, manier van uitlezen database.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Stel, op dit moment heb ik zo'n 400 leden(met ieder eigen gegevens etc) in een database zitten. Elk van deze leden zitten in teams.
Hoe zouden jullie dit uitlezen op een website, voor ieder team een eigen pagina, met mysql, en als de teams dus elk jaar veranderen, bij nieuwe indeling deze pagina aanpassen of zoiets als op deze manier doen?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php  

switch($id){ 

  case "groep a": 
    echo "text of instructies als het groep a is, haal gegevens groep a uit database"; 
  break; 
  case "groep b": 
    echo "text of instructies als het groep b is"; 
  default: 
    echo "alle andere mogelijkheden niet a of b"; 
} 

?> 


Gaarne wat ideetjes en tips.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je groepen zitten toch ook in de database?

Je kan daarmee on-the-fly heel simpel controleren of het een bestaande groep is en zoja, de data van je groep (beschrijving bijvoorbeeld) en de leden in zo'n groep opvragen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Hmm... Als je het zo wilt doen, waarom gebruik je dan uberhaupt nog een tabel?

Of dacht je dat elk forum hier appart geprogrammeerd is?

Kijk gewoon wat bij elk team hetzelfde is en gooi dit in je html, kijk wat er verschillend is en gooi dit in je DB.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nee de leden zitten zeg maar gwoon enkel met hun naam etc, in de database. Niet in welk team ze zitten.

Acties:
  • 0 Henk 'm!

Verwijderd

En wat is de reden daarvan? :)

Om dit hard in de code te zetten is wel erg lelijk :o

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nou kijk, het is voor een sport vereniging. dus die heeft zo'n 400 leden.
Die leden staan dalijk allemaal in de database, en bij elk nieuw seizoen zijn er natuurlijk andere teams. Dus vandaar?

Acties:
  • 0 Henk 'm!

Verwijderd

Leden:
code:
1
lid | tid | naam | meer zooi

Teams:
code:
1
tid | informatie

Uitlezen met:
SELECT informatie FROM teams WHERE tid=leden.tid
(mysql kan geen subqueries he...dan zul je het met 2 aparte querys moeten doen)
code:
1
2
3
4
5
$sql = "SELECT tid FROM leden"
// mysql_fetch_gedoe & zo
$tid = $record->tid;
$sql2 = "SELECT informatie FROM teams WHERE tid = '$tid'"
// mysql_fetch_gedoe & zo

zo kun je
• Simpel leden in andere teams zettten
• Simpel uitleg per team aanpassen
tid = team id (a, b, etc)

[ Voor 38% gewijzigd door Verwijderd op 24-01-2003 16:31 ]


Acties:
  • 0 Henk 'm!

  • Belgar
  • Registratie: Januari 2002
  • Laatst online: 10-09 11:47

Belgar

Archmaster ranzige code..

Tabel met teams? :?

2 seconden te laat...

[ Voor 40% gewijzigd door Belgar op 24-01-2003 16:22 . Reden: weer te laat ]

...Als het maar werkt


Acties:
  • 0 Henk 'm!

  • paragon
  • Registratie: April 2000
  • Laatst online: 19:59
Hmm, dan lijkt het toch nog handiger om de database aan te passen dan elke file te doorlopen en te veranderen.

[ Voor 4% gewijzigd door paragon op 24-01-2003 16:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 24 January 2003 @ 16:21:
Leden:
code:
1
lid | tid | naam | meer zooi

Teams:
code:
1
tid | informatie

Uitlezen met:
SELECT informatie FROM teams WHERE tid=leden.tid
(mysql kan geen subqueries he...dan zul je het met 2 aparte querys moeten doen)
code:
1
2
3
4
5
$sql = "SELECT tid FROM leden"
// mysql_fetch_gedoe & zo
$tid = $record->tid;
$sql2 = "SELECT informatie FROM teams WHERE tid = '$tid'"
// mysql_fetch_gedoe & zo

zo kun je
• Simpel leden in andere teams zettten
• Simpel uitleg per team aanpassen
tid = team id (a, b, etc)
Dit is idd denk ik de beste manier, zo kunnen ook andere mensen die geen ftp toegang etc hebben, de teams samenstellen dat is perfect.

Maar hoe krijg je het nu voorelkaar, dat je bv. telkens 2 leden naast elkaar krijgt uitgelezen en dames en heren apart?Zonder dat er aangegeven in de mysql tabel dat het een dame of heer is?
Dat kan zeker niet?

Maar je moet lijkt mij toch wel bv. neer kunnen zetten van:

lid1 lid 2
lid 3 lid 4
lid 5 lid6
lid7 lid 8

[ Voor 9% gewijzigd door Verwijderd op 24-01-2003 17:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 24 January 2003 @ 17:32:
[...]


Dit is idd denk ik de beste manier, zo kunnen ook andere mensen die geen ftp toegang etc hebben, de teams samenstellen dat is perfect.

Maar hoe krijg je het nu voorelkaar, dat je bv. telkens 2 leden naast elkaar krijgt uitgelezen en dames en heren apart? Zonder dat er aangegeven in de mysql tabel dat het een dame of heer is?
Dat kan zeker niet?

Maar je moet lijkt mij toch wel bv. neer kunnen zetten van:

lid1 lid 2
lid 3 lid 4
lid 5 lid6
lid7 lid 8
1: Dat kan inderdaad niet :)
2: Je maakt een extra veld aan: geslacht
Dan run je om respectievelijk 2 mannen/vrouwen te selecteren devolgende query:
2 random leden
code:
1
SELECT lid FROM leden WHERE geslacht='man/vrouw' ORDER BY RAND() LIMIT 2

2 naast elkaar (beetje vies)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sql = "SELECT lid FROM leden ORDER BY lid ASC"
$i=0;
while(mysql_fetch_query_gedoe())
{
    if($i==2)
    {
        echo "<br>Lid: ".$record->lid;
        $i=1;
    }
    else
    {
        echo "Lid: ".$record->lid;
        $i++;
    }
}

[ Voor 47% gewijzigd door Verwijderd op 24-01-2003 17:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 24 januari 2003 @ 17:37:
[...]

1: Dat kan inderdaad niet :)
2: Je maakt een extra veld aan: geslacht
Dan run je om respectievelijk 2 mannen/vrouwen te selecteren devolgende query:
2 random leden
code:
1
SELECT lid FROM leden WHERE geslacht='man/vrouw' ORDER BY RAND() LIMIT 2

2 naast elkaar (beetje vies)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sql = "SELECT lid FROM leden ORDER BY lid ASC"
$i=0;
while(mysql_fetch_query_gedoe())
{
    if($i==2)
    {
        echo "<br>Lid: ".$record->lid;
        $i=1;
    }
    else
    {
        echo "Lid: ".$record->lid;
        $i++;
    }
}
Tnx!
Met dit voorbeeld zou jij dan, nog een aparte tabel aanmaken voor de teams, of de lid nummers gwoon met de hand elk seizoen invoeren in je php bestandje?

[ Voor 5% gewijzigd door Verwijderd op 24-01-2003 18:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als ik jou was zou ik op internet een aantal tutorials door gaan werken over databases en php. Het is nl veel handiger om het allemaal in een database te zetten, aangezien je dan alles makkelijk kan veranderen. Het is dan wel noodzakelijk dat je een beetje (beetje veel) verstand hebt van databases (bv mysql) en php.
Succes!

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 24 January 2003 @ 18:23:
[...]
... of de lid nummers gwoon met de hand elk seizoen invoeren in je php bestandje?
NEEE!!! nofi
Dat is het ergste wat je kan doen...en dan ga je zeker bij nieuwe leden dat bestandje weer aanvullen |:(
Dat is nou juist het handige van een database, je schrijft een scriptje waarmee je leden kan toevoegen, en als je dan een goed script hebt geschreven dat die de gegevens weer uit de database trekt hoef je niks meer te doen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
relaxed, :)

Ik hou het denk ik in 1 tabel, en dan voeg ik daar een extra veld met team aan toe. Bij elk seizoen zoek je dus de leden van het team uit, update je alleen de 'team' kolom en klaar.

Zo is het ook makkelijk dat als je zoekt op een lid, je meteen kan zien in welk team ze zitten, wel zo handig lijkt mij...

Acties:
  • 0 Henk 'm!

  • tazitiz
  • Registratie: Augustus 1999
  • Laatst online: 03-08 20:46

tazitiz

dbprutser

Als je het met 2 tabellen doet, 1 met groepen 1 met users,
kan je de groep in 1 keer van naam, beschrijving en andere eigenschappen veranderen.
je kan het ook met een cross table doen,
waarin je in de 3e tabel de gebruikers met de groepen verbindt.
Hierdoor kunnen de gebruikers dan in meerdere groepen worden gezet.
denk aan beginner, gebruiker, gevorderde, admin, blocked
dan hoef je per groep alleen de specifieke eigenschappen te vermelden zoals
lezen alleen eigen messages updaten, alle messages updaten, 1 maand geen topics starten etc.

is even opzetten, maar vanaf dat moment hoef je geen 200 users aan te passen als je een groep veranderd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
tazitiz schreef op 24 January 2003 @ 22:01:
Als je het met 2 tabellen doet, 1 met groepen 1 met users,
kan je de groep in 1 keer van naam, beschrijving en andere eigenschappen veranderen.
je kan het ook met een cross table doen,
waarin je in de 3e tabel de gebruikers met de groepen verbindt.
Hierdoor kunnen de gebruikers dan in meerdere groepen worden gezet.
denk aan beginner, gebruiker, gevorderde, admin, blocked
dan hoef je per groep alleen de specifieke eigenschappen te vermelden zoals
lezen alleen eigen messages updaten, alle messages updaten, 1 maand geen topics starten etc.

is even opzetten, maar vanaf dat moment hoef je geen 200 users aan te passen als je een groep veranderd.
Uhm..t ging niet over een forum hoor, maar leden van een een echte sport vereniging die op een website staan :Y)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 24 January 2003 @ 23:56:
[...]


Uhm..t ging niet over een forum hoor, maar leden van een een echte sport vereniging die op een website staan :Y)
wat is het verschil met forums waar topics in zitten en teams waar leden in zitten :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou, zoals hij antwoord geeft, gaat over een heel ander onderwerp, maar goed maakt niet uit

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 16:51
Tis gewoon precies hetzelfde principe...
Misschien moet je eens wat artikelen gaan lezen op bijvoorbeeld www.phpfreakz.com over normaliseren, ook normaliseren intypen bij google levert weleens wat nuttige resultaten op ;)
Pagina: 1