[PHP] isset($_GET['pagina']) ?

Pagina: 1
Acties:
  • 1.945 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hellow,

ik zit met een probleem, en kan maar niet vinden waar ik fout zit.

ik heb namelijk een pagina die aageroepen wordt met de variabele ' toevoegen '.
Nu gaat ie dus naar dat gedeelte van de pagina, en de bedoeling is dus dat je een form tezien krijgt, wat dus ook werkt. maar als je op de knop toevoegen klikt moeten de waarden in de database gestoken worden .. maar dit werkt niet ?

nu als ik de form alleen in een andere pagina steek zonder
PHP:
1
if(isset($_GET['pagina']) && $_GET['pagina'] == 'toevoegen' )

dan werkt het wel ..

dit is de code:
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
<?if(isset($_GET['pagina']) && $_GET['pagina'] == 'toevoegen' )
 { 
 ?> 
<table width="432" border="0">
      <tr>
        <th width="426" height="242" scope="row"><br>
          <fieldset>
          <legend class="news"><b>Manual Toevoegen :</b></legend>
          <table cellpadding="0" cellspacing="2" border="0" bordercolor="#000000">
            <form method="POST" action="<? echo $PHP_SELF; ?>">
              <tr>
                <td width="165" height="29"> Bedrijfsnaam:</td>
                <td width="199"><strong><? echo "<strong>$usersname</strong>" ?></strong></td>
              </tr>

              <tr>
                <td width="165" height="29"> Type manual: </td>
                <td>                  <select name="soort">
                  <option>PDF</option>
                  <option>DOC</option>
                  </select></td>
              </tr>
              <tr>
              <td width="165" height="35"> Locatie Bestand: </td>
                <td><input type="text" name="locatie"></td>
              </tr>
                <td width="165" height="35"> Bijkomende Informatie </td>
                  <td>                    <textarea name="informatie" cols="40
                  
                  " rows="5"></textarea></td>
              </tr>
              
              <tr>
                <td>&nbsp;</td>
                <td><input type="submit" name="Toevoegen" value="Toevoegen">
                </td>
              </tr>
            </form>
            <? if( isset($_POST['Toevoegen'])){
            $manual_fabrikant = $usersname;
            $manual_type = $_POST['soort'];
            $manual_informatie = $_POST['informatie'];
            $manual_link = $_POST['locatie'];
            
            mysql_query("insert into manuals (manual_fabrikant, manual_type, manual_informatie, manual_link) Values('".$manual_fabrikant."','".$manual_type."','".$manual_informatie."','".$manual_link."');") or die(mysql_error());   
            echo " manual werd toegevoegd aan onze database ";
    }
            
            ?>
          </table>
          </fieldset>
          <p></p></th>
      </tr>
    </table>
    <p><br>
        <br>
        <?
    }
?>

iemand die kan helpen?
alvast bedankt!

[ Voor 23% gewijzigd door Verwijderd op 07-02-2006 11:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

je begint je php code steeds met <? probeer eens te openen met: <?php . ik heb wel eens gehad dat iets het met short tags het niet deed, maar met de volgedige tag <?php wel de ?> kan je gewoon laten staan.

als dat niet werkt kan je ook nog de hele tabel echo-en ipv alleen de variabelen die er binnen vallen.

</form>
<? if( isset($_POST['Toevoegen'])){
$manual_fabrikant = $usersname;
$manual_type = $_POST['soort'];
$manual_informatie = $_POST['informatie'];
$manual_link = $_POST['locatie'];

mysql_query("insert into manuals (manual_fabrikant, manual_type, manual_informatie, manual_link) Values('".$manual_fabrikant."','".$manual_type."','".$manual_informatie."','".$manual_link."');") or die(mysql_error());
echo " manual werd toegevoegd aan onze database ";
}

?>
</table>
</fieldset>
<p></p></th>
</tr>
</table>
<p><br>
<br>
waarom sluit je je tabel pas na de formulier code? probeer dat eens: form code helemaal onder aan.

Acties:
  • 0 Henk 'm!

Verwijderd

1) $usersname -> wordt die gevuld?
2) Druk je query eens af... Je krijgt vast een error? Aan 'Dit werkt niet...'hebben we niet zoveel...

3)
PHP:
1
if(isset($_GET['pagina']) && $_GET['pagina'] == 'toevoegen' )

Dubbelop... Ik zie echter nergens die variabele 'pagina' gedefinieerd :?
waarom sluit je je tabel pas na de formulier code? probeer dat eens: form code helemaal onder aan.
Dit slaat echt nergens op en is ook totaal niet nodig... </form> staat goed zo.

