Script kan niet verbinden met DB

Status
Niet open voor verdere reacties.

19hunter91

Gebruiker
Lid geworden
14 jan 2009
Berichten
710
Beste,

Ik probeer hier een formulier in PHP te maken. Het hoort na het invullen van gegevens, deze in te vullen in de database.
Dit lukt echter niet volgens plan.
Misschien dat een ander oog het probleem makkelijk er tussenuit vist.
Vandaar deze post.

Het betreffende script:
Code:
<?php 
 // Verbinding maken met database 
 mysql_connect("localhost", "root", "") or die(mysql_error()); 
 mysql_select_db("movedb") or die(mysql_error()); 
?>

<?php 
 // Code wordt uitgevoerd als het formulier wordt verzonden
 if (isset($_POST['submit'])) { 

 	 // Velden in de database opslaan
 	$insert = "INSERT INTO contactpersonen (Bedrijf, Achternaam, Voornaam, E-mailadres, Functie, Telefoon op Werk, Telefoon thuis, Mobiele telefoon, Faxnummer, Adres, Plaats, Provincie, Land/regio, Webpagina, Notities)
 			VALUES ('".$_POST['Bedrijf']."', '".$_POST['Voornaam']."', '".$_POST['Achternaam']."', '".$_POST['E-mailadres']."', '".$_POST['Functie']."', '".$_POST['Telefoon op werk']."', '".$_POST['Telefoon thuis']."', '".$_POST['Mobiele telefoon']."', '".$_POST['Faxnummer']."', '".$_POST['Adres']."', '".$_POST['Plaats']."', '".$_POST['Provincie']."', '".$_POST['Land/regio']."', '".$_POST['Webpagina']."', '".$_POST['Notities']."')";
 	$add_member = mysql_query($insert);
	}
?>

<html>
<head>
<link rel="stylesheet" type="text/css" href="view.css" media="all">
<title>Voeg nieuw contactpersoon toe</title>
</head>

<body>
<center>
<h2>U kunt hieronder een nieuw contactpersoon toevoegen</h2>
<form name="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border="0">
<tr><td>Bedrijf:</td><td><input type="text" name="Bedrijf" maxlength="60"></td></tr>
<tr><td>Voornaam:</td><td><input type="text" name="Voornaam" maxlength="200"></td></tr>
<tr><td>Achternaam:</td><td><input type="text" name="Achternaam" maxlength="50"></td></tr>
<tr><td>E-mailadres:</td><td><input type="text" name="E-mailadres" maxlength="50"></td></tr>
<tr><td>Functie:</td><td><input type="text" name="Functie"></td></tr>
<tr><td>Telefoon werk:</td><td><input type="text" name="Telefoon werk" size=15></td></tr>
<tr><td>Telefoon thuis:</td><td><input type="text" name="Telefoon thuis" size=10></td></tr>
<tr><td>Mobiele telefoon:</td><td><input type="text" name="Mobiele telefoon" size=10></td></tr>
<tr><td>Faxnummer:</td><td><input type="text" name="Faxnummer" size=15></td></tr>
<tr><td>Adres:</td><td><input type="text" name="Adres" maxlength="50"></td></tr>
<tr><td>Plaats:</td><td><input type="text" name="Plaats" maxlength="50"></td></tr>
<tr><td>Provincie:</td><td><input type="text" name="Provincie" maxlength="50"></td></tr>
<tr><td>Land/regio:</td><td><input type="text" name="Land/regio" maxlength="50"></td></tr>
<tr><td>Webpagina:</td><td><input type="text" name="Webpagina" maxlength="50"></td></tr>
<tr><td>Notities:</td><td><input type="text" name="Notities" maxlength="50"></td></tr>
<tr><th colspan=2><input type="submit" name="submit" value="Voeg contact toe"></th></tr> 
</table>
</center>
<center><input type="button" name="terug" value="Terug naar de Keuzepagina" ONCLICK="window.location.href='./Keuze.php'"></center>
</form>
</body>
</html>
Zodra je alles invult en op "Voeg contact toe" drukt
Worden alle velden geleegd, maar niks word toegevoegd aan de DB.

Alvast bedankt
 
Laatst bewerkt:
Krijg je een foutmelding (de titel van je vraag is "Script kan niet verbinden met DB", dat impliceert dat er iets misgaat bij het verbinden of selecteren van de database, waar je mysql_error() gebruikt)?
Zo niet, verander de regel
PHP:
$add_member = mysql_query($insert);
eens in
PHP:
$add_member = mysql_query($insert);
if (!$add_member)
{
  die ("Fout bij het toevoegen [$insert]: " . mysql_error())
}

Nog even een ander punt. Controleren of het formulier verzonden is met
PHP:
if (isset($_POST['submit']))
is niet betrouwbaar. Niet alle browsers sturen dat in alle gevallen mee (met name als er op "Enter" gedrukt wordt, in plaats van op de "submit"-knop geklikt wordt kan dat voorkomen). Een betere methode is
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")
 
Laatst bewerkt:
Ik krijg geen foutmeldingen te zien.

Zodra je op Submit drukt worden alle velden geleegd,maar de database blijft ook leeg.
Het script stuurt dus niks door naar de DB
 
Met de door mij voorgestelde wijziging krijg je ook geen foutmelding?
Probeer anders eens de query op het scherm te laten printen en kopieer/plak die eens in phpMyAdmin (als je dat gebruikt). Kijk eens of het dan wel werkt.
 
Ben nu niet in de buurt van de server.. Maar na het toevoegen van jou voorgestelde ding, kreeg ik een foutmelding in de richting van:

Unexpected } at line 18
 
Oeps, puntkomma vergeten achter
PHP:
die ("Fout bij het toevoegen [$insert]: " . mysql_error())
Dit moet dus
PHP:
die ("Fout bij het toevoegen [$insert]: " . mysql_error());
zijn.
 
Misschien in plaats van

PHP:
$add_member = mysql_query($insert);

eens dit proberen?

PHP:
mysql_query($insert);
 
Ik zou vermijden om in mijn veldnamen spaties en slashes te gebruiken, dus zowel in je tabelstructuur als in je query zal je aanpassingen moeten maken. Volgens mij zal het dan opgelost zijn...

Indien niet, misschien ook even checken of de gebruikte user de juiste permissies heeft om items te inserten. (Maar aangezien je in je script root gebruikt, zou dat in dit geval geen probleem mogen zijn...)
 
Ja daar zit het probleem. Als (en het is echt heel erg af te raden) je spaties in je veldnamen gebruikt moet je de naam escapen, anders wordt het niet herkend. Het beste kun je de spaties vervangen door _ oid.

Als je wilt escapen kan het zo:

[sql]
SELECT `veld met spaties`
FROM tabel
[/sql]
 
zowel in de tabel als in het script spaties weggehaald.
En het werkt :p

Zo klein, en toch zo effectief

Bedankt jongens :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan