waarom werkt unset nooit bij mij :(

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mic

mic

15/02/2006 00:19:00
Quote Anchor link
hallo,

ben al een tijdje aan het zoeken naar een manier om de unset() functie nu eens deftig aan het werk te krijgen... maar dit is nog nooit echt gelukt! Heb hier steeds rondom kunnen werken maar nu zit ik met een probleem waar ik het toch eens zal moeten kunnen want anders zit ik vast! Dus als er me iemand kan helpen maak je me heel gelukkig ;)

dit is wat ik ongeveer wil doen :

ben een programma aan het schrijven dat alle subfolders weergeeft in een bepaalde folder.

Het eerste deel van het programma bestaat eruit om gewoon de verschillende folders uit te vissen en deze elk in hun eigen textveldje weer te geven. Tot zover werkt alles ok. Maar naast die folders heb ik dan ook een checkbox gezet zodanig dat als je enkele folders aanklikt om gedeleted te worden en dan op de submit 'delete' drukt, dat deze automatisch gedelted worden.

dus ik heb een form gemaakt die post naar zichzelf,
en dan boven de form staat mijn php code waar op een bepaald moment staat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if(isset($_POST['delete'])) { deltecode... } ?>

na de deletecode uitgevoerd te hebben staat er dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? unset($_POST['delete']) ?>


de eerste keer lukt dit, maar er staan ook nog een paar andere functies in dat programma zoals 'maak een nieuwe directory aan' . Als je nu bv eerst een directory gedeleted hebt en dan een nieuwe probeert aan te maken, dan lukt het aanmaken wel maar ondertussen denkt hij ook nog altijd dat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if(isset($_POST['delete'])) { deltecode... } ?>
deze voorwaarde waar is.
blijkbaar heeft de unset niet gewerkt en dan wordt er spijtig genoeg de volgende directory in mijn directoryarray verwijderd...

Heeft er iemand een idee hoe dit wél moet?
THANKS!!
Gewijzigd op 15/02/2006 00:26:00 door Mic
 
PHP hulp

PHP hulp

16/11/2024 13:54:35
 
Jan Koehoorn

Jan Koehoorn

