Vision | woensdag 5 mei 2004 @ 18:48 |
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:-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 ] | |
Zjappa | woensdag 5 mei 2004 @ 19:04 |
je moet in je if iets hebben als: if($submit == "value...") { insert } | |
Phoenixz_In_Mexico | woensdag 5 mei 2004 @ 19:07 |
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 | |
twi | woensdag 5 mei 2004 @ 19:10 |
$result = mysql_query($sql); moet zijn $result = mysql_query($sql,$db); Je moet ook aangeven op welke database-connectie je deze query wilt uitvoeren. | |
twi | woensdag 5 mei 2004 @ 19:12 |
quote:Of $_POST['submit'] Geldt trouwens ook met $_POST['telefoon'] etc. | |
JeRa | woensdag 5 mei 2004 @ 19:16 |
quote: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. | |
JeRa | woensdag 5 mei 2004 @ 19:18 |
Doe eens dit:quote: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). | |
Vision | woensdag 5 mei 2004 @ 19:18 |
quote: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 ) ![]() | |
JeRa | woensdag 5 mei 2004 @ 19:20 |
quote: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. | |
Vision | woensdag 5 mei 2004 @ 19:23 |
quote:duidelijk! ![]() thx iedereen. (verschillende manier leren kan nooit kwaad) ![]() | |
Pakspul | woensdag 5 mei 2004 @ 19:39 |
misschien ook wel leuk voor je om een query uittevoerenquote:mocht er iets mis gaan vertelt die je het meteen ![]() | |
Phoenixz_In_Mexico | woensdag 5 mei 2004 @ 19:42 |
quote: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_In_Mexico | woensdag 5 mei 2004 @ 19:57 |
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) | |
Vision | woensdag 5 mei 2004 @ 20:08 |
thx. morgen die tutorials eens doornemen. scheelt een hoop (hoop ik ![]() | |
Phoenixz_In_Mexico | woensdag 5 mei 2004 @ 20:14 |
gaat je een hoop schelen.. kijk anders ff in dit topic [PHP] Tips voor n00bs! khebber ff een apparte voor geopend | |
Vision | woensdag 12 mei 2004 @ 14:46 |
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: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 ] | |
rolandow | woensdag 12 mei 2004 @ 15:27 |
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. | |
Vision | woensdag 12 mei 2004 @ 15:33 |
quote: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. | |
Ali Salami | woensdag 12 mei 2004 @ 17:20 |
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 ] | |
Vision | woensdag 12 mei 2004 @ 18:59 |
quote: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. | |
Arjan321 | woensdag 12 mei 2004 @ 19:29 |
$insert = "INSERT INTO deelnemers (naam,telefoon,email) VALUES ('$naam','$telefoon','$email')"; hier staan anders geen $_POST[] || $_REQUEST[] omheen.. | |
Ali Salami | woensdag 12 mei 2004 @ 22:15 |
quote:Spelfout had je sowieso niet gemaakt, aangezien de query wel wordt uitgevoerd ![]() Maar wat Arjen zegt, je hebt er geen $_POSt[] voor ![]() | |
Vision | woensdag 12 mei 2004 @ 23:21 |
uhm, ik begrijp even niet waar ik nog een $_POST[] voor moet zetten? Voor die $insert? | |
folfas | woensdag 12 mei 2004 @ 23:35 |
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. | |
Vision | donderdag 13 mei 2004 @ 00:10 |
quote:hij werkt idd. ![]() ![]() zou je me ook nog kunnen uitleggen wat het precies doet? ![]() | |
Ali Salami | donderdag 13 mei 2004 @ 00:36 |
quote:$insert = "INSERT INTO deelnemers (naam,telefoon,email) VALUES ('$_POST[naam]','$_POST[telefoon]','$_POST[email]')"; Je gebruikt hetzelfde namelijk wel bij submit -> $_POST[submit], waarom dan niet bij de rest? Dat zijn namelijk dezelfde soort waarden als 'submit' ![]() quote:Hij zorgt dat alle $_ waarden als gewone waarden beschikbaar worden, dus alle $_POST[waarde] als $waarde. Bovenstaande oplossing zou evengoed moeten werken. ![]() | |
Vision | donderdag 13 mei 2004 @ 06:44 |
quote:klinkt idd logisch. thx, kan ik iig weer verder ![]() | |
folfas | donderdag 13 mei 2004 @ 08:49 |
quote: quote: ![]() | |
Vision | dinsdag 25 mei 2004 @ 10:25 |
Ben ik weer ![]() Volgend vraagje: Is het mogelijk om data uit 1 form weg te schrijven naar 2 verschillende tabellen in mijn database? En zo ja, hoe maak ik dan de if statement? Zoiets als dit: quote:Ik krijg geen php errors als ik het script wil uitvoeren maar wel de opmerking "Kan insert2 niet toevoegen aan de db". Als ik daarna in de database ga kijken heeft ie alle gegevens uit $insert1 ingevoerd maar de gegevens uit $insert2 niet. Iemand enig idee? | |
slindenau | dinsdag 25 mei 2004 @ 13:37 |
maak er iig ... or die( mysql_error() ); van, dan krijg je de foutmelding te zien ![]() | |
Vision | dinsdag 25 mei 2004 @ 13:52 |
quote:daar komt de melding "Query was empty" uit. mijn php zooi nog maar eens nalopen dan. -edit- helemaal vreemd aangezien ik een van de ingevoerde waardes in beide tabellen wil toevoegen. Aangezien die waarde wel in de $insert1 wordt meegenomen snap ik niet helemaal waarom die nou in de 2e query als "empty" wordt gezien. de sql query is precies hetzelfde (alleen verschillen er 2 variabelen). *hoofdbreekt* [ Bericht 30% gewijzigd door Vision op 25-05-2004 13:58:13 ] | |
Chandler | dinsdag 25 mei 2004 @ 14:37 |
doe eens het volgende na iedere mysql_query($nogwat) die je aanroept stel je query is iets van dit $query = mysql_query($sql_query1); maak dan van de errorhandler dit or die ($sql_query1 ."<br/><br/>". mysql_error()); dan zie je als het goed is je query en de fout, indien niet, dan bestaat je query variable niet ![]() | |
Vision | dinsdag 25 mei 2004 @ 15:38 |
quote:krijg wederom bij de laatste query de melding "Query was empty" en een paar witregels erboven. | |
Me_Wesley | dinsdag 25 mei 2004 @ 16:45 |
quote:Dan staat er dus niks in $insert2 ![]() Wat is de volledige code? | |
Chandler | woensdag 26 mei 2004 @ 08:32 |
quote:inderdaad, dan lijkt het er op dat je query leeg is hé... ![]() | |
Vision | woensdag 26 mei 2004 @ 10:22 |
quote:maar dat is dus niet het geval. Tenzij ik ergens (1000x) overheen heb gekeken verschilt de query (buiten 2 waardes) geen zak met de eerste query die wel gewoon werkt. mijn query: quote:* Vision wordt er gek van ![]() | |
Chandler | woensdag 26 mei 2004 @ 12:42 |
zoek de xxx verschillen ![]() quote:Enjoy! ![]() | |
Vision | woensdag 26 mei 2004 @ 14:58 |
Als ik hem zo letterlijk gebruik krijg ik deze melding: Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\test2.php:3) in C:\Program Files\Apache Group\Apache2\htdocs\test2.php on line 28. Daarna haal ik dit stuk weg: quote:aangezien daar de fout in lijkt te zitten. en dan voert ie iig de NAW gegevens in in de 'deelnemers' tabel. De $email waarde schrijft ie ook weg naar de tabel 'test', maar de waardes $UitslagThuis en $UitslagUit blijven in de database op 0 staan, ipv de waardes die ik ingevoerd had. Ik krijg echter geen error, en de pagina herlaad zich niet (wsl omdat ik die header regel met $_SERVER['PHP_SELF'] heb verwijdert ![]() | |
slindenau | woensdag 26 mei 2004 @ 15:05 |
quote:Deze error komt omdat "<html><head>" boven je php code staat...zet deze voor de grap eens onder het stukje waar header() staat ![]() (ik stel voor: de regel boven <form...>) En maak van $_POST["UitslagThuis"] en $_POST["UitslagUit"] eens $_POST["Thuis"] en $_POST["Uit"]... | |
Vision | woensdag 26 mei 2004 @ 15:19 |
quote:nu doet hij het idd wel. ![]() Chandler/Slindenau: hardstikke bedankt. Sorry als mijn vragen soms wat stom over komen maar ik ben (zoals de tag in de topictitel al aangeeft) een mega n00b op gebied van PHP/MySQL ![]() |