[ Voor 75% gewijzigd door Verwijderd op 07-02-2006 11:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 07 februari 2006 @ 11:17:
1) $usersname -> wordt die gevuld?
2) Druk je query eens af... Je krijgt vast een error? Aan 'Dit werkt niet...'hebben we niet zoveel...
* jep $usersname wordt gevuld, dat is een variable die bovenaan de pagina wordt gevuld

* nee een error krijg ik niet .. ik wordt terug geforwarded naar naar manuals.php ( de hoofdpagina )

bedankt voor de reacties

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
<form method="POST" action="...

De actie die aan het formulier hangt is dus een HTTP POST en niet een HTTP GET.

Als je bij zowel GET als POST het formulier wil laten zien cq die hele rits code in wil duiken, kan je in de if conditie (hier regel 1) $_GET['blaaa'] vervangen door $_REQUEST['blaaa']. De $_REQUEST array is gevuld met zowel POST als GET parameters. Bij regels 39 t/m 47 moet je wel gewoon $_POST blijven gebruiken.

Verdere tips: Lees je in in de verschillen tussen GET en POST. Kijk verder ook naar functies als mysql_real_escape_string en termen als sql injection, want je moet user input altijd controleren en dat doe je nu nog niet.

Check de action url aub eens in de html output.

[ Voor 21% gewijzigd door Voutloos op 07-02-2006 11:28 ]

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 07 februari 2006 @ 11:17:
3)
PHP:
1
if(isset($_GET['pagina']) && $_GET['pagina'] == 'toevoegen' )

Dubbelop... Ik zie echter nergens die variabele 'pagina' gedefinieerd :?
variabele pagina wordt meegegeven in de URL

www.host.com/manuals.php?pagina=toevoegen

grtz

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 07 februari 2006 @ 11:21:
[...]


* nee een error krijg ik niet .. ik wordt terug geforwarded naar naar manuals.php ( de hoofdpagina )
Dan komt hij dus nooit bij de PHP-code in je TS? Dat betekent dat je form-action niet goed is... PHP_SELF lijkt me prima. Bekijk de source-code eens en dan dus de waarde van action.

Dit stukje code staat dus in een groter php bestand? Of in een apart php-bestand?
Tsja, handig als je dat ook even had vermeld, het staat tenslotten in je topictitel :X

Cursusje PHP i.c.m. forms is misschien een idee ;).

/edit: Weet je hoe het kan? Als je gepost hebt, bestaat de waarde van PAGINA niet meer in $_GET['pagina']... Geef die bijv. als hiddenvariabele in je form mee, dan werkt het wel. Nogmaals, in elke tutorial wordt dit wel vermeld. Succes!

[ Voor 35% gewijzigd door Verwijderd op 07-02-2006 11:28 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op dinsdag 07 februari 2006 @ 11:17:
3)
PHP:
1
if(isset($_GET['pagina']) && $_GET['pagina'] == 'toevoegen' )

Dubbelop... Ik zie echter nergens die variabele 'pagina' gedefinieerd :?
Het is in het algemeen juist een goede stijl om eerst te controleren of iets geset is voordat je er iets mee doet. Kan absoluut geen kwaad en is soms zelfs verplichte huisstijl.

{signature}


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Voutloos schreef op dinsdag 07 februari 2006 @ 11:26:
[...]

Het is in het algemeen juist een goede stijl om eerst te controleren of iets geset is voordat je er iets mee doet. Kan absoluut geen kwaad en is soms zelfs verplichte huisstijl.
Als je het niet doet kan je daar een E_NOTICE op krijgen, wat er dus op wijst dat de developer in kwestie slordig omgaat met zijn variabelen/userinput.

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Fout zit in

HTML:
1
<form method="POST" action="<? echo $PHP_SELF; ?>">


Als je even $PHP_SELF afdrukt zal je zien dat daar http://www.host.com/manuals.php uitkomt en niet http://www.host.com/manuals.php?pagina=toevoegen :) Met $_SERVER['QUERY_STRING'] kan je de query string opvragen, dus alles achter het vraagteken.

Zie ook Voutloos.
Erkens schreef op dinsdag 07 februari 2006 @ 11:32:
[...]

Als je het niet doet kan je daar een E_NOTICE op krijgen, wat er dus op wijst dat de developer in kwestie slordig omgaat met zijn variabelen/userinput.
Juist ja. En als je gebruik maakt van een eigen error afhandeler die bv je app stopt bij elke warning/error kan het nog leuk worden :9

[ Voor 53% gewijzigd door XWB op 07-02-2006 13:42 ]

March of the Eagles

Pagina: 1