contact maken met xampp database

Status
Niet open voor verdere reacties.

apcmvw

Gebruiker
Lid geworden
7 feb 2012
Berichten
80
Nadat ik XAMPP heb geïnstalleerd heb ik een database bandleden gecreëerd. Nu probeer ik met een html formulier en een php script nieuwe namen toe te voegen aan deze database. Dat lukt me steeds niet.
Voor het formulier gebruik ik in html de volgende code:

Code:
<form action="insert.php" method="post">
voornaam: <input type="text" name="voornaam"><br>
achternaam: <input type="text" name="achternaam"><br>
<input type="Submit">
</form>

en in de insert.php pagina heb ik de volgende code ondergebracht:

Code:
<?
$username="root";
$password="";
$database="bandleden";
$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "INSERT INTO bandleden VALUES ('','$voornaam','$achternaam')";
mysql_query($query);
mysql_close();
?>

Resultaat nadat ik formulier heb ingevuld en "verzenden" heb gekozen: Helemaal niets!

Wat doe ik niet goed?

Toon
 
Laatst bewerkt door een moderator:
PHP:
<?php  //het is aangewezen php te gebruiken anders dient u shortcodes online ook aan te zetten en niet altijd mogelijk bij shared hosting 
  $username="root";
  $password="";
  $database="bandleden";
  $voornaam=$_POST['voornaam'];
  $achternaam=$_POST['achternaam'];
  mysql_connect(localhost,$username,$password);
  mysql_select_db($database) or die( "Unable to select database");//@ dient om fouten weg te laten in test is dit nog niet nodig
  $query = "INSERT INTO bandleden VALUES ('','$voornaam','$achternaam')";//INSERT INTO table SET colomname='$value', ... 
//INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2, value3,...)  
//waarom niet uw manier dit omdat in uw voorbeeld uw database inconsistent kan worden 
// er kan ook een fout ontstaan indien je één colom toevoegt en deze is niet noodzakelijk  (mag null zijn)dit gebeurt veel je code niet meer werkt en dan is dit uw...
  mysql_query($query);
  mysql_close();
?>
 
Ik heb het vage vermoeden dat er wel een database is aangemaakt maar dat er geen tabellen in de database zitten.
Zonder tabellen gaat het uiteraard nooit werken.

Dit omdat TS het helemaal niet over tabellen heeft en ook alleen aangeeft een database aangemaakt te hebben.
 
Hi kenikavanbis
Nu zie ik de opmerkingen. De opmerkingen op regel 1 en regel 8 snap ik en neem ik graag over.
Mbt de opmerking bij regel 9 moet ik nog aangeven dat ik in de database bandleden ook al een tabel bandleden heb aangemaakt. Daardoor is het SET columname nu overbodig nietwaar?! Na aanpassing ziet de code er nu zo uit:
PHP:
<?php
$username="root";
$password="";
$database="bandleden";

$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];


mysql_connect(localhost,$username,$password);

$query = "INSERT INTO bandleden VALUES ('','$voornaam','$achternaam')";
mysql_query($query);

mysql_close();
?>
Als ik het geheel nu laat draaien komt er echter het volgende bericht:
Notice: Use of undefined constant localhost - assumed 'localhost' in C:\xampp\htdocs\test2\insert2.php on line 10

Kan je me nog helpen?

Hi gast0158
binnen de database "bandleden" heb ik een kleine tabel "bandleden" aangemaakt.
 
Laatst bewerkt door een moderator:
Je hebt 2 opties om die error kwijt te raken :

Code:
  $username="root";
  $password="";
  $host = "localhost";
  $database="bandleden";
  $voornaam=$_POST['voornaam'];
  $achternaam=$_POST['achternaam'];
  mysql_connect($host,$username,$password);

of

Code:
  mysql_connect"(localhost",$username,$password);
 
Laatst bewerkt:
Inmiddels insert.php file aangepast op de volgende manier:
PHP:
<?php
$username="root";
$password="";
$host = "localhost";
$database="bandleden";

$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];


mysql_connect("host",$username,$password);

$query = "INSERT INTO bandleden VALUES ('','$voornaam','$achternaam')";
mysql_query($query);

mysql_close();
?>
Nog steeds geen resultaat, nu is de reactie:

Warning: mysql_connect(): php_network_getaddresses: getaddrinfo failed: Host is onbekend. in C:\xampp\htdocs\test2\insert2.php on line 11

Ik begrijp er niets meer van. Kan iemand helpen?
 
Laatst bewerkt door een moderator:
Ik geef je 2 mogelijke oplossingen (met een typefoutje in mijn 2e optie) en jij verzint er een 3e (niet werkende) variant bij :)

Pas alleen de volgende zin eventjes aan nu:

Code:
    mysql_connect($host, $username,$password);

En dan de query :
Code:
$query = 'INSERT INTO bandleden VALUES ("'.$voornaam.'", "'.$achternaam.'")';

Let even op de enkel- en dubbelquotes, variabelen horen tussen dubbelquotes te staan.
 
Laatst bewerkt:
Een en ander aangepast zoals jij hebt aangegeven. Resultaat:

PHP:
<?php
$username="root";
$password="";
$host = "localhost";
$database="bandleden";

$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];


mysql_connect("$host",$username,$password);

$query = 'INSERT INTO bandleden VALUES ("'.$voornaam.'", "'.$achternaam.'")';
mysql_query($query);

mysql_close();
?>
Overigens ben ik nu qua enkele en dubbele quotes de weg kwijt. Tenslotte geeft het draaien van bovengenoemd script GEEN resultaat.
Is hier nog redding mogelijk?
 
Laatst bewerkt door een moderator:
Je hebt nu dit:

Code:
mysql_connect("$host",$username,$password);

