Autor Zpráva
Valocsay
Profil
Zdravím. Potreboval by som poradiť s jedným problémom hľadal som už všade.

<?PHP
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7);
if (!isset($_SESSION)){session_start();}
include "config.php";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <link type="text/css" rel="stylesheet" href="style.css">
  <title></title>
  </head>
  <body id="ferman_edit">
  <?PHP
    if ($_SERVER["REQUEST_METHOD"] == "POST"){
        if($_SESSION["Function"] == 'V'){
            $sql = "select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = 'ferman'";
            $result = mysqli_query($link, $sql);
            if (mysqli_num_rows($result) > 0) {

                for($i=0; $i<mysqli_num_rows($result); $i++){
                    $row=mysqli_fetch_array($result, MYSQLI_NUM);
                    for($y=0; $y<=60; $y++){
                        $datum = date('Y-m-d', strtotime('+'.$y.' day'));
                        $sql_date="select * FROM `ferman` WHERE `Dátum` ='$datum'";
                        $result_date = mysqli_query($link, $sql_date);
                        if($row[0] != "Dátum"){
                            $inputV=$row[0]."-".$datum;
                            $input=$_POST[$inputV];
                            if(mysqli_num_rows($result_date) > 0){
                                $sql_update = "UPDATE `ferman` SET `$row[0]`='$input' WHERE `Dátum` ='$datum'";
                                $result_update = mysqli_query($link, $sql_update);
                                if($result_update){
                                }else echo "ERROR";
                            }else{
                                $sql_new = "INSERT INTO `ferman` (`Dátum`, `$row[0]`) VALUES ('$datum', '$input')";
                                $result_new;
                            }
                        }
                    }
                }
            }
        }else echo "Nemáte oprávnenie na túto funkciu!";
    }


  ?>
    <form method="POST">
      <table class = "Edit_ferman">
        <?PHP
        $sql = "select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = 'ferman'";
        $result = mysqli_query($link, $sql);
        if (mysqli_num_rows($result) > 0) {

            for($i=0; $i<mysqli_num_rows($result); $i++){
            $row=mysqli_fetch_array($result, MYSQLI_NUM);
            echo "<tr>";
                echo "<th class='meno'>".$row[0]."</th>";
                for($y=0; $y<=60; $y++){
                    if($i==0){
                        echo "<th class='datum'>".date('d.m', strtotime('+'.$y.' day'))."</th>";
                    }else{
                        $datum = date('Y-m-d', strtotime('+'.$y.' day'));
                        $sql_date="select `$row[0]` FROM `ferman` WHERE `Dátum` ='$datum'";
                        $result_date = mysqli_query($link, $sql_date);

                            echo "<th><input type='text' value='".mysqli_fetch_array($result_date, MYSQLI_NUM)[0]."' name='".$row[0]."-".date('Y-m-d', strtotime('+'.$y.' day'))."'></th>";

                    }
                }
            }
            echo "</tr>";
            }

        ?>



   </table>
    <input type="submit" value="Uložiť">
   </form>
  </body>
</html>



Kód slúži na úpravu pracovného kalendáru. Keď sa snažím spraviť úpravu nastane problém so zisťovaním hodnôt z polí.


Na tomto obrázku je videiť že existuje input s menom, ktoré je v premennej $_POST ale nedokáže ho načítať. Kde by prosím mohol byť problém?
RastyAmateur
Profil
Klíče v poli s mezerama a diakritikou? No slušně si zahráváš...

V první řadě bych zkusil doplnit atribut action do toho formuláře. A pak bych zkusil var_dump($_POST);, abys věděl, co v tom ne/máš, nebo spíš jestli se ti ten formulář ne/posílá...
N71
Profil *
Valocsay:
Kde by prosím mohol byť problém?
Čteš nedefinovaný index pole na řádku 29. Co ti není jasné? Existenci klíče nebo proměnné je třeba napřed ověřit.

Jinak na tom programu není správně skoro nic. Od prasečího volání SQL v cyklu, vyložené nebezpečných SQL injections, až po v praxi nefunkční postupy typu čtení dat z INFORMATION_SCHEMA, do kterého databázový uživatel běžně nemusí mít vůbec přístup.

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