fout array uit $_SESSIE['array']
ik stop een array met zelf gemaakte klasse "Categorie" in een sessie variabele, en als ik deze later terug wil uitlezen dan kan hij dit niet meer.
dit is de code:
Code (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
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
<?php
if(!empty($_POST['WaCat'])){
$i = 0;
// ophalen van de radiobutton waardes
// aan de hand van het aantal categorieën er aanwezig zijn
$arrCat = $_SESSION['arrCat']; // array met categorieën !! FOUT
$arrGcw = array(); // array voor GebCatWaarde in op te slaan
while($i <= count($arrCat)){
$x = $i+1;
// het opslaan van de gekozen waarde bij de juiste categorie
$cat = new Categorie();
$cat = $arrCat[$i]; // categorie uit array halen !! LUKT NIET
$waCat = $_POST['group'.$x]; // waarde group uit POST halen
$gcw = new GebCatWaarde();
$gcw->setCategorieID($cat->getID());
$gcw->setWaardeCat($waCat);
array_push($arrGcw,$gcw);
$i++;
}
$_SESSION['arrGcw']; // array oplsaan in sessie var
}
?>
if(!empty($_POST['WaCat'])){
$i = 0;
// ophalen van de radiobutton waardes
// aan de hand van het aantal categorieën er aanwezig zijn
$arrCat = $_SESSION['arrCat']; // array met categorieën !! FOUT
$arrGcw = array(); // array voor GebCatWaarde in op te slaan
while($i <= count($arrCat)){
$x = $i+1;
// het opslaan van de gekozen waarde bij de juiste categorie
$cat = new Categorie();
$cat = $arrCat[$i]; // categorie uit array halen !! LUKT NIET
$waCat = $_POST['group'.$x]; // waarde group uit POST halen
$gcw = new GebCatWaarde();
$gcw->setCategorieID($cat->getID());
$gcw->setWaardeCat($waCat);
array_push($arrGcw,$gcw);
$i++;
}
$_SESSION['arrGcw']; // array oplsaan in sessie var
}
?>
hij doet blijkbaar wel de eerste keer de while, maar de volgende keren niet meer.
ik include de klassen die ik gebruik ergens bovenaan.
dit is de fout:
Fatal error: Call to a member function getDatum() on a non-object in
de functie bestaat ook zeker in de klasse
$gcw = new GebCatWaarde();
Dit zijn instanties van Classes. Dat doe je maar 1 keer en niet in een while loop.
Vervolgens op de regel er onder overschrijf je de instant van je class weer.
Zou zeggen terug naar de tekentafel
En kan aan mij liggen maar ik zie in dat hele stukje geen aanroep van de functie getDatum()?
--------------
Code (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
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
<?php
if(!empty($_POST['WaCat'])){
$i = 0;
// ophalen van de radiobutton waardes
// aan de hand van het aantal categorieën er aanwezig zijn
$arrCat = $_SESSION['arrCat']; // array met categorieën !! FOUT
$arrGcw = array(); // array voor GebCatWaarde in op te slaan
while($i <= count($arrCat)){
$x = $i+1;
// het opslaan van de gekozen waarde bij de juiste categorie
$cat = new Categorie();
$cat = $arrCat[$i]; // categorie uit array halen !! LUKT NIET
$waCat = $_POST['group'.$x]; // waarde group uit POST halen
);
$gcw->setCategorieID($cat->getID());
$gcw->setWaardeCat($waCat);
array_push($arrGcw,$gcw);
$i++;
}
$_SESSION['arrGcw']; // array oplsaan in sessie var
}
?>
if(!empty($_POST['WaCat'])){
$i = 0;
// ophalen van de radiobutton waardes
// aan de hand van het aantal categorieën er aanwezig zijn
$arrCat = $_SESSION['arrCat']; // array met categorieën !! FOUT
$arrGcw = array(); // array voor GebCatWaarde in op te slaan
while($i <= count($arrCat)){
$x = $i+1;
// het opslaan van de gekozen waarde bij de juiste categorie
$cat = new Categorie();
$cat = $arrCat[$i]; // categorie uit array halen !! LUKT NIET
$waCat = $_POST['group'.$x]; // waarde group uit POST halen
);
$gcw->setCategorieID($cat->getID());
$gcw->setWaardeCat($waCat);
array_push($arrGcw,$gcw);
$i++;
}
$_SESSION['arrGcw']; // array oplsaan in sessie var
}
?>
Hier hoort ongetwijfelt 1 of ander brak kut formulier bij.
Probeer eens iets wat lijkt op :
Code (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
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
<form method="POST">
<table>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="submit" /></td>
</tr>
</table>
</form>
<?php
$cat = new Categorie();
$gcw = new GebCatWaarde();
$arrGcw = array() ;
foreach($_POST["group"] as $selected)
{
$gcw->setCategorieID($cat->getID());
$gcw->setWaardeCat($selected);
array_push($arrGcw,$gcw);
}
$_SESSION['arrGcw'] = $arrGcw;
?>
<table>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="checkbox" name="group[]" /></td>
</tr>
<tr>
<td><input type="submit" /></td>
</tr>
</table>
</form>
<?php
$cat = new Categorie();
$gcw = new GebCatWaarde();
$arrGcw = array() ;
foreach($_POST["group"] as $selected)
{
$gcw->setCategorieID($cat->getID());
$gcw->setWaardeCat($selected);
array_push($arrGcw,$gcw);
}
$_SESSION['arrGcw'] = $arrGcw;
?>
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
ik heb jou oplossingen gevolgd, de instanties buiten loop aangemaakt, maar nog steeds krijg ik dezelfde error.
inderdaad niet die error van getDatum() maar de error van getID(). :)
ik dacht trouwens dat het normaal niets verkeerd is een nieuw instantie aan te maken in een loop. zo maakt hij gewoon telkens een nieuw object aan.
kan het trouwens zijn dat mijn probleem ligt aan het feit dat ik mijn klasses inculde voor de session_start()?
ik moest dit doen omdat ik ook niet met die arrays kon werken.
Quote:
I can only show u the door, u are the one that has to walk trough it
het is trouwes niet het probleem van de het formulier, dat lukt me. ik kan ook uitlezen wat er in het formulier staat.
het is gewoon dat ik al data van een vorige pagina wil linken met de pagina van dit formulier. en die vorige data in een array steekt. het is dus dat die array niet meer herkend word ofzo na de eerst loop. want als ik één vaste regel uit de array haal, zonder hem te overlopen, dan lukt me dat wel.
het heeft dus echt iets te maken met het feit dat hij de tweede keer vergeten wat er in de array steekt.
Heb je verder doormiddel van print_r($_SESSION); bevestigd dat de data daar echt in staat?
Verder denk ik dat je even de hele situatie moet uitleggen omdat er van effectievere en nettere manieren zijn om dit probleem op te lossen.
ik heb inderdaad ook al gezien dat er data inzit. dit dus als ik bijvoorbeeld één vast cijfer in de array zet, zoiets dus print($arrCat[1]);.
probleem even geheel schetsen.
ik werk met PEAR, geen idee of dat dat iets er toe doet.
verder werk ik ook met een frontcontroller (die alle paginas dus regelt).
en nu is dus het probleem dat ik in vorige paginas eigen objecten heb opgeslagen in een array en die nu dus wil uitlezen.
heb ook al het probleem gehad dat ik mijn includes("klassen/..."); voor mijn start_session() moest zetten anders gaf hij een fout.
de oplossing hiervoor vond ik hier <a href="http://www.php.net/manual/nl/function.main.php">php site</a>.
de fout die ik toen had was degene die maurice onderaan op de pagina oplost.
ik weet niet wat je nog verder wil weten?
mijn klasses werken goed.
veder heb ik niet echt iets anders wat er mis loopt ofzo.
moet ik trouwens iets in mijn klasse van serializatie doen? of moet dit normaal zo werken?
php is wel niet zo heel vriendelijk en concreet in het verstrekken van error informatie, moet die nog een beetje gewoon worden.
toch bedankt iedereen dit heeft of heeft willen helpen