Volgens mij had ik $host niet tussen quotes staan. Hiermee maak je van een variabele (met de waarde "Localhost" een string "$host" en werkt het niet meer.
Haal die quotes om $host dus eventje weg.

Ik ga proberen iets uit te leggen

De eesrte quote welke je tegenkomt geeft het begin aan van de string met je query er in.
Vervolgens kom je een dubbelquote tegen, dit is om te zorgen dat je variabele tussen quotes komt te staan.
Dan een enkelquote die eigenlijk de string beeindigd.
een punt om een variabele achter je string te plakken
een punt om er weer een stringetje achter te plakken
een enkelquote om het begin van die string aan te geven
een dubbelquote om de variabele af te sluiten
een komma als scheiding tussen de 2 variabelen,
een dubbelquote waar de volgende variabele tussen moet komen
een enkelquote om het stringetje te beeindigen
een punt om de variabele er achter te plakken
de variabele zelf
een punt om er weer een string achter te plakken
Een enkelquote als begin van de string
een dubbelquote om de variabele af te sluiten
Een kaaje om je values af te sluiten
en tenslotte een enkelquote om de string te beeindigen.

Zo, en nu hopen dat ik het verhaal goed neer heb gezet
 
Bedankt voor je moeite gast0158 om mij dit allemaal uit te leggen. Op je verhaal over de quotes ben ik aan het kauwen. Het kost me nog moeite alles te vatten.
Ondertussen heb ik de aanpassing die jij aangaf doorgevoerd maar daarmee werkt het geheel nog steeds niet. Ik krijg het op deze manier niet voor elkaar een of meer namen aan de tabel in de database toe te voegen. Voor alle volledigheid ik gebruik nu de volgende scripts:
Voor de html file met het invoerformulier:
HTML:
<form action="insert3.php" method="post">
voornaam: <input type="text" name="voornaam"><br>
achternaam: <input type="text" name="achternaam"><br>

<input type="Submit">
</form>
en voor het insert.php gedeelte:
PHP:
<?php
$username="root";
$password="";
$host = "localhost";
$database="bandleden";

$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];


mysql_connect($host,$username,$password);

$query = 'INSERT INTO bandleden VALUES ("'.$voornaam.'", "'.$achternaam.'")';
mysql_query($query);

mysql_close();
?>
en het resultaat: Het werkt niet.

Nog een andere vraag: Hoe kom je aan het aparte scherm met code incl regelnummers in deze chat?
 
Laatst bewerkt door een moderator:
hier op het forum moet je code altijd tussen code tags plaatsen, dan krijg je vanzelf die mooie kleurtjes en regelnrs.

Voor de code plaats je [code.] en na decodeplaats je [/code.],wel zonder de punt welke tussen de brackets staan.

onderstaande code heb ik getest en werkt :

test.html
Code:
<form action="insert3.php" method="post">
 voornaam: <input type="text" name="voornaam"><br>
 achternaam: <input type="text" name="achternaam"><br>
 
<input type="Submit">
 </form>

insert3.php
Code:
<?php

 $username="root";
 $password="";
 $host = "localhost";
 $database="bandleden";
 
$voornaam=$_POST['voornaam'];
 $achternaam=$_POST['achternaam'];
 

$con = mysql_connect($host,$username,$password)
 or die(mysql_error());
 
mysql_select_db($database)
	or die(mysql_error());
	
$query = 'INSERT INTO bandleden (voornaam, achternaam) VALUES ("'.$voornaam.'", "'.$achternaam.'")';
 mysql_query($query)
 or die(mysql_error());
 
mysql_close();
 ?>


Om problemen te voorkomen ben ik zo vrij geweest om de tabel uit te breiden met een kolom "Id" welke ik autoincrement gemaakt heb. Op die manier kan je nooit dubbele rijen in je tabel krijgen.
 
Hi gast0158, Verdraaid, ik kan mijn ogen neit geloven maar het geheel werkt.
Dank voor je hulp en je geduld met deze zoekende in de duisternis!!
Toon
 
Je maakte geen verbinding met de database, dat gaf het grootste probleem :

Code:
mysql_select_db($database)


Misschien even voor de duidelijkheid,
Eerst maak je verbinding met de server (waar meerdere databases op kunnen staan) :
Code:
$con = mysql_connect($host,$username,$password)

Vervolgens geef je aan welke database je wilt gebruiken op de betreffende server :
Code:
mysql_select_db($database)

Tenslotte geef je in je query aan welke tabel je wilt gebruiken in de betreffende database :
Code:
$query = 'INSERT INTO bandleden (voornaam, achternaam) VALUES ("'.$voornaam.'", "'.$achternaam.'")';


Verder heb ik wat debug info toegevoegd in de vorm van "or die(mysql_error());" waardoor het gemakkelijker uit te vinden is waar en waarom het mis gaat.

Om een regel uit een tabel te kunnen selecteren moet een rij altijd een unieke sleutel hebben, vandaar dat ik het auto-increment Id-veld heb toegevoegd.
 
Beste apcmvw (en gast0158 ;)),

Voor PHP kun je code tussen
PHP:
...
plaatsen.
We hebben ook nog varianten voor HTML (
HTML:
...
), (My)SQL ([sql]...[/sql]) en Javascript ([js]...[/js]).

Dat maakt de zaak wat leesbaarder ;)
 
Laatst bewerkt:
Hi gast0158,

Hierbij kom ik toch nog even terug met dit probleem. Nu ID aan de tabel is toegevoegd krijg ik als foutmelding: "Column count doesn't match value count at row 1". Heb je hiervoor ook een oplossing? Ik heb geprobeerd de query aan te passen met een extra (lege) "" maar dan wordt de eerste kolom leeg gelaten. Wat te doen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan