[php] Form variable niet beschikbaar

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 14-08 07:47

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Ik heb hier al eerder een topic over gepost: [rml][ php] variabele uit form werkt niet[/rml] Ik heb de daarin aangedragen oplossingen dubbel gechecked en dat is het niet. Ik heb mijn script iets aangepast. Maar ik krijg nog steeds de error:
code:
1
Notice: Undefined index: action in E:\wwwroot\dev\cda.php on line 9

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
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php  
// Set execution time-marker 
  $mtime = microtime();  
  $mtime = explode(" ",$mtime);  
  $mtime = $mtime[1] + $mtime[0];  
  $starttime = $mtime;  
  $gdatum = date("D M j G:i:s T Y"); 

$action = $_POST['action']; //meerder oplossingen die niet werken 

$top = <<<EOD 
  <html> 
  <head> 
  <title>Protex Music Online DB Server @ clipper</title> 
  </head> 
  <body> 
  <p align="center"><b><font size="6">CD Archief</font></b></p> 
  <br> 
  <br> 
  <br> 
  <hr> 
EOD; 
echo $top; 
//------------------------------------------------------------------------------------------------------------------ 
$form = <<<EOD 
  <form method="POST" action="cda.php?action=search"> 
    <table border="1" width="100%" bordercolor="#FFFFFF" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF"> 
      <tr> 
        <td width="16%">Titel:</td> 
        <td width="84%"><input type="text" name="titel" size="50"></td> 
      </tr> 
      <tr> 
        <td width="16%">Artiest:</td> 
        <td width="84%"><input type="text" name="artiest" size="50"></td> 
      </tr> 
      <tr> 
        <td width="16%">CD Nummer:</td> 
        <td width="84%"><input type="text" name="cdnummer" size="2" value="0"></td> 
      </tr> 
      <tr> 
        <td width="16%">Catorgerie:</td> 
        <td width="84%"><select size="1" name="catorgerie"> 
            <option selected value="Top 40">Top 40</option> 
            <option value="70-80-90">70-80-90</option> 
            <option value="All">All</option> 
          </select></td> 
      </tr> 
    </table> 
    <p><input type="submit" value="Start Search" name="B1"><input type="reset" value="Reset" name="B2"><input type="hidden" name="action" value="search"></p> 
  </form> 
EOD; 
if ($action2 == "search") 
    { 
    echo $form; 
    } 
else 
    { 
    echo ("Hier moet de data komen te staan van de zoekactie"); 
    } 


//------------------------------------------------------------------------------------------------------------------ 
$bottom = <<<EOD 
  <hr> 
  <br> 
  Generated, $gdatum GMT by <a href="http://www.clipper.nl/">clipper</a> (Done in 
  </body> 
  </html> 
EOD; 
echo $bottom; 


// Calculate execution time 
  $mtime = microtime();  
  $mtime = explode(" ",$mtime);  
  $mtime = $mtime[1] + $mtime[0];  
  $endtime = $mtime;  
  $totaltime = ($endtime - $starttime); 
  $totaltime = round($totaltime, 2); 
  if ($totaltime==0) 
    { 
       echo "0.00 seconds)";     
      } 
  else 
      { 
      echo $totaltime." seconds)";  
    } 
?> 


Het ligt dus ergens anders aan, alleen weet ik niet wat. super_globals = On. Dus ook dat is niet het probleem meer. Alhoewel dit ook zou moeten werken met super_globals = Off. Mocht iemand een idee hebben dan zou ik het graag horen.

Ik gebruik PHP 4.3.2 op IIS5.0 via de ISAPI mogelijkheid.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

doe eens gek en vraag alleen je $_POST uit als er daadwerkelijk een post heeft plaatsgevonden:

PHP:
1
2
3
4
5
6
7
8
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

  $action = ''; // initialise
  if (isset($_POST['action'])) $action = $_POST['action'];

  // doe iets adhv $action

}


en haal die action=search hier maar uit, je hebt 'm al in een hidden input zitten, en GET en POST door elkaar gebruiken is nogal verwarrend:

HTML:
1
<form method="POST" action="cda.php?action=search">

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Sorry, maar ik ga je niet rechtstreeks helpen, maar ik zal wel een duw in de goede richting geven.
<form method="POST" action="cda.php?action=search">
hints:
- Wat is action voor een variable?
- Wat valt er op als deze pagina naar een phpinfo post?

