fatal error met session array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen

Jeroen

13/12/2006 18:55:00
Quote Anchor link
ik krijg met mijn script een fatal error wanneer ik een selected value (zie hier onder voor select script) probeer in een array te zetten

SCRIPTS:
select
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
<select size="1" height="1" name="size" style=" background-color:#ff0000;">
    <
option value="-">Standard(for non cloth items)</option>
    <
option value="S">S</option>
    <
option value="M">M</option>
    <
option value="L">L</option>
    <
option value="XL">XL</option>
    <
option value="XXL">XXL</option>
<
/select>
?>



make session array
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$_SESSION
['size'][] = $_POST['size']; // line 6
?>


deze error krijg ik

Fatal error: [] operator not supported for strings in C:\www\fred\Show.php on line 6
Gewijzigd op 01/01/1970 01:00:00 door Jeroen
 
PHP hulp

PHP hulp

21/11/2024 23:13:12
 
Terence Hersbach

Terence Hersbach

13/12/2006 19:00:00
Quote Anchor link
je moet de [] weglaten:
$_SESSION['size'] = $_POST['size'];


$_SESSION is zelf al een array..
 
Jeroen

Jeroen

13/12/2006 19:07:00
Quote Anchor link
jah ok maar wil zeg maar de producte van me webshop in maat aantal en product id in een array opslaaen en dit naar een session sturen
 
Joren de Wit

Joren de Wit

13/12/2006 19:10:00
Quote Anchor link
Dat kan prima. Die [] kun je ook gewoon gebruiken. De $_SESSION array wordt op dat moment gewoon een multidimensionale array, en daar is niets mis mee.

Ik snap ook niet wat er fout gaat, als ik onderstaand scriptje draai, heb ik helemaal geen problemen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $_SESSION['size'][] = $_POST['size'];
    echo '<pre>'.print_r($_SESSION, true).'</pre>';
}

?>


<form action="#" method="post">
<select size="1" height="1" name="size" style=" background-color:#ff0000;">
    <option value="-">Standard(for non cloth items)</option>
    <option value="S">S</option>
    <option value="M">M</option>
    <option value="L">L</option>
    <option value="XL">XL</option>
    <option value="XXL">XXL</option>
</select>
<input type="submit">
</form>
 
Terence Hersbach

Terence Hersbach

13/12/2006 19:11:00
Quote Anchor link
je zult dan $_SESSION[{productnummer}]['size'] kunnen maken..
dat productnummer moet je uiteraard wel vervangen
 
Martijn B

Martijn B

13/12/2006 19:13:00
Quote Anchor link
Eerst:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$_SESSION
['size'] = array();
?>


Daarna:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
$_SESSION
['size'][] = 'waarde0oppositie0';
$_SESSION['size'][] = 'waarde1oppositie1';
?>
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Joren de Wit

Joren de Wit

13/12/2006 21:25:00
Quote Anchor link
@Martijn: dat is niet eens nodig. Hoewel het netter is om eerst een bepaalde variabele als een array te declareren, levert het geen fouten op als je direct de [] operator gebruikt.

@Terence: dat is niet echt slim omdat je dan in de problemen komt met je verdere verwerking. Het productnummer is immers iedere keer anders. Maar uit dit formulier rolt elke keer maar 1 combinatie die ik bijvoorbeeld in een sessievariabele met de naam 'product' zou opslaan. Deze variabele is natuurlijk een array:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
// Input uit formulier...
$_SESSION['product']['id'] = $_POST['id'];
$_SESSION['product']['size'] = $_POST['size'];
?>


Of als je de $_POST array met een foreach uit wilt lezen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST as $key => $value)
{

    $_SESSION['product'][$key] = $value;
}

?>
 
Jan Koehoorn

Jan Koehoorn

13/12/2006 21:40:00
Quote Anchor link
@ Blanche: voor je tweede voorbeeld heb je geen foreach nodig. Je kunt eenvoudig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $_SESSION
['product'] = $_POST;
?>

doen.
 
Joren de Wit

Joren de Wit

13/12/2006 21:44:00
Quote Anchor link
Klopt ja, in dit geval is dat zeker een veel beter alternatief. :-)

Maar de foreach komt al snel weer om de hoek kijken als je een selectie wilt maken tussen gegevens die je wel en niet in een sessie wilt plaatsen...
 
Jan Koehoorn

Jan Koehoorn

13/12/2006 21:51:00
Quote Anchor link
@ Blanche: uiteraard!

Over deze notatie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?pphp
    $_SESSION['size'][] = $_POST['size'];
?>


Ik krijg er geen error op, maar onthoud wel dat je op deze keer iedere keer een nieuw array-element aanmaakt. Als je dus de pagina ververst, ook.
Ik heb deze testcode:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    error_reporting (E_ALL);
    session_start ();
    $_SESSION['size'][] = 'test';
    
    echo '<pre>';
    print_r ($_SESSION);
    echo '</pre>';
?>

Na een paar keer F5 heb je dan deze output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [size] => Array
        (
            [0] => test
            [1] => test
            [2] => test
            [3] => test
            [4] => test
            [5] => test
            [6] => test
            [7] => test
        )

)
 
Jeroen

Jeroen

14/12/2006 18:31:00
Quote Anchor link
ok maar hij doet dit alleen maar als je op add to card klikt
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.