Avatar billede ny89 Nybegynder
23. august 2012 - 10:24 Der er 1 kommentar og
1 løsning

MySQL

Nogen der kan hjælpe med at få forbindelse til min database.. Lige nu kan jeg ikke få nogle data overført til min tabel besked. Den kan kun sende mails til min email hver gang, der bliver skrevet en besked. Her er mit script:





<?php


$DBhost = "localhost";
$DBuser = "*";
$DBpass = "*";
$DBname = "*";
$table = "besked";

$conn = mysql_connect("$DBhost","$DBuser","$DBpass", true);
if (! $conn ) die( 'Kunne ikke forbinde: ' . mysql_error ());
mysql_select_db("$DBname")or die('Kunne ikke finde database');


if(isset($_POST['submit']))
{
$navn = $_POST['navn'];
$email = $_POST['email'];
$sendbesked = $_POST['sendbesked'];
$sqlquery = "INSERT INTO ". $table ." (navn, email, sendbesked) VALUES (' " .$navn. "', '".$email."', ' ".$sendbesked."')";
$results = mysql_query("$sqlquery");
echo "Sendt";
}
else
{
echo "ikke udfoert";
}


mysql_close($conn);




function printform($data, $errors) {
    ?>
    <form action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
   
    <? if($errors['navn']) print '<b>'.$errors['navn'].'</b><br>'; ?>
    Navn: <input type="text" name="navn" value="<?=$data['navn'];?>"><br><br>


    <? if($errors['email']) print '<b>'.$errors['email'].'</b><br>'; ?>
    E-mail: <input type="text" name="email" value="<?=$data['email'];?>"><br><br>

 

    <? if($errors['sendbesked']) print '<b>'.$errors['sendbesked'].'</b><br>'; ?>
    Besked:<br> <textarea width="1%" rows="20" cols="50%" name="sendbesked" value="<?=$data['bbesked'];?>"></textarea>

    <input type="submit" name="submitted" value="Send">
    </form>
    <?
}







function _send($to, $data) {
    //$subject = $data['emne'];
    $headers = 'From: '.$data['navn'].' <'.$data['email'].'>';
    $message = 'Besked fra kontakt formularen

Navn:    '.$data['navn'].'
E-mail:  '.$data['email'].'

'.$data['sendbesked'];

    mail($to, $message, $headers);
}




function _data() {
    return array(
        'navn' => $_POST['navn'],
        'email' => $_POST['email'],
        'sendbesked' => $_POST['sendbesked']
    );
}




function _validate($data) {
    $errors = array();
    if(!$data['navn']) $errors['navn'] = 'Navn skal udfyldes';
    if(!$data['email']) $errors['email'] = 'E-mail skal udfyldes';
    if(!$data['sendbesked']) $errors['sendbesked'] = 'Besked skal udfyldes';
    return $errors;
}

if($_POST['submitted']) {
    $data = _data();
    $errors = _validate($data);
    if(count($errors)) {
        printform($data, $errors);
    } else {
        _send('mail@mail.dk', $data);
        print 'Tak for din henvendelse, jeg har modtaget din besked!';
    }
} else {
    printform(array(), array());
}


?>
Avatar billede olsensweb.dk Ekspert
24. august 2012 - 15:05 #1
er du sikker på din server stadig supporterer short open tag ?? slået fra pr default
selv om den skulle gøre det så lad være med at bruge det
ret alle dine
<?  til <?php
<?= til <?php echo

vend dig af med at bruge det gamle mysql API, brug MysqlI istedet, da det gamle API er på vej ud http://dk.php.net/manual/en/mysqlinfo.api.choosing.php
det lille bump på vejen er at bruge Procedural style det er bare at udskifte samtlige mysql_xxxxx med mysqli_xxxxx og lige se efter om nogle at parameterne er ændret.
den eneste function jeg lige kan huske er ændret er mysql_query($sql,$conn); der bliver til mysqli_query($conn, $sql);  læg mærke til  $conn og sql har byttet plads
bedre er det selvføgelig at bruge "Object oriented style", gerne ifm "Prepared Statements" eller PDO


dette er fejlen:
din submit knap hedder submitted
    <input type="submit" name="submitted" value="Send">
   
så ændre
if(isset($_POST['submit'])){
til
if(isset($_POST['submitted'])){
Avatar billede ny89 Nybegynder
14. april 2013 - 17:09 #2
Lukker tråden :)
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
Computerworld tilbyder specialiserede kurser i database-management

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