[SQL] via een formulier dingen in database zetten

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

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Ik wil doormiddel van een formulier dingen in de database zetten, werk nu met PHPMyAdmin maar hier wil ik toch langzamerhand vanaf en gewoon simpel dingen invullen voor een site dmv een formulier met enkele velden die ik nodig heb. Nu heb ik onderstaande geprobeerd als een test, er zal wel niet veel van kloppen want het werkt niet ;)

code:
1
2
3
4
5
6
<form method="post" action="test2.php">
GENRE: <INPUT TYPE="text" NAME="genre" size=30><br>
URL:   <INPUT TYPE="text" NAME="url" size=30><br>
OMS:   <INPUT TYPE="text" NAME="oms" size=30><br>
<INPUT TYPE="submit" VALUE="Verstuur">
</form>


met in hetzelfde bestand:

code:
1
2
3
4
5
6
7
8
9
10
11
if (!$dbcnx){
    echo( "Connection error.");
}
else{
    mysql_select_db("test");


$galstring="INSERT INTO `gallerie` (`id`, `url`, `genre`, `omschrijving`) VALUES ('', '". $genre."', '".$url."', '".$oms."');";

    mysql_query($galsting);
    }

Waar $dbcnx de connectie tot de database is.... wat doe ik fout? Of is er een makkelijkere manier. Ik heb een beetje in die broncode van PHP MyAdmin zitten kijken maar daar zit een bestandje in met weet ik veel hoeveel code die de input van het formpie daar moet verwerken.

[ Voor 0% gewijzigd door Gerwin op 20-08-2002 23:12 . Reden: gloeiende gloeiende, dat php script wordt vernageld nu in code tag veranderd ]

Station van Gerwin Prins op Apple Music


Verwijderd

debuggen = welke foutmelding, wat doet hij wel, wat doet hij niet, ...

ps: $_POST['genre'] ipv. $genre

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
nou het doet het wel krijg geen foutmelding ofzo... alleen staat er vervolgens niets in de database

Station van Gerwin Prins op Apple Music


Verwijderd

niets = niets of leeg?

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
helemaal niets (leeg dus geen lege velden)

Hij stuurt alles wel goed naar de server want in de variabelen in deze code worden de waarden weergegeven die ingevuld zijn:

PHP:
1
2
3
echo $genre;
echo $url;
echo $oms;


er moet dus een fout zitten in de verwerking ervan deze dus:

code:
1
2
3
$galstring="INSERT INTO `gallerie` (`id`, `url`, `genre`, `omschrijving`) VALUES ('', '". $_POST['genre']."', '".$_POST['url']."', '".$_POST['oms']."');";

    mysql_query($galsting);

Station van Gerwin Prins op Apple Music


Verwijderd

debug opties:
· mysql_error, want ik vind het vreemd dat er niets opgeslaan wordt, en dat er dan geen foutmelding komt
· echo mysql_query($galsting);

ps 2: vervang overal '". $x."' door $_POST['x'] in je query

Verwijderd

haal de haken om gallerie eens weg en het veld id hoef je niet te noemen

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Uit:

PHP:
1
echo mysql_error();


Rolt:
Query was empty
Uit:

PHP:
1
echo mysql_query($galsting);


Rolt niets.

Moeten die haken er nu wel of niet staan dus:

code:
1
$galstring="INSERT INTO `gallerie` (`id`, `url`, `genre`, `omschrijving`) VALUES ('', '". $genre."', '".$url."', '".$oms."');";


of:

code:
1
$galstring="INSERT INTO `gallerie` (`id`, `url`, `genre`, `omschrijving`) VALUES ('', '". $_POST['genre']."', '".$_POST['url']."', '".$_POST['oms']."');";

Station van Gerwin Prins op Apple Music


  • johnny7
  • Registratie: November 2000
  • Laatst online: 07-11-2023
Doe eens
PHP:
1
echo $galstring;

Dan kun je tenminste zien wat de sql string wordt.

Die haken hoeven er nog niet omheen, echter in nieuwere versies van php wordt aangeraden om met de $_POST en $_GET te werken, omdat $id standaard niet meer zal werken, maar $_GET['id'] wel bijvoorbeeld.
De reden hiervoor kun je vinden op php.net. Even zoeken op globale variabelen doet wonderen >:)

Ik denk trouwens dat ultimate bedoelt dat je achter gallerie geen (id,.....,omschrijving) hoeft in te vullen. Het is al genoeg om de rij goed te vullen met de VALUES waarde.

Verwijderd

Wat doe dat ; achteraan je query?

$galstring="INSERT INTO gallerie ('id','url','genre','omschrijving') VALUES ('','{$_POST['genre']}','{$_POST['url']}', '{$_POST['oms']}')";

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Verwijderd schreef op 20 augustus 2002 @ 23:37:
Wat doe dat ; achteraan je query?

$galstring="INSERT INTO gallerie ('id','url','genre','omschrijving') VALUES ('','{$_POST['genre']}','{$_POST['url']}', '{$_POST['oms']}')";
Je moet een query toch ook altijd afsluiten met een ";"? :?

Ik heb die code van je ingevoegd op de plek maar er veranderd niets en de melding "Query was empty" blijft staan. Er veranderd ook niets aan de database, geen lege velden helemaal niets.

Station van Gerwin Prins op Apple Music


Verwijderd

