Autor Zpráva
bobby
Profil
Ahoj, mám tento problém, při prvním načtení stránky se do databáze zapíšou nulové hodnoty, potom ale po správném vyplnění formuláře se nic nezapíše. Zkoušel jsem všechno možné... Chyba je asi v umístění sql dotazu ale přesně nevím.. Díky za rady.


    <html>
    <head>
        
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
    </head>
   <script>
  /*   function kontrola () {
        var zprava = "";
        if(document.getElementsByName("nazev")[0].value==""){
            zprava ="Nezadal jste jméno."
        }
          if(document.getElementsByName("kategorie")[0].value==""){
            zprava +="\nNezadal jste kategorii."
        }
          if(document.getElementsByName("znacka")[0].value==""){
            zprava +="\nNezadal jste znacku."
        }
          if(document.getElementsByName("velikost")[0].checked==false&&document.getElementsByName("velikost")[1].checked==false&&document.getElementsByName("velikost")[2].checked==false){
            zprava +="\nNezadal jste velikost."
        }
        if(zprava==""){
            return true;
        }
        else {alert(zprava); return false;}
    } */
    </script> 
    <body>
      <?php 
      
      include "./pripojeni.php";   
          
      
      if(isset($_POST["odeslat"])){
         if(($_POST["nazev"]=="")){
              echo "Nezal jste jméno.";
          }
        else if(($_POST["kategorie"]=="")){
              echo "Nezal jste kategorii.";
          }
        else if(($_POST["znacka"]=="")){
              echo "Nezal jste znacku.";
          }
        else if(!isset($_POST["velikost"])){
              echo "Nezal jste velikost.";
          }
          
      }
      else {
                    if (isset($_POST["skladem"])){
                        $_POST["skladem"]=1;
                    }
                    else {$_POST["skladem"]=0;
                     
                    }  
                    $vlozeni="INSERT INTO `kola`.`kola` (`id`, `nazev`, `id_kategorie`, `znacka`, `skladem`, `velikost`) VALUES (NULL, '{$_POST["nazev"]}', '{$_POST["kategorie"]}', '{$_POST["znacka"]}', '{$_POST["skladem"]}', '{$_POST["velikost"]}');";
                   if(mysqli_query($spojeni, $vlozeni)){
                                              echo "Úspěšně vloženo.";}
                                              else {echo "Nebylo vloženo";}     
      }
     
      
      ?>
        
        
        <form action="vlozeni.php" method="POST" >
            <label>Název</label><input type="text" name="nazev"><br>
            <label>Kategorie</label><select name="kategorie">
                <option value=""></option>
                <?php
                $data=  mysqli_query($spojeni, "SELECT * from kategorie");
                while ($zaznam = mysqli_fetch_array($data)) {
                    echo "<option value ='{$zaznam["id"]}'>{$zaznam["nazev"]}</option>";
                }
                ?>
            </select><br>
                <label>Značka</label><input type="text" name="znacka"><br>
                <label>Skladem</label><input type="checkbox" name="skladem"><br>
                <label>Velikost</label><br>
                26<input type="radio" name="velikost" value="26"><br>
                27<input type="radio" name="velikost" value="27"><br>
                29<input type="radio" name="velikost" value="29"><br>
                <input type="submit" name="odeslat" value="ODESLAT"><br>
        </form>
        
        
        
        
        
        
        
        
        
    </body>
</html>
Taps
Profil
Co ti zobrazi mysqli_error()?
Keeehi
Profil
Na řádku 57 nemají ty uvozovky uvnitř řetězce co dělat. A ty složené závorky tam jsou jen zvytečně.

S problémem to nesouvisí, ale vkládáte do databáze neošetřená data. To je obrovské bezpečnostní riziko.
Lonanek
Profil
Logicky to máte postavené tak, že pokud není stisknuto tlačítko odeslat, uloží se záznam do databáze. Pokud je tlačítko stisknuto, pouze se provede kontrola na prázdné hodnoty a nic víc.

Také se domnívám, že nemáte správně podmínky else if, mělo by to končit chybou.
Pokud to má být v jedné podmínce, pak by mělo být použito elseif(). Celá ta konstrukce podmínek je tak trochu podivná.

Ostatní popsali již výše.

Nevím jestli tohle je přesně to co jste zamýšlel, ale zkuste:
    <html>
    <head>
        
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
    </head>
   <script>
  /*   function kontrola () {
        var zprava = "";
        if(document.getElementsByName("nazev")[0].value==""){
            zprava ="Nezadal jste jméno."
        }
          if(document.getElementsByName("kategorie")[0].value==""){
            zprava +="\nNezadal jste kategorii."
        }
          if(document.getElementsByName("znacka")[0].value==""){
            zprava +="\nNezadal jste znacku."
        }
          if(document.getElementsByName("velikost")[0].checked==false&&document.getElementsByName("velikost")[1].checked==false&&document.getElementsByName("velikost")[2].checked==false){
            zprava +="\nNezadal jste velikost."
        }
        if(zprava==""){
            return true;
        }
        else {alert(zprava); return false;}
    } */
    </script> 
    <body>
<?php 
      
include "./pripojeni.php";   

if (isset($_POST["odeslat"]))
{
    if ($_POST["nazev"]=="")
    {
        echo "Nezal jste jméno.";
    }
    elseif ($_POST["kategorie"]=="")
    {
        echo "Nezal jste kategorii.";
    }
    elseif ($_POST["znacka"]=="")
    {
        echo "Nezal jste znacku.";
    }
    elseif (!isset($_POST["velikost"]))
    {
        echo "Nezal jste velikost.";
    }
    else
    {
        if (isset($_POST["skladem"]))
        {
            $skladem=1;
        }
        else 
        {
            $skladem=0;
        }
    }
    $vlozeni="INSERT INTO `kola`.`kola` (`nazev`, `id_kategorie`, `znacka`, `skladem`, `velikost`) VALUES ('". $_POST["nazev"] ."', '". $_POST["kategorie"] ."', '". $_POST["znacka"] ."', '". $skladem ."', '". $_POST["velikost"] ."');";
    if (mysqli_query($spojeni, $vlozeni))
    {
        echo "Úspěšně vloženo.";
    }
    else
    {
        echo "Nebylo vloženo";
    }     
}
?>
        <form action="vlozeni.php" method="POST" >
            <label>Název</label><input type="text" name="nazev"><br>
            <label>Kategorie</label><select name="kategorie">
                <option value=""></option>
                <?php
                $data=  mysqli_query($spojeni, "SELECT * from kategorie");
                while ($zaznam = mysqli_fetch_array($data)) {
                    echo "<option value ='{$zaznam["id"]}'>{$zaznam["nazev"]}</option>";
                }
                ?>
            </select><br>
                <label>Značka</label><input type="text" name="znacka"><br>
                <label>Skladem</label><input type="checkbox" name="skladem"><br>
                <label>Velikost</label><br>
                26<input type="radio" name="velikost" value="26"><br>
                27<input type="radio" name="velikost" value="27"><br>
                29<input type="radio" name="velikost" value="29"><br>
                <input type="submit" name="odeslat" value="ODESLAT"><br>
        </form>
    </body>
</html>
Netestováno.
Neřeším bezpečnostní korekci vstupů! Tu musíte vyřešit sám. Např. mysqli_real_escape_string() pro řetězce a int() pro numerické hodnoty.
bobby
Profil
Lonanek:
Po menších úpravách kód funguje podle představ, ještě jednou děkuju...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0