vraag:
- Wat heb je allemaal zelf geprobeerd? ( letterlijke code )

[ Voor 9% gewijzigd door LuCarD op 09-10-2003 16:39 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • cdgrit
  • Registratie: Mei 2002
  • Laatst online: 13-01 16:44
Probeer het eens met $_GET['action']; uit te lezen aangezien de variabele in de query string wordt meegezonden. Als dit niet werkt zet dan de action variabele in een hidden text veld.


Originele startpagina - Stadindex.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Kijk naar je foutmelding, Bekijk dan regel 9 en 26 zeer goed en vergelijk ze met elkaar.Doe op papier letterlijk schrijven wat er staat(wat er gebeurt,je snap wat ik bedoel)....Kijk en vergelijk misschien dat je iets tegen kom.En die foutmelding moet je ook eens onderzoeken.Het hoef niet aan de code te liggen.Maar het kan wel aan de verwijzing liggen die je geef. Check die drie punten eens....php los je alleen maar op door ,kijk,vergelijk,probeer....doorgaan,doorgaan..Succes

Acties:
  • 0 Henk 'm!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 14-08 07:47

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
Oeps, mijn excuses. Dat cda.php?action=search hoort er niet in te staan. Dat is even een uitprobeersel geweest. Bij script op server staat dat er ook niet meer in.

Heb even gek gedaan op verzoek van crisp. Dat werkte wel. Betekend dat, dat ik voortaan eerst moet controleren of een form variable isset?

Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

cyspoz schreef op 09 October 2003 @ 17:04:
Heb even gek gedaan op verzoek van crisp. Dat werkte wel. Betekend dat, dat ik voortaan eerst moet controleren of een form variable isset?
Als je de cda.php pagina de eerste keer laad heeft ie natuurlijk de $_POST variabele niet gezet, dus dan bestaat ie ook niet. Zowiezo is het handig om altijd je post en get variabelen te testen op of ze wel of niet gezet zijn. :*)

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

cyspoz schreef op 09 oktober 2003 @ 17:04:
Oeps, mijn excuses. Dat cda.php?action=search hoort er niet in te staan. Dat is even een uitprobeersel geweest. Bij script op server staat dat er ook niet meer in.

Heb even gek gedaan op verzoek van crisp. Dat werkte wel. Betekend dat, dat ik voortaan eerst moet controleren of een form variable isset?
ja, de 1e keer dat je de pagina inlaadt is er nog helemaal geen form gepost; $_POST['action'] bestaat dus niet, en daarom krijg je die notice.
Zoals ik het in mijn voorbeeld doe is misschien een beetje dubbelop (eerst kijken of er een POST is geweest, dan kijken of $_POST['action'] wel bestaat), maar ik noem dat defensief programmeren (never trust the input from a user) ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • cyspoz
  • Registratie: September 2001
  • Laatst online: 14-08 07:47

cyspoz

Relaxed, het zijn maar 1 en 0

Topicstarter
crisp schreef op 09 October 2003 @ 16:37:
doe eens gek en vraag alleen je $_POST uit als er daadwerkelijk een post heeft plaatsgevonden:

PHP:
1
2
3
4
5
6
7
8
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

  $action = ''; // initialise
  if (isset($_POST['action'])) $action = $_POST['action'];

  // doe iets adhv $action

}


en haal die action=search hier maar uit, je hebt 'm al in een hidden input zitten, en GET en POST door elkaar gebruiken is nogal verwarrend:

HTML:
1
<form method="POST" action="cda.php?action=search">
Jah hij klopte alleen niet helemaal. Ik heb de
PHP:
1
$action=''

boven de eerste if gezet. Anders krijg je namelijk alsnog die melding dat action niet bestaat omdat deze niet wordt aangemaakt als je post. Met de volgende code werkt het dus wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$action = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
    if (isset($_POST['action']))
        {
        $action = $_POST['action']; 
        }
    }
        
if ($action=="search")
    {


enz....


ThanX In iedergaval.

Acties:
  • 0 Henk 'm!

Verwijderd

of even een ...

PHP:
1
$action = false;


..van maken.
Pagina: 1