Strona 1 z 1

Kilka pytań

Napisane: środa, 29 lipca 2015, 19:27
przez matys777
Witam serdecznie. Mam kilka problemów przy tworzeniu biblioteki(wypożyczalni książek), z którymi nie mogę sobie poradzić. Proszę o odpowiedź

1. Jak zabezpieczyć się przed odświeżaniem strony. Po przejściu na stronę czydodane.php dodaje mi wpis do bazy danych. Po odświeżeniu strony znów dodaje wpis.
2. Zrobiłem sobie dodawanie wpisu z pliku do bazy danych. Strona dodaj.php. Niestety pomimo dobrej składni pierwszy wpis dodaje mi z dziwnymi znakami na początku. Podejrzewam, iż może to być nazwa pliku. Gdzie popełniłem błąd?
3. Po zrobieniu logowania na stronie według lekcji z PHP wszystko działa dobrze, wyświetlony jest nick pobrany ze zmiennej predefiniowanej session. Wszystko działa dobrze, jednakże na stronie mam drugi formularz, również metodą post, który służy do wyszukiwania książek z bazy danych. Podczas tego przeszukiwania znika mi nazwa nicka pod którym jestem zalogowany. Czy powinienem zastosować cookies?
4. Jak wyświetlić napis, że mysql_query($query) zostało dodane poprawnie?
5. Jak zlikwidować napis "query was empty" po który pojawia się po wysłaniu pustego zapytania, ewentualnie jak go zmienić na inny? Czy muszę do tego stosować javascript?

Re: Kilka pytań

Napisane: środa, 29 lipca 2015, 19:37
przez matys777

Re: Kilka pytań

Napisane: środa, 29 lipca 2015, 22:33
przez Morfidon
Hej,

1. Możesz zdefiniować jakąś zmienną sesyjną w której zaznaczasz, że już coś zostało dodane np. "1" to znaczy, że tak, a "0" znaczy, że nie.
2. Co to za dziwne znaki?
3. Tak z sesji, pamiętaj, że skrypt z kursu jest rozwijany do momentu stosowania sesji
4. sprawdzasz co zwróciło mysql_query, jeśli jest to "cokolwiek" to wyświetlasz co chcesz, jeśli jest to nic to funkcja zwraca false
5. Nie powinieneś po prostu wykonywać query gdy jest empty - stwórz odpowiedni warunek.

Pozdrawiam :)

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 13:54
przez matys777
2. Tytuł książki
3. Nie bardzo rozumiem. Jest napisane, że jestem zalogowany a nick, który został przepisany z $_SESSION["login"] znika.

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 14:15
przez Morfidon
2. Wklej tu kod odpowiedzialny za to w znacznikach code.
3. Może nie rozpoczynasz sesji (metoda session_start()) - nie uruchamiałem Twoich plików.

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 15:49
przez matys777

Code: Zaznacz cały

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
    <div style="float:left; margin: 0px 50px 0px 0px;">
<?php
include "/include/logowanie.include.php";
echo
"<table bgcolor=#EEEEEE border=1><tr>
<th align=center>Nazwa</th>
<th align=center>Autor</th>
<th>Wydawnictwo</th>
<th>Rok wyd.</th>
<th>Oprawa</th>
</tr>";

filter_var($_POST["ile"], FILTER_SANITIZE_NUMBER_INT);
if (!isset($_POST["ile"]))
{
echo "<form action='czydodana.php' method=post nazwa='formularzdodaj'>";
echo "<tr>
<td><input type='text' name='nazwa' size='30' maxlength='40'/></td>
<td><input type='text' name='autor' size='30' maxlength='40'/></td>
<td><input type='text' name='wydawnictwo' size='30' maxlength='40'/></td>
<td><input type='text' name='rok_wyd' size='5' maxlength='4'/></td>
<td><input type='radio' name='oprawa' value=1/>twarda
<input type='radio' name='oprawa' value=0/>miękka</td>
</tr>
<tr><td><input type='submit' name='Dodaj'>
";
}


if (isset($_POST["ile"]))
{
$ile = $_POST["ile"];
for ($i=1; $i<=$ile; $i++)
{
echo "<form action='czydodana.php' method=post nazwa='formularzdodaj'>";
echo "<tr>
<td><input type='text' name='nazwa".$i."' size='30' maxlength='40'/></td>
<td><input type='text' name='autor".$i."' size='30' maxlength='40'/></td>
<td><input type='text' name='wydawnictwo".$i."' size='30' maxlength='40'/></td>
<td><input type='text' name='rok_wyd".$i."' size='5' maxlength='4'/></td>
<td><input type='radio' name='oprawa".$i."' value=1/>twarda
<input type='radio' name='oprawa".$i."' value=0/>miękka</td>
</tr>

";

}
echo "<input type='hidden' name='ile' value='$ile'>";
echo "<tr><td><input type='submit' name='Dodaj'>";
}
?>
</form>
</table>
<form name="formularz ile" action="dodaj.php" method="post">
    <input name="ile" type="text"/>
    <input type="submit" value="Wybierz ile chcesz dodać książek">
</form>
</div>
<div style="margin: 20px 50px 50px 50px;">
   <p> Dodaj plik do bazy. Format to: Tytuł|Autor|Wydawnictwo|rok wydania|1: oprawa twarda 0: oprawa miękka| 1:dostępna 0:niedostępna</p>
    
    <form action="dodaj.php" method="post" enctype="multipart/form-data" >
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        <input type="file" name="plik">
        <input type="submit" value="dodaj plik">
    </form>

    
<?php
    if (isset($_FILES["plik"]))
    {
        
            switch ($_FILES["plik"]["error"])
            {
            case 0:
                if ($_FILES["plik"]["type"] == "text/plain")
                 {
                move_uploaded_file($_FILES["plik"]["tmp_name"], $file = "pliki/".$_FILES["plik"]["name"]);
                echo "plik został zuploadowany";
                 }
                 else echo "zły rodzaj pliku";
                break;
            case 1:
                echo "za duży plik";
                break;
            case 2:
                echo "za duży plik";
                break;
            case 3:
                echo "za duży plik";
                break;
            case 4:
                echo "nie wybrano pliku";
                break;
            default:
                echo "błąd którego nie przewidziano";
            }
           
        }
    


include "/include/logowanie.do.bazy.php";
polaczenie();

if (!mysql_select_db("biblioteka"))
{
    echo "nie ma bazy danych tworzę nową bazę: biblioteka<br />";
    $baza = mysql_query("CREATE DATABASE biblioteka;");
}
$wyborbazy = mysql_select_db("biblioteka");


if (isset($file))
{
$query = "LOAD DATA LOCAL INFILE '$file' INTO TABLE tabelabiblioteka
    FIELDS TERMINATED BY '|'
    LINES TERMINATED BY '\n'
    (nazwa,autor,wydawnictwo,rok_wyd,oprawa,akt_stan)
    ";

mysql_query($query) or die(mysql_error());
}
error_reporting(E_ALL);
zamknij_baze();
?>
</div>

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 15:51
przez matys777
session start działa, pisze że jestem zalogowany, jednak nie trzyma loginu ze zmiennej $_session["login"]

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 16:00
przez Morfidon
Sprawdź czy masz poprawną metodę porównywania znaków (utf-8) ustawioną dla wybranej bazy danych. Sprawdź czy plik jest zapisany jako utf-8.

Może więc gdzieś nadpisujesz tą wartość przypadkiem.

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 16:46
przez matys777
Rzeczywiście zmienna session była nadpisywana.

Re: Kilka pytań

Napisane: czwartek, 30 lipca 2015, 16:51
przez matys777
Zmieniłem kodowanie na utf8_unicode_ci i już działa bez błędów. Dziekuje za poświęcony czas