Nie wpisywanie 0 do mysl jesli nie podam liczby

0

Cześć uczę się PHP i MySQL pisze sobie mały skrypt mający na celu przyswojenie wiedzy.

Lecz mam problem z wpisywaniem 0 do bazy gdy nie podam liczby w formularzu tzn
mam formularz w nim 4 pola
Nazwa, liczbaA, liczbaB, liczbaC

Oraz baze o tych samych nazwach pol

Teraz gdy do formularza podaje tylko liczbeB np 5 i klikam aktualizacja, do liczby B wpisuje 5 ale A i C znika.
podajcie jakieś linki z odpowiedzią

0

Linki? Myślisz, że ktoś na taki banał tworzy specjalne tutoriale?
Skończy czytać kurs MySQL, dojdź do lekcji z UPDATE - wszystko będziesz wiedział.

0

Jak A i C znika?
Ale nie chodzi Ci o to że na stronie na której odbierasz wartość liczbaA, liczbaB, liczbaC, dać sprawdzenie czy

if(is_set($_GET[liczbaA]))
</del>
if(isset($_GET[liczbaA])) 

i zależnie of wyniku wstawić pod A 0 lub liczbę podaną od użytkownika?

0

Witam chyba mnie nie zrozumiałeś! A już się nastroszyłeś?
Nie proszę o linki do TUTORIALI a raczej manuali!

http://77.253.200.82/trendy/

login programers
haslo programers

zaktualizuj sobie jakiś towar podając jego nazwę lecz nie podawaj wszystkich wartości czyli podaj np 100 dla ina reszte zostaw pusta to zobaczysz o co mi chodzi.

0

Ad.stronki, tak btw.:
1.Podatna SQL, HTML oraz JS injection.
2.Niehashowane hasło?!

0

Napisałem ze się uczę?
wiem o sql injection, wiem ze hasło nie jest szyfrowane to są testy do nauki.
:)

0

No dobrze już się biorę za bezpieczeństwo, ale bardzo bym prosił o jakąś wskazówkę dotyczącą mojego błędu.

A tak poza tematem brakuje ci jednego a raczej dwóch drogowskazów w awatarze

  1. BAR
  2. WOMEN

Może i się zalogujesz strona ci da nawet powitanie ale danych nie zobaczysz :P

0

Tak na logikę, to będzie coś w stylu:

$field_0 = isset($_POST["field_0"])?$_POST["field_0"]:0; // ew. `:null`, to byłoby logiczniejsze
$field_1 = isset($_POST["field_1"])?$_POST["field_1"]:0;
0

Na logike to nie wiem o co kaman:)

Czytam dalej książkę może coś w niej będzie bo po 2 PHP 5 Biblia i PHP MYSQL od Podstaw odpowiedzi nie ma.

Do użytkownika 'dzek' Jak to są podstawy ("Przeniesione z powodu podstawy) to nie wiem jak wygląda średni formularz :)
Bo jak nawet dam tu walidacje to i tak problemu nie rozwiążę, jak na razie wpadłem na trop 3 formularzy, na każde miasto osobno, albo po prostu przepisywanie już istniejących wartości. Co raczej nie jest zbyt fajne, dzięki za podpowiedzi.

0
Patryk27 napisał(a):

Tak na logikę, to będzie coś w stylu:

$field_0 = isset($_POST["field_0"])?$_POST["field_0"]:0; // ew. `:null`, to byłoby logiczniejsze
$field_1 = isset($_POST["field_1"])?$_POST["field_1"]:0;

Albo:

$field_0 = array_key_exists('field_0', $_POST)?(int)$_POST["field_0"]:0;

(E_NOTICE "undefined offset" / "x is undefined")

1

ładniej i uniwersalniej (bo można do wszystkiego nadać inną wartość domyślną):

$defaults = Array(
  'field_0' => 0,
  'field_1' => 0,
  'field_2' => 0
);

$_POST += $defaults;

echo (int)$_POST['field_0'];

ale nie o to chodziło autorowi tylko żeby update'owały się tylko podane pola z tego co zrozumiałem
czyli musisz dynamicznie składać zapytanie, jak masz np:

UPDATE fajki.papierosy SET ino=?, byd=?, swi=? WHERE nazwa=?

to musisz dynamicznie dodawać pole do SET te które chcesz ustawić
ładnie będzie dodać sobie pola do tablicy a potem złączyć w zapytanie:

$pola = Array();
if (!empty($_POST['ino'])) $pola[] = 'ino=' . (int)$_POST['ino'];
if (!empty($_POST['swi'])) $pola[] = 'swi=' . (int)$_POST['swi'];
// itp... to sobie ładnie możesz opakować w funkcję albo pętlę żeby się nie powtarzać

$sql = 'UPDATE fajki.papierosy SET ' . implode(', ', $pola) . ' WHERE nazwa=?';

btw - uważaj naprawdę na mysql injection. Najlepiej użyj chociaż jakiegoś PDO. Jak widzisz jedna luka pozwala na wykonanie dowolnego zapytania select - byłem w stanie wyciągnąć nazwę bazy, tabel, nazwy kolumn, strukturę tablicy i wszystko inne

0

Dziękuje dobrze mnie zrozumiałeś bardzo dobrze o to mi właśnie chodziło :)

 
$nazwa = $_POST['nazwa'];
if($_POST['up']){
 $pola = Array();
if (!empty($_POST['in'])) $pola[] = "ino = " . (int)$_POST['in'];
if (!empty($_POST['by'])) $pola[] = "byd = " . (int)$_POST['by'];
if (!empty($_POST['sw'])) $pola[] = "swi = " . (int)$_POST['sw'];


$sql = ("UPDATE fajki.papierosy SET " . implode(', ', $pola) . " WHERE `nazwa` = '$nazwa'");
$result = mysql_query($sql) or die ("masz blad<br />". mysql_error());
if ($result){header ('Location: moje.php');}
}
?>

<form action="moje.php" method="post">
Nazwa<input type="text" name="nazwa" />
inowo<input type="text" name="in" />
bydgo<input type="text" name="by" />
swiec<input type="text" name="sw" />
<input type="submit" name="up" value="+" />
</form>

Wszystko działa zgodnie z moim zamierzonym celem, bardzo ci dziękuję, ale mam do was jeszcze jedna prośbę, gdzie ja mogę o takich rzeczach poczytać bo książki, które miałem do tej pory zawiodły mnie :(, jedna ma 1000 stron druga 800 a w ani jednej nie ma czegoś takiego.

Teraz wszytko to rzerobię plus oczywiście zabezpieczenia potem jak skończę napiszę w tym wątku aby ktoś sprawdził :)

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