[PHP]Probleem met data opslaan in db

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

  • Leon-
  • Registratie: Juli 2005
  • Laatst online: 02-05 18:44
Ik ben gister begonnen aan een control panel voor een website...alleen ik loop nu al vast, heb een tijdje geen php meer gedaan, het zou dus daar aan kunnen liggen.

Ik heb het volgende script geschreven:

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
<?
include('connect.inc.php');
$tabelname = "admin";

if(!$content) {
?>
<form method="post"> 
<table>
      <tr>
        <td>Test</tr>
        <td><input type="text" name="content"></td>
            </tr>
            <td></td>
  <td><input type="submit" name="submit" value="submit"> <input type="reset" name="reset" value="reset"></td>
</table>
</form>
 <?
}
elseif ($submit) {
            $opdracht = "INSERT INTO $tabelname VALUES ('0', '$content)";
            $result = mysql_query($opdracht);
            if ($result) {
                echo "Succes...";
            } else {
                echo "Something went wrong with the database. mysql reports: ".mysql_error();
            }
        }
?>


Dit is mijn db connectie:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php

//database connectie
$dbhost = "localhost";
$user = "user";
$pass = "wachtwoord";
$dbnaam = "dbnaam";
$server = mysql_connect($dbhost,$user,$pass);
mysql_select_db($dbnaam);

?>


Wanneer ik gegevens in de database wil opslaan en ik klik op de button submit, doet hij niks...

Ik hoop dat iemand een oplossing heeft voor mijn probleem! :*)

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18:48
if(isset($_POST['submit'])) o.i.d. Verder zou ik niet de submitknop maar een ander veld gebruiken om te bepalen wat de actie is omdat de submitknop niet wordt verzonden als je op enter drukt in plaats van op de button te klikken.

REQUEST_METHOD is een alternatief wat ook netjes is.

[ Voor 14% gewijzigd door djluc op 14-08-2005 12:48 ]


  • foske
  • Registratie: Juli 2001
  • Laatst online: 23:01
Ik zou zeggen, ga eens wat variable uitprinten. Als hij helemaal niets uitprint, komt hij blijkbaar niet voorbij je If statements.
print dus $content en $submit eens uit. Want misschien hebben deze helemaal geen waarde?

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Staat register_globals aan? Zonee, kijk dan eens in de FAQ onder de vraag "Mijn POST en GET forms werken niet (meer)".


edit: je table lay-out klopt ook niet. Dat heeft niet te maken met dit probleem, maar is wel handig om goed te hebben:
code:
1
2
3
4
5
6
7
8
9
10
<table> 
  <tr> 
    <td>Test</td>
    <td><input type="text" name="content"></td> 
  </tr>
  <tr>
    <td></td> 
    <td><input type="submit" name="submit" value="submit"> <input type="reset" name="reset" value="reset"></td>
  </tr>
</table>

Daarnaast moet je bij een form de action-property opgeven.

[ Voor 98% gewijzigd door GlowMouse op 14-08-2005 12:59 ]


  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 02-05 10:29

Tux

Maak geen gebruik van $content, maar van $_POST['content']

PHP:
1
2
3
4
//niet
if(!$content) { 
//maar
if ($_SERVER['REQUEST_METHOD'] == 'GET') {


PHP:
1
2
3
4
//niet
elseif ($submit) { 
//maar
elseif ($_SERVER['REQUEST_METHOD'] == 'POST') {


Verder zit er nog een fout in je MySQL query:

code:
1
INSERT INTO $tabelname VALUES ('0', '$content)


Je vergeet de ' na $content.
Je voert geen functie uit zoals addslashes, zodat er een SQL-injection lek in zit.
IMHO is het niet netjes om in een string value direct var's aan te spreken, ik gebruik altijd zoiets:
PHP:
1
$opdracht = "DIT IS EEN " . $vage . " QUERY";

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Verwijderd

Leer jezelf aan om onder andere gebruik te maken van $_SERVER['REQUEST_METHOD'], in combinatie met bijvoorbeeld de waarde van een hidden field. Dus dan krijg je een situatie als;

PHP:
1
2
3
4
5
6
7
8
9
10
if($_SERVER['REQUEST_METHOD'] != 'POST' || ($_SERVER['REQUEST_METHOD'] == 'POST' && !isset($_POST['check']))) {

// hier form + hidden field met de naam CHECK

} else
if(isset($_SERVER['REQUEST_METHOD']) == 'POST' && isset($_POST['check'])) {

// verwerk data

}


Op deze wijze kun je namelijk ook, afhankelijk van bijvoorbeeld de waarde van de check-variabele, jouw pagina in meerdere delen opdelen. In het voorbeeld zijn twee `delen` te zien, afhankelijk van dus de handelingen van de gebruiker. Succes.

[ Voor 10% gewijzigd door Verwijderd op 14-08-2005 13:30 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Dit staat inderdaad gewoon letterlijk in de FAQ: P&W FAQ - PHP:Mijn POST en GET forms werken niet (meer). Verder is het niet de bedoeling dat wij hier jouw code gaan debuggen, dat mag je zelf doen. Om die twee redenen doe ik dit topic op slot. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:49

Creepy

Tactical Espionage Splatterer

Hmmja.. kom op zeg :) Het gebruik van $_POST e.d. staat notabene in de FAQ ;) Dat had je zelf ook wel kunnen vinden. Daarbij gaan we er ook vanuit dat je in eerste instantie zelf gaat debuggen en dat je ook aangeeft wat je hebt geprobeerd om je eigen probleem op te lossen. Dit laatste mis ik in de startpost.

Ik denk dat je er met de gegeven hints wel uit gaat komen. Mocht het echt niet lukken kijk dan even naar P&W FAQ - De "quickstart" zodat je weet wat we van een topicstart verwachten en open en nieuw topic ;)

offtopic:
* Creepy aait -NMe-. Doe eens niet zo sneaky ervoor kruipen ;)

[ Voor 7% gewijzigd door Creepy op 14-08-2005 13:37 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.