abonnement Unibet Coolblue Bitvavo
pi_18910471
Probleempje met PHP. (ben nogal een n00b op het gebied, maar ben
hard op weg om hier verandering te brengen.

Ik ben ff aan het proberen om een invoerveld te maken waarbij je de waardes
die ingevuld worden meteen weggeschreven worden naar mijn database.

Dit is de code die ik gemaakt heb (lees: uit een tutorial geripped heb).
Als ik hem laad doet ie wel mooi het formulier weergeven, maar als ik
op de knop "enter information" klik herlaad hij gewoon het veld en schrijft
ie niks weg naar mijn database

Kan iemand mij vertellen wat ik verkeerd doe? Ik dacht zelf dat het iets met
de $PHP_SELF variabele te maken heeft. Heb alleen geen idee hoe ik dat kan
verhelpen.

(ik draai Apache 2.nogwat, PHP4.nogwat en de meest recente versie van MySQL
(maar das niet echt van toepassing).
quote:
<html>

<body>


<?php


if ($submit) {

$db = mysql_connect("localhost", "<login>", "<pass>");

mysql_select_db("test",$db);

$sql = "INSERT INTO deelnemers (naam,telefoon,email) VALUES ('$naam','$telefoon','$email')";

$result = mysql_query($sql);

echo "Thank you! Information entered.\n";

} else{


?>


<form method="post" action="<?php echo $PHP_SELF ?>">

Naam:<input type="Text" name="naam"><br>

Teleoon:<input type="Text" name="telefoon"><br>

E-mail adres:<input type="Text" name="email"><br>

<input type="Submit" name="submit" value="Enter information">

</form>


<?php


}


?>


</body>


</html>
-edit-

kom er nu pas achter dat de [php] en [code] tags niet werken

[ Bericht 13% gewijzigd door Vision op 05-05-2004 18:56:26 ]
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
  woensdag 5 mei 2004 @ 19:04:52 #2
27159 Zjappa
127.0.0.1
pi_18910760
je moet in je if iets hebben als:

if($submit == "value...")
{
insert
}
pi_18910805
maak van if($submit) eens if($_REQUEST["submit"])

de nieuwste versies van PHP hebben "register_globals" uitstaan, daardoor komen alle form variabelen niet meer automatisch als variabelen in je scriptje maar in $_REQUEST.

Dit is overigens een stuk veiliger dan die variabelen direct in je scriptje te krijgen
PHOENIXZ
PHP5 *FUCK MICROSOFT* Viva Mexico! Nissan 100NX
  woensdag 5 mei 2004 @ 19:10:29 #4
529 twi
Het lichtje is uit...
pi_18910858
$result = mysql_query($sql);

moet zijn

$result = mysql_query($sql,$db);

Je moet ook aangeven op welke database-connectie je deze query wilt uitvoeren.
  woensdag 5 mei 2004 @ 19:12:44 #5
529 twi
Het lichtje is uit...
pi_18910901
quote:
Op woensdag 5 mei 2004 19:07 schreef Phoenixz_In_Mexico het volgende:
maak van if($submit) eens if($_REQUEST["submit"])

de nieuwste versies van PHP hebben "register_globals" uitstaan, daardoor komen alle form variabelen niet meer automatisch als variabelen in je scriptje maar in $_REQUEST.

Dit is overigens een stuk veiliger dan die variabelen direct in je scriptje te krijgen
Of $_POST['submit']

Geldt trouwens ook met $_POST['telefoon'] etc.
pi_18910984
quote:
Op woensdag 5 mei 2004 19:10 schreef twi het volgende:
$result = mysql_query($sql);

moet zijn

$result = mysql_query($sql,$db);

Je moet ook aangeven op welke database-connectie je deze query wilt uitvoeren.
Als je maar één connectie aanmaakt is dit volstrekt overbodig (net zoals bij mysql_select_db), omdat PHP dan automatisch voor de laatst aangemaakte verbinding kiest.
pi_18911007
Doe eens dit:
quote:
$sql = "INSERT INTO deelnemers (naam,telefoon,email) VALUES ('$naam','$telefoon','$email')";
$result = mysql_query($sql)
or die("Query kon niet uitgevoerd worden.<br />" . $sql . "<br />" . mysql_error());
Dat "or die" zorgt ervoor dat je iets te zien krijgt als mysql_query() een fout resultaat oplevert. De functie mysql_error() retourneert de error die MySQL doorgeeft (mocht die er zijn).
pi_18911009
quote:
Op woensdag 5 mei 2004 19:07 schreef Phoenixz_In_Mexico het volgende:
maak van if($submit) eens if($_REQUEST["submit"])

de nieuwste versies van PHP hebben "register_globals" uitstaan, daardoor komen alle form variabelen niet meer automatisch als variabelen in je scriptje maar in $_REQUEST.

Dit is overigens een stuk veiliger dan die variabelen direct in je scriptje te krijgen
dit werkt idd wel. thx

dus als ik het goed begrijp is $_REQUEST een variabele waarin de verzonden info tijdelijk opgeslagen wordt en weer oproepbaar is? (als ik begrijp wat er nou psies gebeurt maak ik misschien niet meer dezelfde fouten )
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
pi_18911064
quote:
Op woensdag 5 mei 2004 19:18 schreef Vision het volgende:
dus als ik het goed begrijp is $_REQUEST een variabele waarin de verzonden info tijdelijk opgeslagen wordt en weer oproepbaar is? (als ik begrijp wat er nou psies gebeurt maak ik misschien niet meer dezelfde fouten )
Als je gegevens verstuurt via de URL, dan gebruik je $_GET:

index.php?waarde=10

$waarde = intval($_GET['waarde']);

Als je gegevens verstuurt via een POST-formulier (method="post") dan gebruik je $_POST:

<input type="text" name="waarde" />

$waarde = $_POST['waarde']; //al dan niet met strip_slashes();

$_REQUEST is een variabele die deze combineert, maar over 't algemeen wordt aangeraden specifieker te zijn en dus $_POST of $_GET te gebruiken.
pi_18911127
quote:
Op woensdag 5 mei 2004 19:20 schreef JeRa het volgende:

[..]

Als je gegevens verstuurt via de URL, dan gebruik je $_GET:

index.php?waarde=10

$waarde = intval($_GET['waarde']);

Als je gegevens verstuurt via een POST-formulier (method="post") dan gebruik je $_POST:

<input type="text" name="waarde" />

$waarde = $_POST['waarde']; //al dan niet met strip_slashes();

$_REQUEST is een variabele die deze combineert, maar over 't algemeen wordt aangeraden specifieker te zijn en dus $_POST of $_GET te gebruiken.
duidelijk!

thx iedereen. (verschillende manier leren kan nooit kwaad)
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
pi_18911455
misschien ook wel leuk voor je om een query uittevoeren
quote:
if ( !$result = mysql_query($sql, $b) )
{
echo mysql_error();
exit;
}
mocht er iets mis gaan vertelt die je het meteen
pi_18911547
quote:
Op woensdag 5 mei 2004 19:18 schreef Vision het volgende:

[..]

dit werkt idd wel. thx

dus als ik het goed begrijp is $_REQUEST een variabele waarin de verzonden info tijdelijk opgeslagen wordt en weer oproepbaar is? (als ik begrijp wat er nou psies gebeurt maak ik misschien niet meer dezelfde fouten )
Niet helemaal..

Ik vergat overigens (bedankt twi, voor de opmerking) ook $_POST en $_GET, en $_COOKIE, etc..

Dit zijn de super global arrays binnen PHP. Deze arrays zijn van overal toegankelijk.

$_POST bevat altijd alle POST (form) variabelen
$_GET bevat altijd alle GET (via URL bijvoorbeeld) variabelen
$_COOKIE bevat altijd alle cookies naar je site
$_FILES bevat de geuploade files

etc..

$_REQUEST is een combinatie van al deze bovenstaande arrays, met uitzondering van $_FILES (iig in PHP5)

en idd, meestal (niet altijd) is het beter / handiger $_POST te gebruiken ipv $_REQUEST

[ Bericht 4% gewijzigd door Phoenixz_In_Mexico op 05-05-2004 19:44:19 (IEK!) ]
PHOENIXZ
PHP5 *FUCK MICROSOFT* Viva Mexico! Nissan 100NX
pi_18911918
Overigens, een serieus bedoelde goede hint:

1) ga naar www.w3schools/php en doe DIE php tutorial, das een goede tutorial

2) Ga naar php.net, naar documentation, en download de engelse / nederlandse (whatever suits your fetish) windows help handleiding (*.chm), en lees devolgende hoofdstukken door:
- Getting started
- Language reference
- Security
- Features
- FAQ
en dan van de function reference, lees
- Array functions
- String functions
- mysql functions

LIJKT veel, maar ik heb dat in een middagje gedaan, en je weet gelijk 90% van alles wat je zou moeten weten (en hoef je ook geen n00b vragen meer te stellen)
PHOENIXZ
PHP5 *FUCK MICROSOFT* Viva Mexico! Nissan 100NX
pi_18912212
thx. morgen die tutorials eens doornemen. scheelt een hoop (hoop ik )
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
pi_18912377
gaat je een hoop schelen..

kijk anders ff in dit topic [PHP] Tips voor n00bs!

khebber ff een apparte voor geopend
PHOENIXZ
PHP5 *FUCK MICROSOFT* Viva Mexico! Nissan 100NX
pi_19073001
en *schop*

na wat tutorials te hebben doorgelopen zit ik met weer een (zelfde soort) probleem. Heb de code wat aangepast zodat ik 't wat overzichtelijker vind, maar het komt op hetzelfde neer.
quote:
<html>

<body>

<?php

$location = "localhost";
$username = "<user>";
$password = "<pass>";
$database = "<db>";

$conn = mysql_connect("$location", "$username", "$password");
if (!$conn) die ("kan geen verbinding krijgt met de mysql server");
mysql_select_db($database,$conn) or die ("Kan het databeest niet openen");

$insert = "INSERT INTO deelnemers (naam,telefoon,email)
VALUES ('$naam','$telefoon','$email')";

?>

<form method="post" action="<?php echo $PHP_SELF ?>">

Naam:<input type="Text" name="naam" value="<?php echo $naam ?>"><br>

Teleoon:<input type="Text" name="telefoon" value="<?php echo $telefoon ?>"><br>

E-mail adres:<input type="Text" name="email" value="<?php echo $email ?>"><br>

<input type="Submit" name="submit" value="Enter information">

</form>

<?php

if ($_POST["submit"]) {

mysql_query($insert) or die ("Kan de data niet aan de tabel toe voegen");


}

?>


</body>

</html>
Als ik wat invoer dan krijg ik in eerste instantie geen foutmelding. Als ik dan in de database kijk of de juiste informatie weggeschreven is dan is dit niet het geval. Er staat wel een nieuwe regel in maar bij telefoon staat "0" en bij naam/email staat helemaal niets.

Als ik het script dan nog een keer probeer uit te voeren (met andere gegevens ingevuld uiteraard) krijg ik de foutmelding "Kan de data niet aan de tabel toe voegen". Op zich logisch als ie niet die waardes wegschrijft die ik invoer. Dan zou ik dus een 2e regel met niets invoeren en dat gaat niet omdat e-mail adres een unique sleutel is.

Ik zie alleen niet (in) wat ik nou fout doe en waarom die waardes dus niet overgenomen worden. Iemand die mij kan vertellen wat ik precies fout doe?

[ Bericht 2% gewijzigd door Vision op 12-05-2004 15:00:25 ]
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
pi_19074011
Je kunt ook je register_globals aanzetten in je php.ini ...

Dan zijn die variabelen gewoon aanspreekbaar op hun eigen naam .. dus $_GET['submit'] is dan gewoon $submit.

Wordt afgeraden door PHP, maar aangezien ze $_REQUEST ook weer inbouwen wat eigenlijk hetzelfde doet is dat een beetje bullshit imho.
pi_19074161
quote:
Op woensdag 12 mei 2004 15:27 schreef rolandow het volgende:
Je kunt ook je register_globals aanzetten in je php.ini ...

Dan zijn die variabelen gewoon aanspreekbaar op hun eigen naam .. dus $_GET['submit'] is dan gewoon $submit.

Wordt afgeraden door PHP, maar aangezien ze $_REQUEST ook weer inbouwen wat eigenlijk hetzelfde doet is dat een beetje bullshit imho.
dat was niet echt (meer) de vraag, maar ik wist dat je idd register_globals kan aanzetten. doe dat liever niet, aangezien het wel niet zonder reden afgeraden zal worden.
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
  woensdag 12 mei 2004 @ 17:20:12 #19
1607 Ali Salami
Altijd actueel
pi_19076792
Die database, wat voor velden zijn dat?
Wat je sowieso kunt doen in dit geval is even kijken of de query die je wilt wel wortd uitgevoerd: print $query

[ Bericht 60% gewijzigd door Ali Salami op 12-05-2004 17:30:32 ]
Hatsjoe!
pi_19079087
quote:
Op woensdag 12 mei 2004 17:20 schreef Ali Salami het volgende:
Die database, wat voor velden zijn dat?
Wat je sowieso kunt doen in dit geval is even kijken of de query die je wilt wel wortd uitgevoerd: print $query
de tabel deelnemers bestaat uit de velden naam, telefoon en email. (heb ik wel 100x nagekeken of ik geen spelfout gemaakt heb). staat zowel in de php file als in de database goed.

naam/email = varchars en telefoon = decimals. Ik kan vanuit phpmyadmin wel dingen invoeren via "insert". die komen dan ook goed in de database te staan. Dus daar ligt 't denk ik niet aan.
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
pi_19079925
$insert = "INSERT INTO deelnemers (naam,telefoon,email)
VALUES ('$naam','$telefoon','$email')";

hier staan anders geen $_POST[] || $_REQUEST[] omheen..
  woensdag 12 mei 2004 @ 22:15:30 #22
1607 Ali Salami
Altijd actueel
pi_19085323
quote:
Op woensdag 12 mei 2004 18:59 schreef Vision het volgende:

[..]

de tabel deelnemers bestaat uit de velden naam, telefoon en email. (heb ik wel 100x nagekeken of ik geen spelfout gemaakt heb). staat zowel in de php file als in de database goed.

naam/email = varchars en telefoon = decimals. Ik kan vanuit phpmyadmin wel dingen invoeren via "insert". die komen dan ook goed in de database te staan. Dus daar ligt 't denk ik niet aan.
Spelfout had je sowieso niet gemaakt, aangezien de query wel wordt uitgevoerd
Maar wat Arjen zegt, je hebt er geen $_POSt[] voor
Hatsjoe!
pi_19087798
uhm, ik begrijp even niet waar ik nog een $_POST[] voor moet zetten?

Voor die $insert?
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
pi_19088211
Zet deze code:

foreach ($_REQUEST as $k=>$v)
{
if (!isset($GLOBALS[$k]))
{
${$k}=$v;
}

}

na $database = "<db>" en je zal zien dat het wel werkt.
pi_19089337
quote:
Op woensdag 12 mei 2004 23:35 schreef folfas het volgende:
Zet deze code:

foreach ($_REQUEST as $k=>$v)
{
if (!isset($GLOBALS[$k]))
{
${$k}=$v;
}

}

na $database = "<db>" en je zal zien dat het wel werkt.
hij werkt idd. thx men!!!

zou je me ook nog kunnen uitleggen wat het precies doet?
Als de natuur perfect was...
... zouden alle anorexialijders automatisch in vluchtelingenkampen worden geboren
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')