[PHP]Array, deel info uit regel toevoegen aan zelfde regel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
Ik heb een probleem met een array (lees weet niet hoe ik het volgende moet aanpakken).

Ik heb 2 tabellen in MySQL.
code:
1
2
Tabel 1, festival bevat festivals (festivalnaam, festivaldatum)
Tabel 2, gebruiker bevat gebruikersgegevens (naam, geboortedatum)


Nu wil ik een lijst maken met alle gebeurtenissen dit jaar gesorteerd op datum (vroegste datum eerst) (en natuurlijk alleen data na vandaag, maar dat laten we even buiten de scope van deze post ( :+ )

PHP:
1
2
3
$sql=select * from tabel 1
$result= mysql_query($sql)
$array1 = mysql_fetch_array($result))

Kijk aan een array :)
Zelfde voor tabel 2

Als ik het goed heb zo een:
code:
1
2
3
4
naam       datum
jan           01-01-2004
piet          01-02-2004  
klaas        12-03-1911


Ik wil nu bij beide arrays het jaartal vergeten. Het lijkt me wel handig om hiervoor een nieuwe kolom (of hoe noem je dat) te hebben waar ik deze info in stop. Dan heb ik het jaartal namelijk ook nog.

Dus

tabel:

code:
1
2
3
4
naam       datum       datumzonderjaar
jan           01-01-2004     01-01
piet          01-02-2004     01-02  
klaas        12-03-1911     12-03


Hoe doe ik dit???
Ik moet dus voor elke rij de huidige datum bepalen, dan t jaar eraf knippen (substr dus) en dan de nieuwe info insterten in de array behorende bij die rij. Maar hoe?

Nu moet ik ze nog samenvoegen, nu weet ik nog niet hoe ik dat doe (ik denk met array_merge), maar dat is niet het grote probleem.

En als dat af is sorteren op datum (daar kan ik handig de oude datum met jaartal voor gebruiken :) ) (kan dat met sort?

Nothing to see here


Acties:
  • 0 Henk 'm!

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

Bosmonster

*zucht*

eh? Waarom niet gewoon een date veld, dat sorteert een stuk makkelijker. Sowieso datum altijd omdraaien (jjjjmmdd) voor sorteren.

Verder is het toch gewoon even door de array heenlopen en een extra veld toevoegen die een bewerking is op een van de andere velden?

Snap niks van wat je wilt eigenlijk...

[ Voor 8% gewijzigd door Bosmonster op 20-10-2004 15:14 ]


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 18-09 19:05
En waarom sorteer je niet op datum in de SQL query? Dan is je array ook meteen gesorteerd.

Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
Bosmonster schreef op 20 oktober 2004 @ 15:13:
eh? Waarom niet gewoon een date veld, dat sorteert een stuk makkelijker. Sowieso datum altijd omdraaien (jjjjmmdd) voor sorteren.

Verder is het toch gewoon even door de array heenlopen en een extra veld toevoegen die een bewerking is op een van de andere velden?

Snap niks van wat je wilt eigenlijk...
Hmm daar had ik nog niet aan gedacht (yyyy-mm-dd) ik kijk net in de database en heb heel handig in de ene tabel yyyy-mm-dd staan en in de andere dd-mm-yyyy |:( .
Maar goed dat valt wel aan te passen.

Dat tweede dat je schrijf kan ik dus niet, geen idee waar ik moet beginnen en op GoT kan ik t net vinden :'( elke zoekactie leverd namelijk rijen toevoegen op geen kolommen.
Heb je een kleine hint voor me?

Overigens denk ik dat ik met je yyyy-mm-dd tip al bijna daar ben _/-\o_
Postman schreef op 20 oktober 2004 @ 15:16:
En waarom sorteer je niet op datum in de SQL query? Dan is je array ook meteen gesorteerd.
Omdat t dus twee verschillende tabellen zijn die met elkaar gemerged moeten worden en dan pas gesorteerd moeten worden.

... nu alleen dat merge eens goed bekijken, maar daar is wel wat over te vinden :)

[ Voor 19% gewijzigd door itsme op 20-10-2004 15:22 ]

Nothing to see here


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 18-09 19:05
Toch vraag ik me af of je dit niet op kunt lossen met een goede SQL query. Volgens mij kun je namelijk alles wat jij wilt direct met SQL oplossen en ook meteen sorteren.

Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
Postman schreef op 20 oktober 2004 @ 15:33:
Toch vraag ik me af of je dit niet op kunt lossen met een goede SQL query. Volgens mij kun je namelijk alles wat jij wilt direct met SQL oplossen en ook meteen sorteren.
En hoe dat dan???
Overigens bestaan de tabellen natuurlijk uit meerdere velden, alleen de datum hebben ze beide, denk aan woonplaats voro de gebruiker en kosten voor festival.

Nothing to see here


Acties:
  • 0 Henk 'm!

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 18-09 19:05
its_me schreef op 20 oktober 2004 @ 15:42:
[...]


En hoe dat dan???
Overigens bestaan de tabellen natuurlijk uit meerdere velden, alleen de datum hebben ze beide, denk aan woonplaats voro de gebruiker en kosten voor festival.
Dan wordt het lastiger maar niet onoverkombaar.
En voor zo'n query is toch wel enige kennis van SQL vereist..

Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
Aargh ... kom er maar niet uit.

Ik heb gekeken naar UNION, deze kan echter alleen gebruikt worden als de velden het zelfde zijn. Dit is dus niet het geval.

Dan heb je nog de diverse joins, deze zullen echter data van de niet matchende tabel uitsluiten, ook geen oplossing dus ...

Ik heb dus:

code:
1
2
3
4
5
6
7
8
9
[naam gebruiker][woonplaats][datum1]
Bas           Thuis             20040302
Piet          Niet thuis       20040301

en

[festivalnaam][categorie][aantal leden][datum2]
pinkpop             1         12          20050505
ander geval        2           12          20041002


Deze wil ik samenvoegen tot 1 tabel"
code:
1
2
3
4
5
[naam gebruiker][woonplaats][datum][festivalnaam][categorie][aantal leden]
Bas           thuis          20040302
Piet           niet thuis    20040301
                              20050505   pinkpop       1            12
                              20041002    ander geval  2           12


Uiteindelijke doel is een op datum van gebeurtenis gesorteerd overzicht.
Zo dus:

code:
1
2
3
4
5
6
Gebeurtenissen:

geen categorie 01-03        Piet jarig
geen categorie 02-03        Bas jarig
categorie 2      02-10        Ander geval
categorie 1      05-05        Pinkpop

Nothing to see here


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
Tip: zoek een op JOIN.
Daarnaast zou ik je datamodel iets anders organiseren:
code:
1
2
3
4
5
tabel gebruikers
userid | naam | woonplaats | etc...

tabel gebeurtenissen
gebeurtenisid | userid | datum | omschrijving

code:
1
2
3
4
5
6
SELECT gebeurtenissen.omschrijving, gebeurtenissen.datum, users.naam
FROM gebeurtenissen 
LEFT JOIN users 
ON (gebeurtenissen.userid = users.userid)
ORDER BY gebuertenissen.datum
WHERE date > '*nu*'

Zoiets, even uit de losse pols

[ Voor 3% gewijzigd door T-MOB op 21-10-2004 11:00 ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • itsme
  • Registratie: Februari 2000
  • Niet online
T-MOB schreef op 21 oktober 2004 @ 10:59:
Tip: zoek een op JOIN.
Daarnaast zou ik je datamodel iets anders organiseren:
code:
1
2
3
4
5
tabel gebruikers
userid | naam | woonplaats | etc...

tabel gebeurtenissen
gebeurtenisid | userid | datum | omschrijving

code:
1
2
3
4
5
6
SELECT gebeurtenissen.omschrijving, gebeurtenissen.datum, users.naam
FROM gebeurtenissen 
LEFT JOIN users 
ON (gebeurtenissen.userid = users.userid)
ORDER BY gebuertenissen.datum
WHERE date > '*nu*'

Zoiets, even uit de losse pols
Ik zie niet wat je met jouw datamodel voorstel wil bereiken, bij de gevraagde query doet de relatie tussen gebruiker en gebeurtenis er totaal niet toe. Overigens heb ik natuurlijk wel een ID en ook een koppeling tussen beide tabellen, dit overigens middels een andere tabel die userid en gebreurtenisid aan elkaar koppeld. (en ook de betaalstatus enzo van de gebruiker staat daar in). Maar dat is dus niet relevant in deze query.

Jouw query is dus ook helemaal onbruikbaar omdat deze relatie me niet boeit.
Ik wil een lijst van datums van festivals en daartussen eventuele verjaardagen.

* itsme weet nu ook weer waarom er gesorteerd moet worden op een DEEL van de datum, de geboortedatum komt anders namelijk onderaan ...

Nothing to see here


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Nu online
its_me schreef op 21 oktober 2004 @ 11:23:
[...]
Jouw query is dus ook helemaal onbruikbaar omdat deze relatie me niet boeit.
Ik wil een lijst van datums van festivals en daartussen eventuele verjaardagen.

* T-MOB weet nu ook weer waarom er gesorteerd moet worden op een DEEL van de datum, de geboortedatum komt anders namelijk onderaan ...
Aha... Dan hab ik je idd verkeerd begrepen en slaat mijn verhaal nergens op. * T-MOB vond het al raar dat iemand gebruikers middels datum aan een gebeurtenis zou koppelen

Regeren is vooruitschuiven

Pagina: 1