28. januar 2007 - 01:23Der er
10 kommentarer og 1 løsning
PHP - formular insert
Hejsa
Jeg har brug for lidt hjælp, mht. nedenstående formular. Jeg skal havde indsat det i min database (MySQL), men får en fejl som er: Parse error: syntax error, unexpected T_VARIABLE in /usr/local/psa/home/vhosts/domæne.dk/httpdocs/form.handle.php on line 33
Linie 33 er den linie hvor jeg forsøger at indsætte i databasen. Der mgl. 2 felter som er i databasen, men det er afkrydsningsfelter men kan ikke få MySQL til at æde den.
Scriptet:
if ($_POST['referer'] == 'newsservice') { if (empty($_POST['name']) && empty($_POST['mailaddress'])) { echo '<font color="red">Alle felter er ikke udfyldt!</font>'; } else { if ( !empty( $_POST['kode'] ) && strtoupper( $_POST['kode'] ) == $_SESSION['captcha-code'] ) { $_POST['mailaddress'] = preg_match("/^[\w\.\-_]+@([\w\-_]+\.)+\w+$/i",$_POST['mailaddress']) ? $_POST['mailaddress'] : ''; mysql_query("INSERT INTO newsservice VALUES ('','".$_POST['ip']."',now(),'"$_POST['name']."','".$_POST['mailaddress']."')") or die(mysql_error()); header("Location: newsservice.php); exit; } else { $_SESSION['captcha-code'] = md5( microtime() ); echo "<p>Desværre, koden du skrev, var forkert. Prøv igen.</p>"; } } }
Formularen: <script type="text/javascript"> function getNewImg() { var d = new Date(); document.getElementById('theImg').src = '<?= $_SERVER['PHP_SELF'] ?>?newimg&x' + d.getTime(); } </script>
<form method="post" action="form.handle.php"> <img id="theImg" align="top" src="<?= $_SERVER['PHP_SELF'] ?>?img"> <input type="button" value="Jeg kan ikke læse det!" onclick="getNewImg()"><br> Skriv bogstaverne i billedet: <input type="text" style="width: 60px" name="kode">
Det giver denne nye fejl... Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/local/psa/home/vhosts/domæne.dk/httpdocs/form.handle.php on line 39
Hele filen form.handle.php ser således ud:
<?php
session_start();
include('inc.config.php');
if ($_POST['referer'] == 'comment') { if (empty($_POST['name']) && empty($_POST['text'])) { echo '<font color="red">Alle felter er ikke udfyldt!</font>'; } else { if ( !empty( $_POST['kode'] ) && strtoupper( $_POST['kode'] ) == $_SESSION['captcha-code'] ) { $_POST['email'] = preg_match("/^[\w\.\-_]+@([\w\-_]+\.)+\w+$/i",$_POST['email']) ? $_POST['email'] : ''; mysql_query("INSERT INTO comments VALUES ('','".$_POST['ip']."','".$_POST['name']."','".$_POST['email']."',now(),'".$_POST['text']."','".$_POST['parent']."')") or die(mysql_error()); header("Location: news.display.php?id=".$_POST['parent']); exit; } else { $_SESSION['captcha-code'] = md5( microtime() ); echo "<p>Desværre, koden du skrev, var forkert. Prøv igen.</p>"; } } }
if ($_POST['referer'] == 'newsservice') { if (empty($_POST['name']) && empty($_POST['mailaddress'])) { echo '<font color="red">Alle felter er ikke udfyldt!</font>'; } else { if ( !empty( $_POST['kode'] ) && strtoupper( $_POST['kode'] ) == $_SESSION['captcha-code'] ) { $_POST['mailaddress'] = preg_match("/^[\w\.\-_]+@([\w\-_]+\.)+\w+$/i",$_POST['mailaddress']) ? $_POST['mailaddress'] : ''; mysql_query("INSERT INTO newsservice VALUES ('','".$_POST['ip']."',now(),'".$_POST['name']."','".$_POST['mailaddress']."')") or die(mysql_error()); header("Location: newsservice.php); exit; } else { $_SESSION['captcha-code'] = md5( microtime() ); echo "<p>Desværre, koden du skrev, var forkert. Prøv igen.</p>"; } } }
Det er jo nok det du snakker om, at du har flere felter i tabellen end du putter data i. Du kan med fordel opremse de feltnavne du bruger, her skitse i ren SQL
INSERT INTO tabel (felt1,felt2) VALUES (7,'hejsa')
Nu hjælper det da på det.. Nu skriver den ind i databasen, og det ser nu sådan her ud:
mysql_query("INSERT INTO newsservice VALUES ('','".$_POST['ip']."',now(),'".$_POST['name']."','".$_POST['mailaddress']."','".$_POST['newsweb']."','".$_POST['newsletter']."')") or die(mysql_error());
Der er dog nogle problemer mht. de 2 sidste jeg indsætter. Her skriver den 0 og 0 i datbasen, selv om jeg vælger dem i afkrydsningsfeltet. Hvordan kan det rettes?
erikjacobsen --> Det har jeg efterhånden fundet ud af, men synes nu alligevel at du skal havde tilbuddet hver gang, når du levere et godt stykke arbejde/hjælp. Tak.
Spørgsmålet lukkes....
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.