Avatar billede Kallesen Juniormester
26. januar 2017 - 13:01 Der er 6 kommentarer og
1 løsning

Insert data fra html FORM, med flere input kilder

Hej Experter.

Jeg sidder lidt med en underlig fornemmelse i maven, jeg har for nogle år tilbage programmeret PHP, men lige nu må jeg indrømme at jeg er strandet lidt i min kode.

Jeg har en kode som ser således ud:

                <div class="main-login main-center">
                    <form class="form-horizontal" method="post" action="#">
                       
                        <div class="form-group">
                            <label for="name" class="cols-sm-2 control-label">M-Nummer</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="fa fa-user fa" aria-hidden="true"></i></span>
                                    <input type="text" class="form-control" name="mnummer" id="mnummer"  placeholder="M-Nummer"/>
                                </div>
                            </div>
                        </div>

                       

                        <div class="form-group">
                            <label for="spm" class="cols-sm-2 control-label">Spørgsmål?</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="glyphicon glyphicon-pushpin" aria-hidden="true"></i></span>
                                    <select class="form-control" data-max-options="1" name="spm" id="spm">
                                      <optgroup label="RAS">
                                    <option value="FAKYDL">FAKYDL</option>
                                      <option value="FORYDL">FORYDL</option>
                                    <option value="REGNANF">REGNANF</option>
                                    <option value="REGNLIN">REGNLIN</option>                                   
                                      <option value="REGDIV">REGDIV</option>
                                    <option value="BEMRK">BEMÆRK</option>
                                    <optgroup label="eOrdre">
                                    <option value="KUNDEOVERBLIK">KUNDEOVERBLIK</option>               
                                      <option value="ORDRE">ORDRE</option>
                                      <option value="VISRET">VIS/RET ABONNEMENT</option>
                                    <option value="FORBRUG">MOBIL FORBRUG</option>
                                    </optgroup>
                                    </select>



                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="username" class="cols-sm-2 control-label">Fejlen blev afhjulpet af?</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="glyphicon glyphicon-check" aria-hidden="true"></i></span>
                                    <select class="form-control" data-max-options="1">
                                      <optgroup label="Afhjulpet af">
                                    <option value="AGENT">AGENT</option>
                                      <option value="COACH">COACH</option>
                                    <option value="FEJLMELDT">FEJLMELDT</option>
                               
                                    </optgroup>
                                    </select>
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="notat" class="cols-sm-2 control-label">Evt. Bemærkning</label>
                            <div class="cols-sm-10">
                                <div class="input-group">
                                    <span class="input-group-addon"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></span>
                                    <textarea class="form-control" rows="3" name="area" id="area"></textarea>
                                </div>
                            </div>
                        </div>

                        <div class="form-group ">
                            <button type="submit" name="submit" value="Login" class="btn btn-primary btn-lg btn-block login-button">Tilføj</button>
                        </div>
               
                        </div>
                    </form>
                </div>
            </div>
        </div>

</div>


Her vil jeg MEGET gerne have hjælp til at få data ind i en SQL database.
Er der en venlig sjæl, der lige vil hjælpe mig lidt på vej?
Avatar billede olsensweb.dk Ekspert
26. januar 2017 - 13:40 #1
hvor langt er du selv kommet ??
hvilke tabeller har du lavet ?? (lav et sql dump, så vi kan se collonne navne)
hvilke database API anvender du ?? (mysqli eller PDO) antager det er mod en mysql database


