pablo663
22.05.2010, 14:24:24
<?php
include("baza.php");
$nazwa = addslashes(htmlspecialchars($_POST['nazwa']));
$jednostka = addslashes(htmlspecialchars( $_POST['jednostka']));
$stan = addslashes(htmlspecialchars($_POST['stan']));
$q = "INSERT INTO skladniki SET nazwa = '$nazwa', jednostka = '$jednostka', stan = '$stan'";
$r = mysql_query($q);
?>
<?php
if ( isset ($nazwa)) && ( !empty( $nazwa )) //drugą wersje mam taką: if ( isset ($_POST['nazwa']) && ( !empty($_POST['nazwa'] )) {
{
echo("<br>");
echo ("Wprowadzenie danych powiodło się!");
}
?>
<form method="post" action="dodaj_skladniki.php"> Nazwa:
<input type="text" name="nazwa">Jednostka miary:
<input type="text" name="jednostka">Stan:
<input type="text" name="stan"><input type="submit" value="Dodaj">
Czy w taki sposób mogę stosować funkcję isset żeby sprawdzić czy w formularzu podano nazwę lub czy pole nie jest puste?
Ciągle mam błąd w 20 lini, nie mogę sobie poradzić
thek
22.05.2010, 15:36:42
Źle robisz jeśli chodzi o kolejność. Od kiedy najpierw wpisujesz do bazy a dopiero potem sprawdzasz? Linie od 11 do 16 powinny być wewnątrz IF, czyli obecna linia 22. No i sprawdzenie czy dodanie się powiodło sprawdzasz poprzez wynik funkcji mysql_query oraz dodatkowo mysql_affected_rows. Czemu? Bo zapytanie może iść do bazy i wszystko być ok, a mimo to się nic nie stanie, gdyż baza może mieć obiekcje przed dodaniem rekordu, choć samo zapytanie jest poprawne. Z tym się człowiek najczęściej spotyka przy update. Ale to już ciekawostka bardziej, bo na obecną chwilę, to sięgnij po jakiś kurs/książkę bo masz poważne braki w podstawach. Poza tym szwankuje Ci nieco logika, bo nie wiesz co gdzie wstawiać.
Inna sprawa, że masz cyrk z nawiasami. W jednym miejscu brakuje w innym niepotrzebny. Używaj więc edytora z podświetlaniem nawiasów bo się pogubisz kiedyś. Nie
if ( isset ($nazwa)) && ( !empty( $nazwa ))
ale
if ( isset ($nazwa) && !empty( $nazwa ) )
Weź używaj też gotowych funkcji. Nie po to masz mysql_real_escape_string by cudować z addslashes i innymi.