15/02/2006 00:32:00
Quote Anchor link
Je kijkt alleen of de waarde $_POST['delete'] gezet is en verder niet. Een beter manier is om én te kijken of de waarde gezet is en vervolgens die waarde uit te lezen en aan de hand daarvan je actie te bepalen.

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
<?php
if (isset ($_POST['delete']) {
    switch ($_POST['delete']) {
        case
'waarde1':
            //doe iets
            break;
        case
'waarde2':
            //doe iets anders
            break;
        case
'waarde3':
            //doe nog iets anders
            break;
    }
}

?>
 
Mic

mic

15/02/2006 00:38:00
Quote Anchor link
ok maar ik denk niet dat dit mogelijk is met mijn programma.
ik heb in mijn form enkel
<input type="submit", name="delete", value="delete" />
staan, dus uiteindelijk is dit altijd dezelfde waarde.
Maar dus de functie unset(...) werkt dus gewoon niet in dit geval?
 
Mic

mic

15/02/2006 00:43:00
Quote Anchor link
ik zal eens mijn code posten dan is het misschien duidelijker waar het probleem zit. Maar let er niet op, dit is nog maar een begin en er staan zeker nog 10 andere fouten in...

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
58
59
60
61
<?php

  $root
='/rootfolder ergens op de server';
  $large="/large";
  $small="/small";
  $dh = opendir("$root");
  $folderString = "<table>";
  
  while (($content = readdir($dh)) !== false)
  {

    if ((is_dir($root.$content)) && ($content!=="." && $content!=="..")) $folderArray[]=$content;    
  }
  @
closedir($dh);

  if(isset($_POST['newfolder']))
  {

    unset($_POST['delete']);
    if ($_POST['newfolder']!="" || $_POST['newfolder']!="null" )
    {

    $new = $root.$_POST['newfolder'];
    if (mkdir("$new")) echo "folder $new succesfully created <br \> ";
    else echo "folder $new NOT created <br \>";
    
    $smallFolder =$new.$small;
    if (mkdir("$smallFolder")) echo "folder $smallFolder succesfully created <br \>";
    else echo "folder $smallFolder NOT created <br \>";
    
    $largeFolder =$new.$large;
    if (mkdir("$largeFolder")) echo "folder $largeFolder succesfully created <br \>";
    else echo "folder $largeFolder NOT created <br \>";
    unset ($_POST['newfolder']);
    }
  }

  
  if(isset($_POST['delete']))
  {

    $selected = $_POST['del'];
    foreach($selected as $toDel )
    {

     echo "you selected $folderArray[$toDel] for deletion";
    
      $remove = $root.$folderArray[$toDel].$small;    
      rmdir("$remove");
      $remove = $root.$folderArray[$toDel].$large;    
      rmdir("$remove");
      $remove = $root.$folderArray[$toDel];    
      rmdir("$remove");
      
    }

    echo "Folder $folderArray[$toDel] deleted";
    unset($_POST['delete']);
  }

  
  for ($i=0; $i<sizeof($folderArray); $i++)
  {

    $currentFolder = $folderArray[$i];
    $folderString.="<tr><td><input type=\"text\", name=\"$i\", size=\"50\", maxlength=\"100\", value=\"$currentFolder\" /></td> ";
    $folderString.="<td><input type=\"checkbox\", name=\"del[]\", value=\"$i\" /> </td></tr>";
  }

  
?>


<form action="folders.php" method="POST">
<h3>Add new folder :</h3><br>
<input type="text", name="newfolder", size="50", maxlength="100">
<input type="submit", name="create", value="create folder" /><br>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo "$folderString"; ?>

<input type="submit", name="delete", value="delete" />
Gewijzigd op 15/02/2006 00:45:00 door mic
 
Jan Koehoorn

Jan Koehoorn

15/02/2006 00:54:00
Quote Anchor link
mic:
ok maar ik denk niet dat dit mogelijk is met mijn programma.
ik heb in mijn form enkel
<input type="submit", name="delete", value="delete" />
staan, dus uiteindelijk is dit altijd dezelfde waarde.
Maar dus de functie unset(...) werkt dus gewoon niet in dit geval?


Dat is geen goede methode. Bij een 'delete' wil je precies weten wat je gaat deleten. Als je submit button als name 'delete' heeft, dan krijg je na verzenden niet genoeg info. Het enige dat je weet, is dat het formulier verstuurd is.

Het is beter om bijvoorbeeld checkboxen te hebben naast elk record. Als je die een value geeft die overeenkomt met het id van die record in je database, dan weet je al veel meer als het formulier verstuurd wordt.
 
Mic

mic

15/02/2006 01:06:00
Quote Anchor link
maar je kan toch maar één naam geven aan één submit button?

Ik voorzie dus naast elke folder een checkbox met als value de plaats van de folder in de folderArray.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<? for ($i=0; $i<sizeof($folderArray); $i++)
  {

    $currentFolder = $folderArray[$i];
    $folderString.="<tr><td><input type=\"text\", name=\"$i\", size=\"50\", maxlength=\"100\", value=\"$currentFolder\" /></td> ";
    $folderString.="<td><input type=\"checkbox\", name=\"del[]\", value=\"$i\" /> </td></tr>";
  }

  
?>


en als je dan op submit drukt, dan kijk ik welke checkboxen aangeklikt zijn naargelang de value's.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<? if(isset($_POST['delete']))
  {

    $selected = $_POST['del'];
    foreach($selected as $toDel )
    {

     echo "you selected $folderArray[$toDel] for deletion";
?>


Dat is toch de manier die jij bedoelt?
Gewijzigd op 15/02/2006 01:09:00 door mic
 
Mic

mic

15/02/2006 02:18:00
Quote Anchor link
Het probleem is volgens mij dat de gedelete folder niet automtatisch verwijderd wordt in het overzicht.
Weet er iemand hoe je een refresh genereerd?
 



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.