[php] array problemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hallo,

ik heb een klasse die een kalender genereerd netjes in een maand. dit gebeurt met een kalender klasse die ik op het internet heb gevonden (waarom het wiel 2x uitvinden)

met het volgende bestand roep ik de klasse aan:

PHP:
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
<?php
//classes voor kalender
require("inc.date_functions.php");
require("class.calendar.php");

//methodes voor database verbinding
include("../database.php");

//instantie van classe aanmaken
$kalender = new calendar();

//toevoegen datums aan kalender
$query = "SELECT * FROM kalender";
$result = mysql_query($query, $connection);

while ($row = mysql_fetch_array($result)) {
$dag = $row[dag];
$maand = $row[maand];
$jaar = $row[jaar];
$datum = "\"$jaar-$maand-$dag\"";
$string_datum .= ", $datum";
}

$string_datum = substr($string_datum, 2);
print $string_datum;

//werkt niet:
$kalender->events = Array($string_datum);

//werkt wel:
//$kalender->events = Array("2002-10-10", "2003-7-11", "2002-10-29","2003-10-04","2002-10-04");


$kalender->show(1, 1, 0);
?>


ik heb in de code al aangegeven wat het probleem is maar zal het even uitleggen

de datums die aan $kalander->events meegegeven moeten worden zullen als gebeurtenis op de kalender komen te staan dit werkt als ik ze simpelweg ingeef maar ik wil deze dynamisch maken en heb dus een tabel met daarin de velden dag maand en jaar. deze haal ik eruit aan de hand van de query en wil ik dus invullen bij $kalender->events maar hij pakt dit niet. hij geeft geen foutmelding maar reageert er ook niet op. als ik de string $string_datum op het scherm zet staan hier de waardes correct in. het scripts staat op http://www.wupor.nl/beta/scripts/kalender/ (misschien dat het zo nog duidelijker is) de waarders die geprint zijn staan boven de kalender...

weet iemand een oplossing voor mijn probleem?

Acties:
  • 0 Henk 'm!

  • Neman
  • Registratie: September 2000
  • Laatst online: 08:58

Neman

Een uit de lucht gegrepen naam

Waarschijnlijk geeft dit ook niet de gewenste output:
PHP:
1
2
$blaat = array($string_datum);
print_r($blaat); // slechts één element?


Ik denk dat die hele string niet wordt opgedeeld in afzonderlijke array-elementen, maar als één gehele string slechts één array-element beslaat. In dat geval kun je het beste $string_datum splitten met split() en ze afzonderlijk toevoegen aan de array.

[ Voor 9% gewijzigd door Neman op 24-07-2003 15:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dit is inderdaad het probleem want wanneer ik de code eenigsinds aanpas
PHP:
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
<?php
//classes voor kalender
require("inc.date_functions.php");
require("class.calendar.php");

//methodes voor database verbinding
include("../database.php");

//instantie van classe aanmaken
$kalender = new calendar();

//toevoegen datums aan kalender
$query = "SELECT * FROM kalender";
$result = mysql_query($query, $connection);

while ($row = mysql_fetch_array($result)) {
$dag = $row[dag];
$maand = $row[maand];
$jaar = $row[jaar];
$datum = "$jaar-$maand-$dag";
$string_datum .= ", $datum";
}

$string_datum = substr($string_datum, 2);
print $string_datum;

//werkt niet:
$kalender->events = Array("$string_datum");

//werkt wel:
//$kalender->events = Array("2002-10-10", "2003-7-11", "2002-10-29","2003-10-04","2002-10-04");


$kalender->show(1, 1, 0);
?>

dan werkt het als ik een datum in de tabel heb staan.

zou je mij aub iets precieser uit kunnen legger hoe de methode split() werkt want ik heb op php.net gekeken en daar kwam ik niet helemaal uit...

[ Voor 9% gewijzigd door Verwijderd op 24-07-2003 15:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb het inmiddels opgelost met de methode array_push()

PHP:
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
<?php
//classes voor kalender
require("inc.date_functions.php");
require("class.calendar.php");

//methodes voor database verbinding
include("../database.php");

//instantie van classe aanmaken
$kalender = new calendar();

//toevoegen datums aan kalender
$query = "SELECT * FROM kalender";
$result = mysql_query($query, $connection);

$datums = array();

while ($row = mysql_fetch_array($result)) {
$dag = $row[dag];
$maand = $row[maand];
$jaar = $row[jaar];
$datum = "$jaar-$maand-$dag";
array_push ($datums, "$datum");
}

$kalender->events = $datums;

$kalender->show(1, 1, 0);
?>


het schoot me ineens binnen dat je ook waarders toe kunt voegen aan en array. bedankt voor de tip in ieder geval want het probleem was inderdaad dat het geheel als een elemant aan werdt gezien in plaats van allemaal losse...

Acties:
  • 0 Henk 'm!

  • Neman
  • Registratie: September 2000
  • Laatst online: 08:58

Neman

Een uit de lucht gegrepen naam

Verwijderd schreef op 24 July 2003 @ 16:05:
ik heb het inmiddels opgelost met de methode array_push()

<code>

het schoot me ineens binnen dat je ook waarders toe kunt voegen aan en array. bedankt voor de tip in ieder geval want het probleem was inderdaad dat het geheel als een elemant aan werdt gezien in plaats van allemaal losse...
De code uit de startpost had ik iets beter moeten bekijken. Ik zie dat je in eerste instantie die string ging genereren (met een komma als scheidingsteken) en ze vervolgens afzonderlijk in een array wilde stoppen. In zo'n geval is array_push() inderdaad de aangewezen oplossing om een datum meteen aan een array toe te voegen, het is slordig om in zo'n geval een lange string van data te genereren en die vervolgens weer los te knippen met split().

Om toch nog even uit te leggen hoe split() werkt:
PHP:
1
2
3
$elements = "Piet, Kees, Klaas";
$array = split(",", $elements);
print_r($array); // output is [0] => Piet, [1] => Kees, [2] => Klaas

[ Voor 31% gewijzigd door Neman op 24-07-2003 17:52 ]


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:29

Tjark

DON'T PANIC

ipv
PHP:
1
array_push ($datums, "$datum");
kan je evt ook
PHP:
1
$datums[] = $datum;
doen. Mits je al $datums = array(); hebt gedaan.

[ Voor 25% gewijzigd door Tjark op 24-07-2003 17:55 ]

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

TjarkVerhoeven schreef op 24 July 2003 @ 17:54:
PHP:
1
array_push ($datums, "$datum");
Als je het dan toch netjes wilt doen laat dan die quotes om $datum ook maar weg :)

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:29

Tjark

DON'T PANIC

hehe, dat dacht ik ook na m'n edit, maar ik was te lui.
waarom iets verbeteren in iets dat je niet moet gebruiken? ;)

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

Modbreak: Zo werkt dat hier niet. Lees ff de faq door.

[ Voor 87% gewijzigd door Janoz op 06-08-2003 11:49 ]

Pagina: 1