stukje code fout???

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Christiaan de kleine

christiaan de kleine

10/04/2012 17:42:43
Quote Anchor link
hallo, hieronder een klein gedeelte van een groot zelf geschreven script, echter werkt mijn array niet meer.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
if(isset($_POST['submit2'])) {
                    if ( isset( $_POST['activiteit'] ) && trim( $_POST['activiteit'] ) != "" ){
                    //check of de sessie variabele al bestaat, zo nee dan aanmaken
                        if ( isset( $_SESSION['activiteiten'] ) ){
                            $_SESSION['activiteiten'][] = $_POST['activiteit'];
                        } else {
                            $_SESSION['activiteiten'] = array();
                            $activity = $_POST['activiteit'];
                                array_push($_SESSION['activiteiten'], $activity);
                        }
                    }
                }

met bovenstaand voegt hij als het goed is de activiteit in de session['activiteiten'] wat een array is.

met onderstaande code zet hij het op het scherm (let op de echo is hier $wgOut->addHTML (vanwege mediawiki))

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$wgOut->addHTML('    <table>');
                        for($i = 0; $i <= 25; $i++) {
                            $wgOut->addHTML('    <tr>
                                        <td>' . $_SESSION['activiteiten'][$i] . '</td>
                                    </tr>');
                        }
                $wgOut->addHTML('    </table>');


iedere keer als ik nu op de submit knop druk (vanuit het formulier) voegt hij alleen de laatst ingevulde waarde in de array toe...
Gewijzigd op 10/04/2012 17:43:43 door Christiaan de kleine
 
PHP hulp

PHP hulp

26/12/2024 17:27:44
 
Erwin H

Erwin H

10/04/2012 17:47:29
Quote Anchor link
Christiaan de kleine op 10/04/2012 17:42:43:
iedere keer als ik nu op de submit knop druk (vanuit het formulier) voegt hij alleen de laatst ingevulde waarde in de array toe...

Wat bedoel je daar precies mee? $_POST['activiteit'] is zo te zien een string, dus dat er bij elke keer dat je op de knop drukt maar 1 waarde wordt ingevuld klopt volgens mij. Of is dat niet wat je bedoelt?
 
Christiaan de kleine

christiaan de kleine

10/04/2012 17:57:58
Quote Anchor link
ik zal even de case hier posten:

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
            case "3":
            
                $wgOut->addHTML('    <center><strong>
                                        ||
                                        '. $date .' '. $_SESSION['date'] .' ||
                                        '. $start .' '. $_SESSION['start'] .' ||
                                        '. $pauze1 .' '. $_SESSION['pauze'] .' ||
                                        '. $eind .' '. $_SESSION['eind'] .' ||
                                        </center></strong><br><br>');
                                        
                //check of de gebruiker een nieuwe activiteit heeft ingevoerd
                $_SESSION['activiteiten'] = array();
                if(isset($_POST['submit2'])) {
                    if ( isset( $_POST['activiteit'] ) && trim( $_POST['activiteit'] ) != "" ){
                    //check of de sessie variabele al bestaat, zo nee dan aanmaken
                        if ( isset( $_SESSION['activiteiten'] ) ){
                            $_SESSION['activiteiten'][] = $_POST['activiteit'];
                        } else {
                            $_SESSION['activiteiten'] = array();
                            $activity = $_POST['activiteit'];
                                array_push($_SESSION['activiteiten'], $activity);
                        }
                    }
                }
                    
                if (count($_SESSION['activiteiten']) >= 14){
                    $wgOut->addHTML('    <form method="post" action="">
                                            <input type="submit" value="'.$generating.'" name="submit3" style="color:#006600"  />
                                        </form>');
                } else {
                    $wgOut->addHTML('    <table>
                                            <form method="post" name="addactiviteit">
                                                <tr>
                                                    <td>'. $activiteit .'</td>
                                                    <td width="25"></td>
                                                    <td><input type="text" name="activiteit" value="" /></td>
                                                </tr>
                                                <tr>
                                                    <td></td>
                                                    <td></td>
                                                    <td><input type="reset" name="reset2" value="'.$leegform.'" /></td>
                                                    <td><input type="submit" name="submit2" value="'.$addactiviteit.'"</td>
                                                    <td><input type="submit" value="'.$generating.'" name="submit3" style="color:#FF0000"     
                                                        disabled="disabled"  /></td>
                                                </tr>
                                            </form>
                                        </table><br><br>');
                }    // End for the if statement on counting the activities
                
                $wgOut->addHTML('    <table>');
                        for($i = 0; $i <= 25; $i++) {
                            $wgOut->addHTML('    <tr>
                                        <td>' . $_SESSION['activiteiten'][$i] . '</td>
                                    </tr>');
                        }
                $wgOut->addHTML('    </table>');
            break;
 
Erwin H

Erwin H

10/04/2012 18:00:11
Quote Anchor link
Maar dan weet ik nog steeds niet wat er dan precies fout gaat.
 
Christiaan de kleine

christiaan de kleine

10/04/2012 18:02:03
Quote Anchor link
hij verwijdert het huidige item in de array zodra ik een nieuwe wil toevoegen...
 
Erwin H

Erwin H

10/04/2012 18:05:11
Quote Anchor link
Dus alleen dit stukje is eigenlijk van belang:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if ( isset( $_SESSION['activiteiten'] ) ){
  $_SESSION['activiteiten'][] = $_POST['activiteit'];
}
else {
  $_SESSION['activiteiten'] = array();
  $activity = $_POST['activiteit'];
  array_push($_SESSION['activiteiten'], $activity);
}

?>

Afgezien van wat je hier nog aan kan verbeteren, doe eens dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
print_r( $_SESSION ); //extra
if ( isset( $_SESSION['activiteiten'] ) ){
  echo '<br>activiteiten bestond al'; //extra
  $_SESSION['activiteiten'][] = $_POST['activiteit'];
}
else {
  echo '<br>activiteiten bestond nog niet'; //extra
  $_SESSION['activiteiten'] = array();
  $activity = $_POST['activiteit'];
  array_push($_SESSION['activiteiten'], $activity);
}

?>

Kan je in elk geval even controleren wat er precies in Session stond en wat hij nu gaat doen.

Toevoeging op 10/04/2012 18:07:29:

Laat maar, ik zie het al...

regel 12:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
 //check of de gebruiker een nieuwe activiteit heeft ingevoerd
                $_SESSION['activiteiten'] = array();
?>

Hier initialiseer je $_SESSION['activiteiten]'. Dus elke keer als je hier komt wordt het opnieuw een lege array...
Gewijzigd op 10/04/2012 18:07:53 door Erwin H
 
Christiaan de kleine

christiaan de kleine

10/04/2012 18:11:42
Quote Anchor link
dus die alleen weghalen, maar waar moet ik dan $_SESSION['activiteiten'] = array() declareren...

Toevoeging op 10/04/2012 18:16:31:

en btw print_r kan niet in mediawiki...

Toevoeging op 10/04/2012 18:20:13:

waar ik hem ook neer zet om te initialiseren, hij blijft opnieuw die array aanmaken... knetter vervelend, want hoe kan ik dit nu wel oplossen???
 
Erwin H

Erwin H

10/04/2012 18:47:17
Quote Anchor link
En als je die hele regel nu eens even gewoon weglaat. Werkt het dan wel?
(na afloop zal ik je zeggen waarom ;-)
 
Christiaan de kleine

christiaan de kleine

10/04/2012 19:02:33
Quote Anchor link
ja nu werkt het wel, denk dat ik zelf ook weet waarom, vanwege dat hij in de if statement zelf de array aanmaakt als hij nog nit bestaat. of is dat niet zo erwin H?
 
Erwin H

Erwin H

10/04/2012 19:08:18
Quote Anchor link
Precies. Je doet het al op het moment dat het nodig is. Zelf zou ik het nog iets anders doen, maar dat is uiteraard gewoon een keuze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

if ( !isset( $_SESSION['activiteiten'] ) ){
  $_SESSION['activiteiten'] = array();
}

$_SESSION['activiteiten'][] = $_POST['activiteit'];

?>

Dit is minder regels en niets dubbel.
 
Christiaan de kleine

christiaan de kleine

10/04/2012 19:19:32
Quote Anchor link
ja oke, volgens mij moet mijn hele ode iets netter enzo, maar ben bli dat het eerste concept gewoon volledig werkt. Dank je wel!
 



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.