$_session wijzigen werkt niet met jquery??

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jovank vank

jovank vank

19/11/2014 22:09:32
Quote Anchor link
Ik heb iets vreemds aan de hand. Misschien weet iemand wat ik fout doe, of dat het misschien iets met jquery te maken heeft.

Ik maak een session array aan (voor het onthouden van de namen van afbeeldingen) en vul hem met 'geen':

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
    $_SESSION['afb']=array();
          for( $i=0 ; $i < 5; $i++ )
        {
     $_SESSION['afb'][$i]='geen';
     echo "afbeelding=".$_SESSION['afb'][$i];
      }


Ik heb een formulier. Daarin geef je info op en selecteer je afbeeldingen. Dat doe ik met jquery. Ik upload mbv een jquery script een geselecteerde afbeelding, bewerk die afbeelding, plaats de naam van de afbeelding in de sessionarray en download de afbeelding weer door hem op het formulier te echoën.

Als ik ook de $_session['afb'][0] echo, dan zie ik op het formulier ook de naam van de afbeelding. Met andere woorden, in de session array staat wel degelijk de naam. de code is als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if(move_uploaded_file($tmp, $path.$actual_image_name))
{
  $_SESSION['afb'][$afbnr]= $actual_image_name;
    echo $_SESSION['afb'][$afbnr];
    echo "<img src='".$path.$actual_image_name."' class='preview' height='".$height."' width='".$width."'>";
}


Maar als ik vervolgens het formulier verzend (er staat ook andere info op) en de info wil opslaan in de database dan staat er in $_session['afb'][0] gewoon weer 'geen'...........
RaRa....
Kan iemand mij helpen?
 
PHP hulp

PHP hulp

19/01/2019 23:03:46
 
- SanThe -

- SanThe -

19/11/2014 22:26:46
Quote Anchor link
$_SESSION['afb'][$i]='geen';
echo "afbeelding=".$_SESSION['afb'][$i];

Dus er zit 'geen' in.
Lijkt mij logisch.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/11/2014 22:29:25
Quote Anchor link
Als ik het zo lees dan wordt het bovenste stukje code ook aangeroepen als je het formulier verstuurd.

wellicht kun je het omzeilden door het stukje code tussen deze if statement te plaatsen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{

    // reset sessie variabelen
}
?>


Anders lijkt het me handig om toch iets meer code te plaatsen, met name hoe het formulier afgehandeld wordt.
 
Jovank vank

jovank vank

20/11/2014 09:54:06
Quote Anchor link
OK, Frank, even wat code.
Je ziet dat als de pagina aangeroepen wordt met de parameter 'init', de array dus op 'geen'wordt gezet. Dan is er sprake van een form in een form. Het geneste form upload en download een gekozen afbeelding. Een en ander met jquery scripting. Dat is alles. Het tweede form stuurt info (hier alleen een emailadres) naar dezelfde pagina, maar nu met de parameter 'advtxt'. Die parameter zorgt ervoor dat er een module wordt aangeroepen dat de info naar de database moet schrijven.

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
<?php
 include "../incl/config.php";
 $mode = $_GET['wijz'];
 $number = $_GET['cal'];

 switch ($mode){
  case
"init";
    $_SESSION['afb']=array();
    for( $i=0 ; $i < 5; $i++ )
    {

     $_SESSION['afb'][$i]='geen';
     echo "afbeelding=".$_SESSION['afb'][$i];
    }

  break;

  case
"advtxt";
    include "../db/writeadvtxt.php";
  break;
    
}


?>


<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript" src="../js/jquery.form.js"></script>

<script type="text/javascript">
 $(document).ready(function()
 {
    $('#photoimg').live('change', function()            
    {
     $("#preview").html('');
         $("#preview").html('<img src="../pics/loading.gif" alt="Uploading...." height="35" width="35"/>');
     $("#imageform").ajaxForm({target: '#preview'}).submit();
    });
 });
</script>
                  
<form action="../prg/account.php?cal=00&wijz=advtxt" method="post" id="advopform" onSubmit="return checkadvopform(this)" >

    E-mail:
    </br><input class='normaalstijl' type='text' name='contactmail' value='<?php echo $emadres;?>'     style='width:350px'>

        Afbeelding:
        <form id="imageform" method="post" enctype="multipart/form-data" action="../proc/ajaximage.php?afbnr=0">
        <label class="inputlabel"><input type="file" name="photoimg" id="photoimg" />Bestand kiezen</label>
        </form>
        <div id='preview'> <img src="../pics/toestel.png" height="70" width="95"> </div>

    <input id="knop1" type="button" value="Verzenden">
    <input id='knop2' type="button" name='annuleerknop' onclick="window.location='account.php?cal=10&wijz=init'"
                    value='Annuleren' ></div>
</form>


OK, dan gaat het erom wat er in ajaximage.php gebeurt. Hij wordt aangeroepen met de parameter 0. Hieronder staat enige code. je ziet dat de afbeelding een nieuwe naam krijgt, naar een thumbnail wordt geconverteerd, en opgeslagen wordt in een map. Dan zet ik de naam in de array! En vervolgens echo ik de afbeelding naar het form. Thats it.

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
<?php
$path
= "../uploads/";
$afbnr = $_GET['afbnr'];

    $valid_formats = array('jpeg', 'JPEG', 'jpg', 'JPG', 'gif', 'GIF', 'png', 'PNG');
    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
     {

      $name = $_FILES['photoimg']['name'];
      $size = $_FILES['photoimg']['size'];
            
      if(strlen($name))
      {

        $bestandinfo = pathinfo($_FILES['photoimg']['name']);
        if(in_array($bestandinfo['extension'], $valid_formats))
        {

         $actual_image_name = time().".".$bestandinfo['extension'];
         include "../proc/maakthumbnail.php";
         $tmp = $_FILES['photoimg']['tmp_name'];
         if(move_uploaded_file($tmp, $path.$actual_image_name))
         {

           $_SESSION['afb'][$afbnr]= $actual_image_name;
          echo "<img src='".$path.$actual_image_name."' class='preview' height='".$height."' width='".$width."'>";
         }

         else
         {
        echo "Technische fout.</br>";
          }    
        }
    
        else
        {
         echo "Ongeldig bestandsformaat.</br>";
         echo "Geldig zijn jpg, png of gif.";
        }
       }
             
       else
       {
        echo "Geen afbeelding geselecteerd";
          }

     exit;
    }


?>


OK, als dat gebeurt is staat de afbeelding keurig op het scherm. in de $session array op positie [0] overigens ook de naam van de afbeelding. want als ik die ook echo vanuit de ajaximage.php staat de naam naast de afbeelding.
Nu druk ik op verzenden van het eerste form. daarmee wordt de pagina aangeroepen,maar met de parameter 'advtxt'. Die stuurt de info naar een module die gaat schrijven in de database. Als ik in die module de $_session array uitlees staat er op de positie [0] weer 'geen'. hieronder de code van die module

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
  $lidnr
= $_SESSION['lidnr'];
  $conmail = $_POST['contactmail'];

    for( $i=0 ; $i < 5; $i++ )
  {

  echo "afbeelding".$i."=".$_SESSION['afb'][$i];
  }
    
?>


Hoop dat je hier wat mee kunt.
Jos


Toevoeging op 20/11/2014 22:28:06:

Ik heb het al gevonden.
Ik was vergeten ajaximage.php te beginnen met met het laden van m'n config. Er was dus geen session start. En dus geen link naar mijn session variabelen!!
thx anyway
 



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.