Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmiana danych
Forum PHP.pl > Forum > Przedszkole
Sławo
Witam,

mam do zrobienia zmianę danych pracownika wybieranego z listy poprzez formularz.

Stworzyłem taki oto kod:

  1. <?php
  2.  
  3.    session_start();
  4.  
  5.    require("konfiguracja.php");
  6.    require("funkcje.php");
  7.  
  8. if(isset($_SESSION['USERNAME']) == FALSE) {
  9.    header("Location: " . $config_basedir);
  10. }
  11.  
  12. $db = mysql_connect($dbhost, $dbuser, $dbpassword);
  13. mysql_select_db($dbdatabase, $db);
  14.  
  15. if($_POST['submit']) {
  16. $sql = "UPDATE pracownicy SET kod_pracownika = " . $_POST['kod_pracownika'] .",
  17. nazwisko = " . $_POST['nazwisko'] .", imie = " . $_POST['imie'] .", data_zatr = " . $_POST['data_zatr'] .", data_zw = " . $_POST['data_zw'] .", przyczyna = " . $_POST['przyczyna'] ." WHERE id = " . $vid .";";
  18. $result=mysql_query($sql);
  19. header("Location: " . $config_basedir . "/dane_pracownika.php?id=" . $vid);
  20. }
  21. else {
  22.    require("naglowek.php");
  23.    
  24.    $ssql = "SELECT * FROM pracownicy WHERE id = " . $vid . ";";    
  25.    $sresult = mysql_query($ssql);
  26.    $row = mysql_fetch_assoc($sresult);
  27.  
  28. ?>
  29.  
  30. <div align="center">
  31. <h2>Zmiana danych pracownika:</h2>
  32. <form action="<?php echo $SCRIPT_NAME . "?id=" . $vid; ?>" method="post">
  33.  
  34. <table>
  35. <tr>
  36.    <th>Pracownik</th>
  37.    <th>
  38.    <select name="pracownik">
  39.    <?php
  40.        $psql = "SELECT * FROM pracownicy;";
  41.        $presult = mysql_query($psql);
  42.        while($prow= mysql_fetch_assoc($presult)) {
  43.            echo "<option value='" . $prow['kod_pracownika'] . "'";
  44.            
  45.            if($prow['id'] == 1) {
  46.                echo " wybrane";
  47.            }
  48.            
  49.            echo ">" . $prow['kod_pracownika'] . "</option>";
  50.        }
  51.    ?>
  52.    </select>
  53.    </th>
  54. </tr>
  55.  
  56. <tr>
  57.    <td>Nazwisko</td>
  58.    <td><input type="date" name="nazwisko"></td>
  59. </tr>
  60. <tr>
  61.    <td>Imię</td>
  62.    <td><input type="datetime" name="imie"></td>
  63. </tr>
  64. <tr>
  65.    <td>Data zatrudnienia</td>
  66.    <td><input type="datetime" name="data_zatr"></td>
  67. </tr>
  68. <tr>
  69.    <td>Data zwolniena</td>
  70.    <td><input type="datetime" name="data_zw"></td>
  71. </tr>
  72. <tr>
  73.    <td></td>
  74.    <td><input type="submit" name="submit" value="Zmień dane!"></td>
  75. </tr>
  76. </table>
  77. </form>
  78. </div>



jednak on nie działa. I moje pytanie z nim związane: Gdzie robię błąd".

Chciałbym również aby po wybraniu pracownika wyświetlane były jego dane do edycji.
nospor
Cytat
jednak on nie działa

Jak idziesz do lekarza, to mowisz: "Panie doktorze nie dzialam", czy moze jednak wyjasniasz mu problem dokladniej?

1) Napisz czym objawia sie to nie dzialanie
2) wlacz wyswietlanie wszystkich bledow
http://nospor.pl/php-faq-n29.html#faq-2
3) zdebuguj swoj skrypt samemu, w poszukiwaniu podstawowych bledow:
http://nospor.pl/mysql-faq-n29.html#faq-6
http://nospor.pl/mysql-faq-n29.html#faq-1
JoShiMa
Nie działa to znaczy co nie działa.

W zapytaniu jest:
  1. <?php
  2. $sql = "UPDATE pracownicy SET kod_pracownika = " . $_POST['kod_pracownika'] .",
  3. nazwisko = " . $_POST['nazwisko'] .", imie = " . $_POST['imie'] .", data_zatr = " . $_POST['data_zatr'] .", data_zw = " . $_POST['data_zw'] .", przyczyna = " . $_POST['przyczyna'] ." WHERE id = " . $vid .";";
  4. ?>


a powinno być:
  1. <?php
  2. $sql = "UPDATE pracownicy SET kod_pracownika = " . $_POST['kod_pracownika'] .",
  3. nazwisko = '" . $_POST['nazwisko'] ."', imie = '" . $_POST['imie'] ."', data_zatr = '" . $_POST['data_zatr'] ."', data_zw = '" . $_POST['data_zw'] ."', przyczyna = '" . $_POST['przyczyna'] ."' WHERE id = " . $vid ;
  4. ?>

(wielkości w apostrofach, zakładam, że kod pracownika jest wielkością typu int więc nie dałam tam apostrofów, średnik na końcu zbędny)

Poza tym skąd pochodzi zmienna $vid?

Z resztą tylko zgaduję co może być źle, bo przecież nie napisałeś co Ci nie dział tongue.gif
Sławo
Zmienna $vid pochodzi z:

  1. <?php
  2. if(isset($_SESSION['USERNAME']) == FALSE) {
  3.    header("Location: " . $config_basedir);
  4. }
  5.  
  6. $db = mysql_connect($dbhost, $dbuser, $dbpassword);
  7. mysql_select_db($dbdatabase, $db);
  8.  
  9. if(isset($_GET['id']) == TRUE) {
  10.    if(is_numeric($id) == FALSE) {
  11.        $error = 1;
  12.    }
  13.  
  14.    if($error == 1) {
  15.        header("Location: " . $config_basedir);
  16.    }
  17.    else {
  18.        $vid = $_GET['id'];
  19.    }
  20. }
  21. else {
  22.    $vid = 0;
  23. }
  24. ?>


A co do
  1. <?php
  2. ?>


to:

Notice: Undefined index: submit in c:\usr\krasnal\www\rcp\update_pracownika.php on line 31

Notice: A session had already been started - ignoring session_start() in c:\usr\krasnal\www\rcp\naglowek.php on line 1

Notice: A session had already been started - ignoring session_start() in c:\usr\krasnal\www\rcp\stopka.php on line 3

Po zakomentowaniu tych linijek z

  1. <?php
  2. ?>

pozostaje tylko:

Notice: Undefined index: submit in c:\usr\krasnal\www\rcp\update_pracownika.php on line 31
Maxik
Nie if($_POST['submit']) , a if(!empty($_POST['submit']))

Co do sesji to prawdopodobnie zapisujesz skrypt przy użyciu UTF-8, usuń więc BOM http://pl.wikipedia.org/wiki/BOM.
Sławo
Zmieniłem na:
  1. <?php
  2. if(!empty($_POST['submit'])) {
  3. $sql = "UPDATE pracownicy SET kod_pracownika = " . $_POST['kod_pracownika'] .",
  4. nazwisko = '" . $_POST['nazwisko'] ."', imie = '" . $_POST['imie'] ."', data_zatr = '" . $_POST['data_zatr'] ."', data_zw = '" . $_POST['data_zw'] ."', przyczyna = '" . $_POST['przyczyna'] ."' WHERE id = " . $vid ;
  5. $result=mysql_query($sql);
  6.  
  7. header("Location: " . $config_basedir . "/dane_pracownika.php?id=" . $vid);
  8. }
  9. ?>


I faktycznie mam kodowanie UTF-8:
  1. <META http-equiv="Content-Type" content="text/html; charset=utf-8" />


jednak nie wiem jak mam usunąć ten BOM.

Problem jest jeszcze z:

  1. <?php
  2. header("Location: " . $config_basedir . "/dane_pracownika.php?id=" . $vid);
  3. ?>


Notice: Undefined variable: error in c:\usr\krasnal\www\rcp\update_pracownika.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\rcp\update_pracownika.php:21) in c:\usr\krasnal\www\rcp\update_pracownika.php on line 37
piotrooo89
notepad++ ma opcje kodowanie utf-8 bez BOM. kożystam i jest całkiem przyjazny.
Sławo
Od samego początku piszę tylko i wyłącznie w Notepad++.
piotrooo89
wiec na pewno masz tam opcje zmiany kodowania. jest iso, asci, i utf poszukaj...
Sławo
Faktycznie jest i miałem ustawione na koduj w ANSI

to zmienić na Koduj w UTF-8 (bez BOM) ?
piotrooo89
jaśniej nie umiem Ci tego napisać że trzeba to zamienić... a tu masz lekture dodatkową co to jest ten tajemniczy BOM
Sławo
Po zmianach zaczyna się knocić.

Zostawiłem kodowanie w ANSI.
piotrooo89
więc nie pozbędziesz się tego:
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\rcp\update_pracownika.php:21) in c:\usr\krasnal\www\rcp\update_pracownika.php on line 37
Sławo
Bez tego tracę sesje i ponownie trzeba się logować.

  1. <?php
  2. header("Location: " . $config_basedir . "/dane_pracownika.php?id=" . $vid);
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.