Toon posts:

PHP formulier, de weg kwijt...

Pagina: 1
Acties:
  • 58 views sinds 30-01-2008

Verwijderd

Topicstarter
Ok, wie kan mij helpen?

Ik ben sinds een week bezig met Mysql en PHP...maar na een week puzzelen ben ik er nog niet echt uit... |:(

wie kan mij uitleggen waarom dit:
code:
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
<?php
if ($submit){

mysql_connect ("localhost","root","xxxxxx");

mysql_select_db("adsl_test");

   $query = "INSERT INTO persoon (id, naam) VALUES (NULL,'$bericht')";

   mysql_query($query) or die ("query mislukt");

}else{

?>
<html>

<form action="addpersoon5.php" method="post">
<p>
<input type="hidden" name="submit" value="yes">
<input type="text" name="naam" size=20 maxlength=20>
<br>
<br>
<input type="submit" name="Submit" value="Submit naam">
<input type="reset" name="Submit2" value="Wis">
</p>
</form>
</html>

<?php
}
?>

niet werkt?

hij voegt een record toe, maar geen naam.

voor de duidelijkheid, het veld id is auto_increment en primary key.
het veld naam is VARCHAR(20)...

[ Voor 21% gewijzigd door Verwijderd op 06-09-2003 19:34 ]


  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09-2025
Je werkt zeker met een oud(e) tutorial/boek :?

Vanaf versie 4.1.2 staat in PHP REGISTER_GLOBALS standaard uit. Dit uit het veiligheidsoogpunt van scripts, als je even zoekt zul je het een en ander over dit onderwerp vinden.

En omdat ik lief ben even je script herschreven:
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
<?php
 if( $POST[ "submit" ] )
 {

  mysql_connect ("localhost","root","xxxxxx");
  mysql_select_db("adsl_test");

   $query = "INSERT INTO persoon (id, naam) VALUES (NULL,'". $_POST[ "bericht" ] ."')";
   mysql_query($query) or die (mysql_error());

 }
 else
 {

?>
<html>

<form action="addpersoon5.php" method="post">
<p>
<input type="hidden" name="submit" value="yes">
<input type="text" name="naam" size=20 maxlength=20>
<br>
<br>
<input type="submit" name="Submit" value="Submit naam">
<input type="reset" name="Submit2" value="Wis">
</p>
</form>
</html>

<?php
}
?>

[ Voor 187% gewijzigd door supakeen op 06-09-2003 19:47 ]


Verwijderd

Wat de vriendelijke user hierboeven probeert te zeggen is dat je $submit en $bericht moet vervangen door $_POST["submit"] en $_POST["bericht"]. Succes :).

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 07-04 13:41
En vanaf heden doen wij het met $_POST['variable']

edit:

Lijkt me wel duidelijk zo :\

[ Voor 49% gewijzigd door PrisonerOfPain op 06-09-2003 19:42 ]


  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09-2025
Verwijderd schreef op 06 September 2003 @ 19:40:
Wat de vriendelijke user hierboeven probeert te zeggen is dat je $submit en $bericht moet vervangen door $_POST["submit"] en $_POST["bericht"]. Succes :).
Diezelfde vriendelijke user was even chagerijnig en heeft nu een uitgebreide reply gemaakt.

Verwijderd

Topicstarter
ok, dank...

ik gaat weer verder kloten...

Ik zal je die chagerijnigheid niet kwalijk nemen hoor! je was immers zo lief om mun script te herschrijven.... ;)

ik kan hem helaas niet meer testen...zal ander keertje worden... ;(

[ Voor 69% gewijzigd door Verwijderd op 06-09-2003 20:00 ]


  • slm
  • Registratie: Januari 2003
  • Laatst online: 25-06 12:45

slm

Mjah... en het is ook geen "PHP-formulier" trouwens.

To the point: hoe denk je iets te vangen als je de variabele niet correct overneemt? Globals of niet, als je het "naam" noemt in het formulier en vervolgens probeert op te halen met "bericht", tjah, ehum, nou ja, dan werkt het niet (doh) ;)

Tel de verschillen:
code:
1
2
<input type="text" name="naam" size=20 maxlength=20>
INSERT INTO persoon (id, naam) VALUES (NULL,'$bericht')

To study and not think is a waste. To think and not study is dangerous.


  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
Die input type="hidden" kun je ook achterwege laten.

PHP:
1
2
3
4
if($_POST)
{
     /* doe iets */
}


werkt ook en scheelt weer een regel

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:56

crisp

Devver

Pixelated

of nog mooier:

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

  // doe iets

}

Intentionally left blank


  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 16-08 14:49
$query = "INSERT INTO persoon (id, naam) VALUES (NULL,'". $_POST[ "bericht" ] ."')";

Is mysql wel zo blij met dat er geen key wordt gegenereerd? Volgens mij is dit nl ook niet goed.... Dus ik zou er zo iets van maken:

$query = "INSERT INTO persoon (naam) VALUES ('". $_POST[ "bericht" ] ."')";

Was ik maar rijk en niet zo knap...


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-08 13:41
Sjeik, als je de waarde NULL meegeft en het veld is een autoincreement veld dan werkt dat ook.. Het maakt zover ik weet niets uit..

|>


  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
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
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    mysql_connect("localhost","root","xxxxxx");
    mysql_select_db("adsl_test");
    mysq_query("INSERT INTO persoon (id, naam) VALUES (NULL,'". $_POST['naam'] ."'") or die(mysql_error());
}
else
{

    print
     "<html>\n"
    ."<head>\n"
    ."</head>\n"
    ."<body>\n"
    ."<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">\n"
    ."<p>\n"
    ."<input type=\"text\" name=\"naam\" size=\"20\" maxlength=\"20\">"
    ."<br>\n"
    ."<br>\n"
    ."<input type=\"submit\" name=\"submit\" value=\"Naam versturen\">\n"
    ."<input type=\"reset\" vame=\"reset\" value=\"reset\">\n"
    ."</body></html>";
}
?>


Dit kan je zo copy/pasten en klopt 100% pin me er niet op vast

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Suepahfly schreef op 06 September 2003 @ 22:33:
[...]

Dit kan je zo copy/pasten en klopt 100% pin me er niet op vast
Dat is echt heel lelijk! Je gaat toch niet de hele HTML source echoen ..... :(
Maak er dan in ieder geval dit van:

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

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    mysql_connect("localhost","root","xxxxxx");
    mysql_select_db("adsl_test");
    mysq_query("INSERT INTO persoon (id, naam) VALUES (NULL,'". $_POST['naam'] ."'") or die(mysql_error());
}
else
{
?>
<html>
<head>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<p>
<input type="text" name="naam" size="20" maxlength="20">
<br>
<br>
<input type="submit" name="submit" value="Naam versturen">
<input type="reset" vame="reset" value="reset">
</body></html>
<?
}
?>


edit:
en zo heb ik zmn's code opnieuw geschreven :+

[ Voor 26% gewijzigd door Spider.007 op 06-09-2003 23:30 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
Ik vind zelf

<?php
}
?>

errug lelijk wordt het allemaal zo onverzichtelijk van imho
Op die manier ben lang je aan het zoeken waneer je een } vergeten bent

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-04 00:02
Ik zit dus met hetzelfde probleem als PluGGen! Heb de bovenstaande scripts geprobeerd maar ze werken niet! Ik krijg nog steeds geen nieuwe query's in mijn my_sql database!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
Teak schreef op 06 September 2003 @ 23:53:
Ik zit dus met hetzelfde probleem als PluGGen! Heb de bovenstaande scripts geprobeerd maar ze werken niet! Ik krijg nog steeds geen nieuwe query's in mijn my_sql database!
Heb je de namen van de variabelen wel goed?
Dat deed de TS nl. ook fout.

Post anders een stukje van je script

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-04 00:02
hieronder staat mijn 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
<?
include("db.php");
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    mysql_query("INSERT INTO nieuws (mid, name, date, bericht) VALUES ('". $_POST['mid'] ."','". $_POST['name'] ."', '". $_POST['date'] ."', '". $_POST['bericht'] ."'") or die(mysql_error()); 
} 
else 
{ 
?> 
<html> 
<head> 
</head> 
<body> 
<form action="<?=$_SERVER['PHP_SELF']?>" method="post"> 
<p>
<input type="text" name="mid" size="20" maxlength="20"> <br> 
<input type="text" name="name" size="20" maxlength="20"><br>
<input type="text" name="date" size="20" maxlength="20"><br>
<input type="text" name="bericht" size="20" maxlength="20"><br> 
<br> 
<input type="submit" name="submit" value="versturen"> 
<input type="reset" vame="reset" value="reset"> 
</body></html> 
<? 
} 
?> 

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
Geeft het script nog errors?
Zo op het eerste gezicht ziet het goed uit nl.

Ik zie het al
[edit]

<form action<?PHP= ....

ff veranderen in

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

[ Voor 49% gewijzigd door Suepahfly op 07-09-2003 00:02 ]


  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-04 00:02
You have an error in your SQL syntax near '' at line 1

krijg deze foutmelding!

[ Voor 85% gewijzigd door Teak op 07-09-2003 00:03 ]


  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
zie edit ^

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-04 00:02
Na de edit heb ik nog steeds dezelfde foutmelding!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 13-08 14:09
Foutje in je query.
Dit moet het zijn:
PHP:
1
    mysql_query("INSERT INTO tmp (mid, name, date, bericht) VALUES ('". $_POST['mid'] ."','". $_POST['name'] ."', '". $_POST['date'] ."', '". $_POST['bericht'] ."')") or die(mysql_error());


Je bent de laatste ``)'' vergeten van VALUES()

Verwijderd

wat is dit voor constructie?
<?=$_SERVER['PHP_SELF']?>
moet dat niet
<?echo $_SERVER['PHP_SELF']; ?>
zijn?

Verwijderd

= is een alias voor echo... En of er dan een ; aan het einde moet of niet, geen idee. Dat van die alias weet ik wel zeker :)

  • Teak
  • Registratie: Juli 2003
  • Laatst online: 29-04 00:02
NU werk het wel! Bedankt allemaal! _/-\o_ _/-\o_ Er kan een slotje op!

Verwijderd

o, dat van die = wist ik niet |:( verrekte handig.
de puntkomma moet bij php na elk statement.

Verwijderd

Mja, zonder puntkomma gaat het ook goed. Denk dat het alleen bij dit soort constructies werkt...

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 11-08 13:24
Verwijderd schreef op 07 September 2003 @ 00:43:
Mja, zonder puntkomma gaat het ook goed. Denk dat het alleen bij dit soort constructies werkt...
Klopt...
Houd er wel rekening mee dat <? alleen werkt als het ook volgens de php.ini mag, zo niet krijg je best wel een brakke output (alsof je een php file als html door je brouwser laat parsen)

Wat is er mis met een groot deel van de source echo'en ?
Zelf vind ik het netter staan als :
PHP:
1
}

Nu echo ik in mijn normale code natuurlijk niet alles, maar wel een vrij groot deel, ongeveer 55 tot 60 %...

sebsoft.nl


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
Kun je in PHP geen gebruik maken van inline documents:
PHP:
1
2
3
4
echo>>STOP
    html
    en nog meer
STOP


Zoiets kun je namelijk wel in Perl doen.

  • Johnny
  • Registratie: December 2001
  • Laatst online: 21-08 11:56

Johnny

ondergewaardeerde internetguru

djluc schreef op 07 September 2003 @ 09:11:
Kun je in PHP geen gebruik maken van inline documents:
PHP:
1
2
3
4
echo>>STOP
    html
    en nog meer
STOP


Zoiets kun je namelijk wel in Perl doen.
Je kunt met include() een extern bestand met bijvoorbeeld HTML code invoegen,

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Verwijderd

djluc schreef op 07 September 2003 @ 09:11:
Kun je in PHP geen gebruik maken van inline documents:
No problem:
code:
1
2
3
4
?>
    html
    en nog meer
<?

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
Maar dan is het minder duidelijk, wat ik van een inline document wel vind. Niet dat ik het nodig heb hoor, ik vroeg het me zomaar af omdat perl het wel heeft. Ik gebruik alleen nog maar templates en XML, vooral vanwege dit soort probleempjes en natuurlijk de mooie scheiding.

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

ik doe het meestal zo:
PHP:
1
2
3
4
5
6
7
<?php 
define("NL","<br />\n",TRUE);

echo 'nouja toch zo dan maar'.NL.
'zoiets iig'; 

?>
meestal gebruik ik een parse scriptje maar op deze manier doe ik het als dat efkes niet kan :P

[ Voor 122% gewijzigd door Wolfboy op 07-09-2003 14:18 . Reden: replace gedaan na het schrijven van de define functie, dan werkt ie niet ;) ]

Blog [Stackoverflow] [LinkedIn]


Verwijderd

djluc schreef op 07 September 2003 @ 13:57:Ik gebruik alleen nog maar templates en XML, vooral vanwege dit soort probleempjes en natuurlijk de mooie scheiding.
Nadeel van XSLT (ik neem aan dat je dat met templates bedoelt?) vind ik dat variabelen in feite gewoon constants zijn, en je ze niet kunt reassignen. Dan moet je je in aardige bochten wringen om iets iteratiefs te doen, laat staan iets recursiefs.

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

het grootste nadeel van XSLT is dat het niet door alle browsers ondersteunt word.

omdat php serverside is zal je met xml parsen via php geen problemen krijgen.

Blog [Stackoverflow] [LinkedIn]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat is dit, een PHP manual bespreek topic?
Sorry, het oorspronkelijke probleem had hier al geen bestaansrecht, en voor de rest is het ongelooflijk offtopic, dus ik hang er een ijzerwerk aan

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.