met in hetzelfde bestand:
Post t es naar een 2e bestand, kijken hoe het dan gaat.
Het 2e codestuk gaat dan dus in het 2e bestand.
De variabelen worden namelijk door de html-form-code weer gereset tot een lege string als je naar hetzelfde bestand post

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Verwijderd schreef op 21 augustus 2002 @ 00:25:
[...]

Post t es naar een 2e bestand, kijken hoe het dan gaat.
Het 2e codestuk gaat dan dus in het 2e bestand.
De variabelen worden namelijk door de html-form-code weer gereset tot een lege string als je naar hetzelfde bestand post
Ok ik heb nu ditte:

test2.php

code:
1
2
3
4
5
6
<form method="post" action="test3.php">
GENRE: <INPUT TYPE="text" NAME="genre" size=30><br>
URL:   <INPUT TYPE="text" NAME="url" size=30><br>
OMS:   <INPUT TYPE="text" NAME="oms" size=30><br>
<INPUT TYPE="submit" VALUE="Verstuur">
</form>


test3.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

if (!$dbcnx){
    echo( "Connection error.");
}
else{
    mysql_select_db("test");


$galstring="INSERT INTO gallerie ('id','url','genre','omschrijving') VALUES ('','{$_POST['genre']}','{$_POST['url']}', '{$_POST['oms']}')";
    mysql_query($galsting);
    }

    
echo mysql_query($galsting);
echo mysql_error();
?>


Maar er veranderd niets. Query was empty komt uit het error-report.

[ Voor 0% gewijzigd door Gerwin op 21-08-2002 00:59 . Reden: oeps had ik toch bijna mijn wachtwoorden gepost :) ]

Station van Gerwin Prins op Apple Music


  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (!$dbcnx)
{
     echo( "Connection error.");
}

else
{
     mysql_select_db("test") or die("Couldn't select db");

     mysql_query("INSERT INTO gallerie SET genre='".$_POST["genre"]."', url='".$_POST["url"]."', omschrijving='".$_POST["oms"]."'") or die("Er is een fout opgetreden: " . mysql_error());
}
?>

Opzich doet het hetzelfde als eerdere scriptjes, maar je weet maar nooit ;)

[edit]
Het forum maakt op de een of andere manier van ' een ' :(

[ Voor 0% gewijzigd door SWINX op 21-08-2002 01:31 . Reden: php tags toegevoegd ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

test3.php: je moet nog eerst een connectie maken met de dbase, via mysql_connect

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
Verwijderd schreef op 21 augustus 2002 @ 09:02:
test3.php: je moet nog eerst een connectie maken met de dbase, via mysql_connect
Connectie staat er boven die else connection error. Maar ik heb dta maar ff verwijderd, omdat ik hier geen wachtwoorden van m'n sites wil posten :). Ik ga even dat van SWINX proberen...


....OK, uit je toevoeging komt de volgende regel:
Er is een fout opgetreden: You have an error in your SQL syntax near ''id','url','genre','omschrijving') VALUES ('','','', '')' at line 1

[ Voor 0% gewijzigd door Gerwin op 21-08-2002 13:19 . Reden: toevoeging ]

Station van Gerwin Prins op Apple Music


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Je code is erg slecht in zijn foutafhandeling.
Zet een achter AL je mysq_* functies "or die(mysql_error())" Op die manier meldt 'ie je de fout als er wat mis gaat.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (!$dbcnx)
{
  echo( "Connection error."); 
} else {
  mysql_select_db("test") or die(mysql_error());
  $galstring="
    INSERT INTO gallerie ('id','url','genre','omschrijving') 
    VALUES ('',
        '{$_POST['genre']}',
        '{$_POST['url']}', 
        '{$_POST['oms']}')";
    mysql_query($galsting) or die(mysql_error()); 
}

Localhost, sweet localhost


  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06-2025

Gerwin

Ik ben er klaar voor!

Topicstarter
kvdveer schreef op 21 augustus 2002 @ 13:20:
Je code is erg slecht in zijn foutafhandeling.
Zet een achter AL je mysq_* functies "or die(mysql_error())" Op die manier meldt 'ie je de fout als er wat mis gaat.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (!$dbcnx)
{
  echo( "Connection error."); 
} else {
  mysql_select_db("test") or die(mysql_error());
  $galstring="
    INSERT INTO gallerie ('id','url','genre','omschrijving') 
    VALUES ('',
        '{$_POST['genre']}',
        '{$_POST['url']}', 
        '{$_POST['oms']}')";
    mysql_query($galsting) or die(mysql_error()); 
}
Ok gedaan, maar ik blijf de volgende melding krijgen:
You have an error in your SQL syntax near ''id','url','genre','omschrijving') VALUES ('','','', '')' at line 1
:? Hoe kan dat?

Station van Gerwin Prins op Apple Music


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

je mag de column identifiers toch niet quoten :?
zou 't dus niet
INSERT INTO gallerie (id,url,genre,omschrijving)
moeten zijn i.pv.
INSERT INTO gallerie ('id','url','genre','omschrijving')

probeer anders deze eens, is imo ook 'makkelijker' leesbaar en zorgt ervoor dat je de "id" column niet mee hoeft te nemen in je query:
code:
1
2
3
4
5
$galstring  = "INSERT INTO gallerie ";
$galstring .= "SET ";
$galstring .= "url   = '{$_POST['url']}', ";
$galstring .= "genre = '{$_POST['genre']}', ";
$galstring .= "omschrijving   = '{$_POST['oms']}' ";

[ Voor 0% gewijzigd door TheRookie op 21-08-2002 17:12 . Reden: parser vindt ' niet liev ]

Pagina: 1