Avatar billede papsi Nybegynder
22. august 2014 - 13:40 Der er 2 kommentarer

Php form script MySql+Email

Hej alle

Jeg håber nogle af jer med stor indsigt enten kan guide mig eller ved præcis hvor et script A'la nedenstående kan hentes.
Jeg har brug for et enkelt script hvor i der kan besvares 8 spørgsmål med en score fra 1 til 7 samt et kommentar felt. Når formen er udfyldt skal den gemmes i en MySql table samt fremsendes til en fast email. Ikke stort og kompliceret.

Takker mange gange.
Avatar billede repox Seniormester
24. august 2014 - 21:29 #1
Har du selv prøvet noget?
Avatar billede Rune1983 Ekspert
05. september 2014 - 13:20 #2
Prøv dette. Undskyld mit brug af table i html. Jeg er lidt skadet der.
Skulle være dynamisk lavet så du kan tilføje flere end de 8 spørgsmål. Og endvidere dynamisk med hensyn til de 1 til 7 i svar muligheder.
Har skrevet kommentar ud for den variabel du skal ændre.

Håber det kan hjælpe.

Database tabeller:
CREATE TABLE IF NOT EXISTS `IndsendData` (
  `IndsendData_ID` int(10) NOT NULL AUTO_INCREMENT,
  `IndsendData_Kommentar` mediumtext COLLATE utf8_danish_ci,
  `IndsendData_Dato` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`IndsendData_ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `IndsendData_Svar` (
  `DataSvar_ID` int(10) NOT NULL AUTO_INCREMENT,
  `IndsendData_ID` int(10) NOT NULL,
  `Svaret` int(2) NOT NULL,
  PRIMARY KEY (`DataSvar_ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=1 ;

<?php
$db_host="localhost";
$db_user="databasebruger";
$db_pass="databasekode";
$db_name="databasenavn";
mysql_connect("$db_host","$db_user","$db_pass");
mysql_select_db("$db_name");
mysql_query("SET NAMES utf8");

$AntalSpoergsmaal = array("Spørgsmål 1","Spørgsmål 2","Spørgsmål 3","Spørgsmål 4","Spørgsmål 5","Spørgsmål 6","Spørgsmål 7","Spørgsmål 8"); // Skriv den mængde spørgsmål du ønsker. Brug "" og adskil med ,
if($_POST['SendData'] == "data")
{
    $GemData = "";
    for ($i=0; $i < count($AntalSpoergsmaal); $i++) // Kontrol om alle spørgsmål er besvaret med prikken
    {
        $PostData = "svar$i";
        if($_POST[$PostData] == ""){
            if($GemData == ""){
                $GemData = "$AntalSpoergsmaal[$i] ikke besvaret";
            }else{
                $GemData = "$GemData<br />$AntalSpoergsmaal[$i] ikke besvaret";
            }
        }
    }
   
    if($GemData == "")
    {
        $result = mysql_query("SHOW TABLE STATUS LIKE 'IndsendData'");
        $row = mysql_fetch_array($result);
        $nextId = $row['Auto_increment'];
       
        $sql_kolloner="IndsendData_Kommentar"; // De kolonner der bliver indsat ting i
        $sqlkode="'$_POST[Kommentar]'"; // Indholdet af de forskellige variabler
        $create_object2=mysql_query("INSERT INTO IndsendData ($sql_kolloner) Values ($sqlkode)");
        if($create_object2)
        {
            print "Indsat data<br />";
        }
        else{print "Noget gik galt ved indsættelse af data i databasen<br />";}
       
        for ($i=0; $i < count($AntalSpoergsmaal); $i++) // Kontrol om alle spørgsmål er besvaret med prikken
        {
            $PostData = "svar$i";
            $sql_kolloner="IndsendData_ID,Svaret"; // De kolonner der bliver indsat ting i
            $sqlkode="$nextId,$_POST[$PostData]"; // Indholdet af de forskellige variabler
            $create_object2=mysql_query("INSERT INTO IndsendData_Svar ($sql_kolloner) Values ($sqlkode)");
            if($create_object2)
            {
                print "Indsat data<br />";
            }
            else{print "Noget gik galt ved indsættelse af data i databasen<br />";}
        }
        include("class/PHPMailer/class.phpmailer.php"); // Download PHPMailer og inkluder class
        $email = new PHPMailer();
        $email->From      = 'Sendt fra email';
        $email->FromName  = 'Spørgeskemaet';
        $email->Subject  = "Nyt data indtastet og gemt";
       
        // HTML body
       
        $body  = "Data indsendt.<br /><table>";
        for ($u=0; $u < count($AntalSpoergsmaal); $u++) {
            $PostData = "svar$u";
            $body .= "<tr>";
            $body .= "<td>$AntalSpoergsmaal[$u]</td>";
            $body .= "<td>$_POST[$PostData]</td>";
            $body .= "</tr>";
        }
        $body .= "<tr>";
        $body .= "<td>Kommentar</td>";
        $body .= "<td>$_POST[Kommentar]</td>";
        $body .= "</tr>";
        $body .= "</table>";
       
        $email->CharSet="UTF-8";
        $email->IsHTML(true);
        $email->Body    = $body;
        $email->AddAddress('DIN Email');
        $email->Send();
        /////////////////////////////////////
    }else{
        ?><script type="text/javascript">alert(<?php print "$GemData"; ?>);</script><?php
    }
}
?>
<form enctype='multipart/form-data' method='post' action='form.php'>
<table width="100%">
    <tr><td colspan="2"><h1>Udfyld form</h1></td></tr>
    <?php
    $AfstandMellemPrikker = 50; // Juster afstanden mellem prikker i px
    $AntalPrikker = 7; // Skriv antallet af prikker til svar
    for ($i=0; $i < count($AntalSpoergsmaal); $i++)
    {
        if($i == 0){
            ?>
            <tr style="font-weight: bold;">
                <td>Spørgsmål</td>
                <td>
                    <table>
                        <tr>
                            <?php
                            for ($y=1; $y <= $AntalPrikker; $y++) {
                                ?><td align="center" width="<?php print "$AfstandMellemPrikker"; ?>"><?php print "$y"; ?></td><?php
                            }
                            ?>
                        </tr>
                    </table>
                </td>
            </tr>
            <?php
        }
        ?>
        <tr>
            <td><?php print "$AntalSpoergsmaal[$i]"; ?></td>
            <td>
                <table>
                    <tr>
                        <?php
                        for ($y=1; $y <= $AntalPrikker; $y++)
                        {
                            ?>
                            <td align="center" width="<?php print "$AfstandMellemPrikker"; ?>">
                                <input type="radio" name="<?php print "svar$i"; ?>" value="<?php print "$y"; ?>" />
                            </td>
                            <?php
                        }
                        ?>
                    </tr>
                </table>
            </td>
        </tr>
        <?php
    }
    ?>
    <tr>
        <td>Kommentar</td>
        <td>
            <textarea name="Kommentar" COLS=60 rows="10" class="form"></textarea>
        </td>
    </tr>
    <tr>
        <td><input type="hidden" name="SendData" value="data" /></td>
        <td><input type="submit" value="Indsend svar" /></td>
    </tr>
</table>
</form>
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

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