Avatar billede super-mann Juniormester
28. januar 2007 - 01:23 Der 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">

<table border="0" width="104%">
  <tr>
    <td width="105%" colspan="3"><b>Generalinformation</b></td>
  </tr>
  <tr>
    <td width="15%">Navn</td>
    <td width="3%">:</td>
    <td width="87%"> <input type="text" name="name" style="width: 211; height: 23" size="20">
    </td>
  </tr>
  <tr>
    <td width="15%">E-mail</td>
    <td width="3%">:</td>
    <td width="87%"> <input type="text" name="mailaddress" style="width: 211; height: 23" size="20"></td>
  </tr>
  <tr>
    <td width="15%" vAlign="top">&nbsp;</td>
    <td width="3%" vAlign="top"></td>
    <td width="87%">
    </td>
  </tr>
  <tr>
    <td width="105%" vAlign="top" colspan="3"><b>Tilmeldingsmuligheder</b></td>
  </tr>
  <tr>
    <td width="15%" vAlign="top">Nyheder</td>
    <td width="3%" vAlign="top">:</td>
    <td width="87%">

<input type="checkbox" name="newsweb" value="ON"> (nyheder på
hjemmesiden/forsiden)</td>
  </tr>
  <tr>
    <td width="15%" vAlign="top">Nyhedsbrev</td>
    <td width="3%" vAlign="top">:</td>
    <td width="87%">

<input type="checkbox" name="newsletter" value="ON"></td>
  </tr>
  <tr>
    <td width="15%" vAlign="top">&nbsp;</td>
    <td width="3%" vAlign="top"></td>
    <td width="87%">

    </td>
  </tr>
  <tr>
    <td width="15%" vAlign="top"></td>
    <td width="3%" vAlign="top"></td>
    <td width="87%">

<input type="submit" value="Tilmeld"> <input type="reset" value="Slet alt" name="B1"></td>
  </tr>
</table>

<input type="hidden" name="referer" value="newsservice">
<input type="hidden" name="ip" value="<?php print $_SERVER['REMOTE_ADDR']; ?>">
</form>
Avatar billede erikjacobsen Ekspert
28. januar 2007 - 01:27 #1
mysql_query("INSERT INTO newsservice VALUES ('','".$_POST['ip']."',now(),'".$_POST['name']."','".$_POST['mailaddress']."')") or die(mysql_error());
Avatar billede super-mann Juniormester
28. januar 2007 - 01:32 #2
erikjacobsen -->

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>";
        }
    }
}

?>
Avatar billede erikjacobsen Ekspert
28. januar 2007 - 01:35 #3
Ja, der er sikkert flere fejl. Fx ser denne linie ud til at mangle en "

            header("Location: newsservice.php);
Avatar billede super-mann Juniormester
28. januar 2007 - 01:38 #4
Hvis jeg sætter " efter .php på ovenstående, så får jeg denne fejl:

Column count doesn't match value count at row 1
Avatar billede erikjacobsen Ekspert
28. januar 2007 - 01:46 #5
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')
Avatar billede super-mann Juniormester
28. januar 2007 - 01:58 #6
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?
Avatar billede erikjacobsen Ekspert
28. januar 2007 - 09:11 #7
Afkrydningsfelter og SQL har det ikke umiddelbart så godt sammen.

Et afkrydsningsfelt kommer ikke med over, hvis der ikke er sat kryds i det. Og du sætter tal ind??

Brug en if-sætning til at afgøre om der er kryds, og sæt en variabel til 0 eller 1 (hvis det er hvad der skal i feltet).
Avatar billede super-mann Juniormester
28. januar 2007 - 13:23 #8
Jeg sætter tal ind, fordi det er det min admin i MySQL gør, når jeg vælger funktionen "BOOL". 0 ikke valgt, 1 betyder funktionen er valgt.

Måske du kunne hjælpe med en if-sætning?
Avatar billede super-mann Juniormester
30. august 2007 - 13:44 #9
erikjacobsen --> Problemet blev løst, så hvis du smider et svar så du kan få nogle point og jeg dermed kan lukke spørgsmålet, vil det være super :-)
Avatar billede erikjacobsen Ekspert
30. august 2007 - 21:50 #10
Jeg samler slet ikke på point, tak.
Avatar billede super-mann Juniormester
30. august 2007 - 22:06 #11
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....
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester