Niedświeżająca się formatka

0

Chcę zrobić modyfikację danych w tabeli. Ładuję sobie dane do formatki bez żadnego problemu. Mogę sobie je pomodyfikować zgodnie z planem i zapisać. Jednak w chwili kiedy wczytam kolejne dane, to w polach gdzie zmieniałam ich zawartość dane te nie ulegają zmianie na te, które powinny być po załadowaniu nowych danych. To są dane, które ja wprowadziłam/zmodyfikowałam.
Próba odświeżania strony nic nie pomaga.
Jeśli otworzę nową zakładkę i w niej podam adres strony - załaduje ona poprawne dane.
Jak sobie z tym poradzić?
Jestem w kropce, bo sesja chyba mi tu nie pomoże?

Problem 2:
Tabela posiada pole "drugie imię" którego część osób nie ma. W chwili kiedy ładuję dane do tabelki w HTML - wszystko działa, zawartosci pola nie ma.
Jednak kiedy ładuję dane do formularza modyfikacji w pustym polu pojawia się "/". Wykryłam, że jest to powiązane z brakiem zawartości. Jeśli zawartości danej komórki nie ma - pojawia się sam znak "/". Co ciekawe próba rozwiązania tego przez takie oto cudeńka:

    if($fldsecname == "/") {
        $fldsecname = "";
    }
    if(empty($fldsecname)) {
        $fldsecname = "  ";
    }

Nie pomogły. Dopiero jak wrzuciłam niełamliwą spację -   to zadziałało. Da się to jakoś rozwiązać czy tak ma być?

0

poka kod

0

Kod - ładowanie danych:

<?php
echo '
<html>
<head>
<title>Modyfikacja danych Pacjenta</title>
<meta charset="utf-8"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style2.css" />
</head>
<body>
<div class="ddpacjent"><br />';
//<!-- SELECT SELECT SELECT !!!!!!!!!!!!!!!!!!!!!!!!! -->
    session_start();
    require_once "cfgdb.php";
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbpass);
    $mysqli -> query ('SET NAMES utf8');
    $mysqli -> query ('SET CHARACTER_SET utf8_unicode_ci');
    $query = "select id, name, secname, surname, birthday, pesel from pacjent WHERE id=1";
    if ($result = $mysqli->query($query)) {
        while ($row = $result->fetch_assoc()) {
            $fldid = $row['id'];
            $fldname = $row["name"];
            $fldsecname = $row["secname"];
            $fldsurname = $row["surname"];
            $fldbirthday = $row["birthday"];
            $fldpesel = $row["pesel"];
        }
        $result->free();
    }
    if($fldsecname == "/") {
        $fldsecname = "";
    }
    if(empty($fldsecname)) {
        $fldsecname = " &nbsp ";
    }
echo '
    <div class="form"><div align="center" class="title">Modyfikacja danych Pacjenta</div><br />
    <table width="95%" align="center">
    <form class="login-form" action="savemod_pacjent.php" method="post">
      <tr><td>Id Pacjenta:</td><td><input required type="text" size="4" maxlength="4" name="id" readonly="readonly" value='.$fldid.' /></td></tr>
      <tr><td>Imię Pacjenta:</td><td><input required type="text" size="15" maxlength="20" name="name" value='.$fldname.' /></td></tr>
      <tr><td>Drugie imię:</td><td><input type="text" size="25" maxlength="35" name="secname" value='.$fldsecname.'  /></td></tr>
      <tr><td>Nazwisko:</td><td><input required type="text" size="35" maxlength="35" name="surname" value='.$fldsurname.' /></td></tr>
      <tr><td>Dzień urodzenia</td><td><input required type="text" size="10" maxlength="10" name="birthday" value='.$fldbirthday.' /></td></tr>
      <tr><td>PESEL:</td><td><input required type="text" size="12" maxlength="12" name="pesel" value='.$fldpesel.' /></td></tr>
      <tr><td colspan="2" align="center"><input class="button" type="submit" value="Zmodyfikuj Pacjenta" />
      </table>
      <br /><br /><br /><br /><br />
    </form><br /><br /><br /><br /></div>';
    
echo '    
    <br /><br /><br /><br /><br /><br /><br /><br /><br />
    <align=right>
    <font type="Arial" size="2px"><i>
        Wszelkie prawa niezastrzezone ® 2020
    </i></font>
    </align>
</div>
</body>
</html>
';
?>

Zapisywanie danych:

<?php
echo '
<html>
<head>
<title>Zapisz zmodyfikowanych danych Pacjenta</title>
<meta charset="utf-8"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
';

    session_start();
    require_once "cfgdb.php";
    try {
        $db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);  
    } catch (PDOException $e) {
        echo "Connection failed : ". $e->getMessage();
    }
    $id = trim($_POST['id']);
    $name = trim($_POST['name']);
    $secname = trim($_POST['secname']);
    $surname = trim($_POST['surname']);
    $birthday = trim($_POST['birthday']);
    $pesel = trim($_POST['pesel']);
    $_SESSION['sess_user_id'] = $id;
    $_SESSION['sess_user_name'] = $name;
    $_SESSION['sess_name'] = $pesel;
    
    $msg = "";
    if($name == "" OR $surname == "" OR $birthday == "" OR $pesel == ""){
        echo "Proszę o wpisanie wszystkich danych - <a href='modify_pacjent.html'>Powrót do strony modyfikowania danych Pacjenta</a>.";
        header("refresh:5;url=modify_pacjent.html");
        die();
    }
    try {
        $query = "update pacjent set id=?,name=?,secname=?,surname=?,birthday=?,pesel=? WHERE id=$id";
        $stmt = $db->prepare($query);
        $stmt->bindParam(1, $id, PDO::PARAM_STR);
        $stmt->bindParam(2, $name, PDO::PARAM_STR);
        $stmt->bindParam(3, $secname, PDO::PARAM_STR);
        $stmt->bindParam(4, $surname, PDO::PARAM_STR);
        $stmt->bindParam(5, $birthday, PDO::PARAM_STR);
        $stmt->bindParam(6, $pesel, PDO::PARAM_STR);	
        $stmt->execute([$id, $name, $secname, $surname, $birthday, $pesel]);
        $color = "<div align='center' style='background-color:green;color:white;padding:1%;'><font size=4px><b>";
        $msg = "Dane Pacjenta zostały zmodyfikowane";
        $endcolor = "</b></font></div><br />";
        echo $color,$msg,$endcolor;
        header ("refresh:6, url=lpacjents.php");
    } catch (PDOException $e) {
        echo "Error :".$e->getMessage();
    }

echo '
</body>
</html>
';
?>

Poprawiony post, :)
P.S. A może nie bawić się w takie ładowanie danych tylko skorzystać od razu z jakiegoś AJAXa? Praca z ajaksem czystym relaksem? ;)

0

Jednak w chwili kiedy wczytam kolejne dane

$query = "select id, name, secname, surname, birthday, pesel from pacjent WHERE id=1";

Jedyne co wczytujesz to pacjenta id 1. Tak ma być?

Odnośnie drugiego problemu, to mamy tak:

<tr><td>Drugie imię:</td><td><input type="text" size="25" maxlength="35" name="secname" value='.$fldsecname.'  /></td></tr>

Kod po przetworzeniu z pustą zmienną będzie wyglądać tak:

<tr><td>Drugie imię:</td><td><input type="text" size="25" maxlength="35" name="secname" value=  /></td></tr>

W skrócie: jeżeli wrzucasz coś do html, to musisz dodać cudzysłów, bo html zinterpretuje tag zamykający jako treść value

<tr><td>Drugie imię:</td><td><input type="text" size="25" maxlength="35" name="secname" value="'.$fldsecname.'"  /></td></tr>
0

wow dawnooo nie widziałem kodu w którym całe formy i html wrzucony jest w echo miejmy nadzieję, że to zabawa lub tylko do szkoły

0

@.__. - poprawione i działa :)
Co do I problemu - tak jeszcze nie opracowałam jak zrobić wybór z listy wszystkich pacjentów tego jednego do zmodyfikowania. I dlatego tam na sztywno ustawiam numerek tego, który mnie interesuje.

@czysteskarpety - wydawało mi się, że jak "stuknę" raz i wyślę dużo do strony to mniej obciążę procka i Apache'a?
Jak Twoim zdaniem powinnam to wykonać i dlaczego inaczej?
[tak to jest tylko i wyłącznie moja mała zabawa, to nie jest też na żadne zaliczenie czy coś takiego]

@.__. - nvm. Zrobiłam przesyłanie parametru via $_REQUEST do formatki z modyfikacją (tak aby można było edytować dane) i nawet po zmianie wartości w polach formatki po odświeżeniu strony laduje ona dane z bazy danych. Czyli działa. :)

0

Dla potomnych i innych uczacych się jak ja metodą prób i błędów (najlepiej własnych niestety) - poprawione kody.

<?php
echo '
<html>
<head>
<title>Modyfikacja danych Pacjenta</title>
<meta charset="utf-8"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style2.css" />
</head>
<body>
<div class="ddpacjent"><br />';
//<!-- SELECT SELECT SELECT !!!!!!!!!!!!!!!!!!!!!!!!! -->
    session_start();
    require_once "cfgdb.php";
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbpass);
    $mysqli -> query ('SET NAMES utf8');
    $mysqli -> query ('SET CHARACTER_SET utf8_unicode_ci');
    if(isset($_REQUEST['id'])) {
        $postid = $_REQUEST['id'];
    }
    $query = "select id, name, secname, surname, birthday, pesel from pacjent WHERE id=".$postid;
    if ($result = $mysqli->query($query)) {
        while ($row = $result->fetch_assoc()) {
            $fldid = $row['id'];
            $fldname = $row['name'];
            $fldsecname = $row['secname'];
            $fldsurname = $row['surname'];
            $fldbirthday = $row['birthday'];
            $fldpesel = $row['pesel'];
        }
        $result->free();
    }

echo '
    <div class="form"><div align="center" class="title">Modyfikacja danych Pacjenta</div><br />
    <table width="95%" align="center">
    <form class="login-form" action="savemod_pacjent.php" method="post">
      <tr><td>Id Pacjenta:</td><td><input required type="text" size="4" maxlength="4" name="id" readonly="readonly" value="'.$fldid.'" /></td></tr>
      <tr><td>Imię Pacjenta:</td><td><input required type="text" size="15" maxlength="20" name="name" value="'.$fldname.'" /></td></tr>
      <tr><td>Drugie imię:</td><td><input type="text" size="25" maxlength="35" name="secname" value="'.$fldsecname.'" /></td></tr>
      <tr><td>Nazwisko:</td><td><input required type="text" size="35" maxlength="35" name="surname" value="'.$fldsurname.'" /></td></tr>
      <tr><td>Dzień urodzenia</td><td><input required type="text" size="10" maxlength="10" name="birthday" value="'.$fldbirthday.'" /></td></tr>
      <tr><td>PESEL:</td><td><input required type="text" size="12" maxlength="12" name="pesel" value="'.$fldpesel.'" /></td></tr>
      <tr><td colspan="2" align="center"><input class="button" type="submit" value="Zmodyfikuj Pacjenta" />
      </table>
      <br /><br /><br /><br /><br />
    </form><br /><br /><br /><br /></div>';
    
echo '    
    <br /><br /><br /><br /><br /><br /><br /><br /><br />
    <align=right>
    <font type="Arial" size="2px"><i>
        Wszelkie prawa niezastrzezone &reg; 2020
    </i></font>
    </align>
</div>
</body>
</html>
';
?>
<?php
echo '
<html>
<head>
<title>Zapisz zmodyfikowanych danych Pacjenta</title>
<meta charset="utf-8"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
';

    session_start();
    require_once "cfgdb.php";
    try {
        $db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);  
    } catch (PDOException $e) {
        echo "Connection failed : ". $e->getMessage();
    }
    $id = trim($_POST['id']);
    $name = trim($_POST['name']);
    $secname = trim($_POST['secname']);
    $surname = trim($_POST['surname']);
    $birthday = trim($_POST['birthday']);
    $pesel = trim($_POST['pesel']);
    $_SESSION['sess_user_id'] = $id;
    $_SESSION['sess_user_name'] = $name;
    $_SESSION['sess_name'] = $pesel;
    
    $msg = "";
    if($name == "" OR $surname == "" OR $birthday == "" OR $pesel == ""){
        echo "Proszę o wpisanie wszystkich danych - <a href='modify_pacjent.html'>Powrót do strony modyfikowania danych Pacjenta</a>.";
        header("refresh:5;url=modify_pacjent.html");
        die();
    }
    try {
        $query = "update pacjent set id=?,name=?,secname=?,surname=?,birthday=?,pesel=? WHERE id=$id";
        $stmt = $db->prepare($query);
        $stmt->bindParam(1, $id, PDO::PARAM_STR);
        $stmt->bindParam(2, $name, PDO::PARAM_STR);
        $stmt->bindParam(3, $secname, PDO::PARAM_STR);
        $stmt->bindParam(4, $surname, PDO::PARAM_STR);
        $stmt->bindParam(5, $birthday, PDO::PARAM_STR);
        $stmt->bindParam(6, $pesel, PDO::PARAM_STR);	
        $stmt->execute([$id, $name, $secname, $surname, $birthday, $pesel]);
        $color = "<div align='center' style='background-color:green;color:white;padding:1%;'><font size=4px><b>";
        $msg = "Dane Pacjenta zostały zmodyfikowane";
        $endcolor = "</b></font></div><br />";
        echo $color,$msg,$endcolor;
        header ("refresh:6, url=lpacjents.php");
    } catch (PDOException $e) {
        echo "Error :".$e->getMessage();
    }

echo '
</body>
</html>
';
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1