Avatar billede Hinninngi Novice
08. april 2019 - 14:17 Der er 4 kommentarer og
2 løsninger

Notice: Undefined index: n1 in C:\xampp\htdocs\minipro.php on line 36

Jeg kan ikke få det her PHP script til at fungere
Når jeg trykker på min knap, så skulle den ellers sende den til min phpMyAdmin tabel

Den siger:
"Der er forbindelse til databasen

Notice: Undefined index: n1 in C:\xampp\htdocs\minipro.php on line 36

Notice: Undefined index: n2 in C:\xampp\htdocs\minipro.php on line 37

Notice: Undefined index: n3 in C:\xampp\htdocs\minipro.php on line 38
no"

Jeg bruger XAMPP v3.2.3

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Miniprojekt PHP & SQL</title>
</head>

<h1>Make a person into your database</h1>
   
    <form action="" method="post">

        <input type="text" name="n1" placeholder="Skriv fornavn" value="Henning"> </br></br> 
        <input type="text" name="n2" placeholder="Skriv alder" value="Mathiesen"> </br></br>
        <input type="text" name="n3" placeholder="Skriv fødested" value="Nuuk"> </br></br>
        <input type="submit" value="Send"></br> </br>


    </form>

<body>
   
</body>
</html>

<?php

$connection = mysqli_connect("localhost", "root", "", "persondb");
if(mysqli_connect_errno()){
    echo "Der er ingen forbindelse til databasen";
} else {
    echo "Der er forbindelse til databasen". "<br>"; 

   
    $fnavn = $_POST['n1'];
    $alder = $_POST['n2'];
    $fødest = $_POST['n3'];

    $sql = "INSERT INTO persontabel (navn, alder, fødested) 
    VALUES ('$fnavn','$alder', '$fødest');";
    if(mysqli_query($connection, $sql)){
        echo "hurra";
        }  else{
        echo "no";
}

?>
Avatar billede olsensweb.dk Ekspert
08. april 2019 - 14:38 #1
du bør undgå æøå i db.tabel.collonne navne, samt variabel navne, det kan løses med backtick, i db, men det er noget rod, da det er mysql spesific syntax
prøv at erstatte dette
$sql = "INSERT INTO persontabel (navn, alder, fødested) VALUES ('$fnavn','$alder', '$fødest');";


med dette (utested)
$sql = "INSERT INTO persontabel (navn, alder, `fødested`)  VALUES ('$fnavn','$alder', '$fødest')";
Avatar billede olsensweb.dk Ekspert
08. april 2019 - 14:50 #2
din fejl skyldes at du forsøger at indsætte noget i databasen før du har posted data, læsningen er at pakke det ind i en isset

(utested)

<?php

if(isset($_POST['Send'])){
   
 
$connection = mysqli_connect("localhost", "root", "", "persondb");
if(mysqli_connect_errno()){
    echo "Der er ingen forbindelse til databasen";
} else {
    echo "Der er forbindelse til databasen". "<br>"; 

   
    $fnavn = $_POST['n1'];
    $alder = $_POST['n2'];
    $fødest = $_POST['n3'];

    $sql = "INSERT INTO persontabel (navn, alder, `fødested`)  VALUES ('$fnavn','$alder', '$fødest')";
    if(mysqli_query($connection, $sql)){
        echo "hurra";
        }  else{
        echo "no";
}
}

?>
Avatar billede olsensweb.dk Ekspert
08. april 2019 - 14:52 #3
rettelse
læsningen => løsningen
Avatar billede olsensweb.dk Ekspert
08. april 2019 - 15:00 #4
<input type="submit" value="Send"></br> </br>
din submit mangler også et name da det er det vi tester på
<input type="submit" name="Send" value="Send"></br> </br>
Avatar billede Hinninngi Novice
09. april 2019 - 14:35 #5
Tak for hjælpen
Alle rettelser var værdifulde :)
Avatar billede olsensweb.dk Ekspert
09. april 2019 - 15:50 #6
du mangler dog en "væsentlig" rettelse!!
du bør også sætte et charset på din database connection, hvis du anvender æøå nogle steder i din database, havde selv problemer med unknown collone 'fødested' pga ø ikke blev sendt over som db forvendtede det, hvilke blev løst med mysqli_set_charset

du bør nok ændre dit collone navn alder til noget ala efternavn, og navn til feks fornavn

en brugers alder bør du altid beregne ud fra hans dob,

sådan ser en std brugertabel ud som udgangs punkt. (postnummer, lande_id, bruger jeg ofte osse)

CREATE TABLE `tbl_users` (
  `id` int(11) NOT NULL,
  `dob` date NOT NULL,
  `firstname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `lastname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `postnummer` varchar(4) COLLATE utf8_danish_ci NOT NULL,
  `lande_id` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;


INSERT INTO `tbl_users` (`id`, `dob`, `firstname`, `lastname`, `postnummer`, `lande_id`) VALUES
(1, '2010-03-05', 'rip', 'andemad', '4000', 1),
(3, '2009-12-04', 'rap', 'and', '2500', 1),
(4, '2015-07-03', 'rup', 'and', '8000', 1),
(5, '2012-07-04', 'mickey', 'mouse', '4000', 1),
(7, '2013-07-07', 'bimmer', 'vildmand', '4000', 1),
(8, '2007-12-24', 'jule', 'mand', '2412', 2);


en anden ting du bør tænke på er fejl beskeder,
https://www.php.net/manual/en/mysqli.error.php

så dette
if(mysqli_query($connection, $sql)){
    echo "hurra";
}  else{
  echo "no";
}

ville jeg udskifte med
mysqli_query($connection, $sql) or die ($connection->error);



samlet ser din code sådan ud:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Miniprojekt PHP & SQL</title>
    </head>
    <body>
        <h1>Make a person into your database</h1>

        <form action="" method="post">
            <input type="text" name="n1" placeholder="Skriv fornavn" value="Henning"> </br></br>
            <input type="text" name="n2" placeholder="Skriv alder" value="Mathiesen"> </br></br>
            <input type="text" name="n3" placeholder="Skriv fødested" value="Nuuk"> </br></br>
            <input type="submit" name ="Send" value="Send"></br> </br>
        </form>
        <?php
        if (isset($_POST['Send'])) {
            $connection = mysqli_connect("localhost", "root", "", "persondb");
            if (mysqli_connect_errno()) {               
                echo "Der er ingen forbindelse til databasen";
            } else {
                mysqli_set_charset($connection, "utf8"); // vigtigt afh æøå i collonne navne, og data
                echo "Der er forbindelse til databasen" . "<br>";
            }
            $fnavn = $_POST['n1'];
            $alder = $_POST['n2'];
            $fødest  = $_POST['n3'];
            $sql = "INSERT INTO persontabel (navn, alder, `fødested`)  VALUES ('$fnavn','$alder', '$fødest')";
            // echo $sql;           
            mysqli_query($connection, $sql) or die ($connection->error);
        }
        ?>
    </body>
</html>
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