Mis mijn formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert V

Robert V

06/06/2009 15:20:00
Quote Anchor link
Ik ben bezig geweest om al mijn fouten uit het script te halen maar na een eindcontrole bleek dat er geen formulier meer wordt toegevoegd wanneer ik een nieuwe wil toevoegen.

Het is het volgende script gedeelte:

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
<?

$form
= true;

if(isset($_GET['a']) && $_GET['a'] == "toevoegen"){
    $form = true;

    if(isset($_POST['submit'])){
        $form = false;

        if($_POST['titel'] == "" || $_POST['prijs'] == ""){
            echo mededeling("rood", "Een of meerdere verplichte velden zijn leeg gelaten.");
            $form = true;
        }

        if(!$form){
        

        if(!$form){
            $sql = mysql_query("INSERT INTO Tabel
                                            VALUES ('', '"
. $_POST['titel'] ."', '". $_POST['geinspireerd'] ."', '". $_POST['inhoud'] ."', '". $_POST['prijs'] ."', '". $_POST['geurgroep'] ."', '". $_POST['details'] ."', '". $_POST['collectie'] ."', '". $_POST['model'] ."', '". $_POST['afbeelding'] ."', '". $_POST['nieuw'] ."')");
            if($sql){
                echo mededeling("uitroepteken", "De parfum is succesvol toegevoegd.");
                $overzicht = true;
            }

            else{
                echo mededeling("error", "Er ging iets fout tijdens het toevoegen van dit parfum. Hieronder kunt u het nogmaals proberen.");
                $form = true;
            }
        }
    }


    if($form){
        echo "<form method='post'>
                <table width='500' border='0' cellpadding='0' cellspacing='0'>
                  <tr>
                    <td>Naam:</td>
                    <td><input size='47' type='text' value='"
. $_POST['titel'] ."' name='titel'></td>
                  </tr>
                  <tr>
                    <td>Geinspireerd door:</td>
                    <td><input size='47' type='text' value='"
. $_POST['geinspireerd'] ."' name='geinspireerd'></td>
                  </tr>
                  <tr>
                    <td>Inhoud:</td>
                    <td>
                    <select name='inhoud'>"
;
                        $s_q = mysql_query("SELECT * FROM Inhoud ORDER BY Inhoud DESC") or die(mysql_error());
                        while($s = mysql_fetch_assoc($s_q)){
                            echo "<option value='". $s['ID'] ."'>". $s['Inhoud'] ."</option>";
                        }

                        echo "</select></td>
                      </tr>
                    <tr>
                    <td>Prijs:</td>
                    <td>
                    <select name='prij...

"
;
?>


Ik hoop dat iemand van jullie ziet waarom het formulier niet meer wordt weergegeven op de pagina.
 
PHP hulp

PHP hulp

23/11/2024 21:51:16
 
Jesper Diovo

Jesper Diovo

06/06/2009 15:31:00
Quote Anchor link
Omdat je niet alles afsluit. Zet je error_reporting maar eens aan. Je zult zien dat je een unexpected $end error krijgt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);

// rest van je code
?>
 
Robert V

Robert V

06/06/2009 15:34:00
Quote Anchor link
Nee, het vreemde van alles is. Ik krijg geen foutmeldingen meer... spijtig genoeg.
 
Jesper Diovo

Jesper Diovo

06/06/2009 15:35:00
Quote Anchor link
Kijk nu eens goed naar je code. Waarom staat er twee keer achter elkaar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
        if(!$form){
?>
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
Robert V

Robert V

06/06/2009 15:45:00
Quote Anchor link
Owja, ik heb er 1 van die 2 weg gehaald.... nu werkt alleen het posten van het formulier niet meer, ik heb al wel het formulier terug
 
Joren de Wit

Joren de Wit

06/06/2009 15:51:00
Quote Anchor link
Naast dat je script op dit moment niet blijkt te werken, zou het ook nog eens ontzettend onveilig zijn als het wel werkt. SQL injectie ligt op de loer aangezien je POST variabelen direct in je query gebruikt.

Neem eens een kijkje in deze PHP beginnershandleiding en lees dan met name de stukken die over forumlieren in PHP gaan. Daar wordt uitgelegd hoe je formulieren veilig opzet. Ook dit script met een uitgebreide formuliercontrole is het bekijken waard. Succes!
 
Mr.Ark

Mr.Ark

06/06/2009 15:53:00
Quote Anchor link
1. Gebruik single quotes, Is makkelijker om mee te werken.
2. Een formulier posten doen we op de volgende manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP

if($_SERVER['REQUEST_METHOD'] == 'POST') {

?>


3. Bij je query gebruik je *, Noem gewoon alle namen op die je eruit wilt halen.
4. Om een veld controle te doen kan je het beste op de volgende manier doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP

if(isset($_POST['blaat']) && !empty($_POST['blaat'])) (

?>


5. Gebruik gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<? PHP in plaats van < ?

Als je deze dingen toepast, Dan kom je al een heel stuk opgang om een goed scriptje te maken.
 
Joren de Wit

Joren de Wit

06/06/2009 15:57:00
Quote Anchor link
ark schreef op 06.06.2009 15:53:
4. Om een veld controle te doen kan je het beste op de volgende manier doen:
Die isset() is daar overbodig, die zit immers ook al in empty() verwerkt. Die functie controleert namelijk zowel of een variabele bestaat en of hij gevuld is.

ps. In een formulier controle is het niet altijd handig om empty() te gebruiken, aangezien deze functie ook false teruggeeft bij bijvoorbeeld '0'. Gebruik voor de controle op een lege string liever:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($string != '')
{

    // $string is met een waarde gevuld
}
?>
 
Robert V

Robert V

06/06/2009 15:59:00
Quote Anchor link
Dank jullie wel voor de posten. Ik ga er gewoon opnieuw mee aan de slag, en ga eerst eens die pagina goed doorlezen die ik eerder kreeg.
 
Mr.Ark

Mr.Ark

06/06/2009 16:02:00
Quote Anchor link
@ Blanche

Dus eigenlijk is

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP

if(!empty($_POST['blaat']) {

?>


al goed genoeg?

/* Edit */

Dan zou de volgende manier ook goed zijn?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP

if(isset($_POST['blaat']) && $_POST['blaat'] !== '') {

?>
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
Afra ca

Afra ca

06/06/2009 16:04:00
Quote Anchor link
@ Ark, inderdaad. Maar zoals hij zegt, bij invullen van 0 returned hij wel false
 
Joren de Wit

Joren de Wit

06/06/2009 16:04:00
Quote Anchor link
Ja, of misschien liever:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_POST['blaat']) && $_POST['blaat'] != '')
?>
 
Mr.Ark

Mr.Ark

06/06/2009 16:07:00
Quote Anchor link
Quote:
@ Ark, inderdaad. Maar zoals hij zegt, bij invullen van 0 returned hij wel false


Maar om een cijfer controle uit te voeren gebruik je toch is_numeric ?

@ Blanche

Inderdaad, Snap het.
 
Joren de Wit

Joren de Wit

06/06/2009 16:09:00
Quote Anchor link
ark schreef op 06.06.2009 16:07:
Maar om een cijfer controle uit te voeren gebruik je toch is_numeric ?
Jep, of als je integers wilt hebben kun je ook nog ctype_digit() gebruiken...
 



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.