http://www.w3schools.com/php/php_mysql_insert.asp
Avatar billede Kallesen Juniormester
26. januar 2017 - 13:56 #2
Altså den eneste modgang jeg har LIGE nu er hvordan jeg får mine DROPDOWN boxe skrevet med ind, for jeg kan sagtens få skrevet mine M-nummer ned og "Evt. Bemærkning"

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mnummer` varchar(255) NOT NULL,
  `spm` varchar(255) NOT NULL,
  `Fejl` varchar(255) NOT NULL,
  `notat` varchar(255) NOT NULL,
  `date` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mnummer` (`mnummer`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Det ser sådan her ud, og når jeg vælger at skrive noget til databasen, ser det således ud:


<?php
    require_once("functions.php");
    require_once("db-const.php");
    session_start();
    if (logged_in() == true) {
        redirect_to("profile.php");
    }
?>


HTML KODE

<?php
if (isset($_POST['submit'])) {
## connect til mysql server
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    # check connection
    if ($mysqli->connect_errno) {
        echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
        exit();
    }
## query database
    # prepare data for insertion
    $mnummer    = $_POST['mnummer'];
    $spm        = $_POST['spm'];
    $fejl        = $_POST['fejl'];
    $bemrk        = $_POST['bemrk'];
   

   
        # insert data into mysql database
        $sql = "INSERT  INTO `users` (`id`, `mnummer`, `spm`, `fejl`, `bemrk`)
                VALUES (NULL, '{$mnummer}', '{$spm}', '{$fejl}', '{$bemrk}')";

        if ($mysqli->query($sql)) {
            redirect_to("reg.php?msg=Registeret uden fejl!");
        } else {
            echo "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>";
            exit();
        }
    }
}
?>
Avatar billede Rune1983 Ekspert
26. januar 2017 - 13:56 #3
Mangler du ikke et name="SelectFejlAfhjulpetAf" i en af dine select
Avatar billede Kallesen Juniormester
26. januar 2017 - 13:58 #4
Jo, den er rettet til nu således:

<select name="fejl" class="form-control" data-max-options="1">
Avatar billede olsensweb.dk Ekspert
26. januar 2017 - 15:20 #5
du har vist fået slettet et felt for meget i dit sql dump
MySQL error no 1054 : Unknown column 'bemrk' in 'field list'

skulle
$bemrk = $_POST['bemrk'];
ikke være
$bemrk = $_POST['area'];


bemrk er måske det i databasen du kalder notat !!
så din insert skulle se sådan ud
$sql = "INSERT  INTO `users` (`id`, `mnummer`, `spm`, `fejl`, `notat`) VALUES (NULL, '{$mnummer}', '{$spm}', '{$fejl}', '{$bemrk}')";

men et notat på kun 255 tegn, burde så nok være en text



CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `mnummer` varchar(255) NOT NULL,
  `spm` varchar(255) NOT NULL,
  `Fejl` varchar(255) NOT NULL,
  `bemrk` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `mnummer` (`mnummer`);


ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
 


<?php
if (isset($_POST['submit'])) {
## connect til mysql server
    $mysqli = new mysqli("localhost", "root", "", "test");
    # check connection
    if ($mysqli->connect_errno) {
        echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>";
        exit();
    }
## query database
    # prepare data for insertion
    $mnummer = $_POST['mnummer'];
    $spm = $_POST['spm'];
    $fejl = $_POST['fejl'];
    $bemrk = $_POST['area'];
   
    # insert data into mysql database
    $sql = "INSERT  INTO `users` (`id`, `mnummer`, `spm`, `fejl`, `bemrk`) VALUES (NULL, '{$mnummer}', '{$spm}', '{$fejl}', '{$bemrk}')";
    if ($mysqli->query($sql)) {
        echo "ok";
        // redirect_to("reg.php?msg=Registeret uden fejl!");
    } else {
        echo "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>";
        exit();
    }
}
?>
Avatar billede Kallesen Juniormester
26. januar 2017 - 19:26 #6
Fantastisk, jeg forstår så ikke lige helt meningen med disse linier:

    if ($mysqli->query($sql)) {
        echo "Du har nu tilføjet et spørgsmål.";
        // redirect_to("reg.php?msg=Registeret uden fejl!");

der er sat en redirect_to i en kommentar, men den er vel nytteløs?
Kan jeg få den til at gøre så der bare kommer en besked med at den er tilføjet, og bliver på siden?
Avatar billede olsensweb.dk Ekspert
26. januar 2017 - 20:05 #7
<
Fantastisk, jeg forstår så ikke lige helt meningen med disse linier:

if ($mysqli->query($sql)) {
    echo "Du har nu tilføjet et spørgsmål.";
    // redirect_to("reg.php?msg=Registeret uden fejl!");
>   
hvis query'en udføres uden fejl, udskrives der en besked,
   
   
>der er sat en redirect_to i en kommentar, men den er vel nytteløs?
ja, jeg har ikke functionen, og resten af coden, så derfor udkommenterede jeg den, så bliver den også på sammen side, som der hvor min sql ligger

>Kan jeg få den til at gøre så der bare kommer en besked med at den er tilføjet,
det skulle ovenstående gerne gøre, dvs med udkommenterede / slettet redirect_to.
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