Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Dodawanie rekordu do bazy
Forum PHP.pl > Forum > Przedszkole
starter91php
Banalna sprawa, ale nie mam pojecia co tu jest zle, czemu formularz po nacisnieciu przycisku wyslij, nie dodaje rekordu do bazy?

<form action="" method="GET">
Nazwa imprezy: <input type=textarea name="nazwaa"/><br/>
<input type=submit value="Wyslij"/>
</form>

CODE

<?php
if(isset( $_GET['nazwaa']))
$zapytanie2 = "INSERT INTO `content` (`id`, `nazwa`) VALUES ('', $_GET['nazwaa'])"; - tutaj jest wskazany blad, ale nie mam pojecia co jest zle.
$idzapytania2 = mysql_query($zapytanie2) or die("nic nie dodaje");
?>



Polaczenie z baza jest oczywiscie wczesniej, tutaj wrzucilem tylko czesc pliku :]
marcio
Popraw zapytanie brakuje ci ) i masz zle '' albo "" daj kolorowanie skladni to ci powiem nie chce mi sie tego wklejac do edytora teraz.

A w ogole gdzie masz polaczenie z baza??
starter91php
Nawiasy sa chyba ok : ), apostrofy i cudzyslowy tez zgodnie ze wzorem. Pewnie cos z GET namieszalem.
guilty82
  1. <?php
  2. $zapytanie2 = "INSERT INTO `content` (`id`, `nazwa`) VALUES ('', ".$_GET['nazwaa'].")";
  3. ?>
sowiq
  1. VALUES ('', $_GET['nazwaa'])";
zamień na
  1. VALUES ('', '".$_GET['nazwaa']."')";
Zmienne typu string muszą być w cudzysłowiach. A poza tym poczytaj o SQL Injection.
Aha - czy Twoje pole id może przyjmować pustą wartość?
starter91php
Dziekuje pieknie smile.gif
Moje pole id jest auto increement.
sowiq
Cytat(starter91php @ 7.05.2009, 00:41:42 ) *
Moje pole id jest auto increement.
To powinieneś je pomijać przy dodawaniu nowych rekordów (teraz wstawiasz pustą wartość, co nie do końca jest poprawne).
starter91php
ok, poprawilem ten kod i pod tym wzgledem, thx smile.gif
Kazda wpisana wartosc dodaje mi sie 2 razy, znowu cos spieprzylem.
A dokladnie to po kazdym odswiezeniu strony dodaje sie ostatnio wprowadzona wartosc - wtf?


Kod formularza i dodania rekordu do bazy umiescilem bezposrednio po polaczeniu z baza na poczatku pliku, pewnie dlatego za kazdym razem dodaje stara wartosc, nawet kiedy textarea jest juz puste - moze wyzerowac jakos $_GET?
sowiq
Cytat(starter91php @ 7.05.2009, 00:50:20 ) *
moze wyzerowac jakos $_GET?
Zmienne $_GET są pobierane z adresu, który wywołujesz. Dlatego oczywiste jest, że jak odświeżysz stronkę, to tak jakbyś drugi raz wysłał te same dane.

Żeby temu zapobiec zaraz po dopisaniu nowego rekordu zrób przekierowanie. Jeśli zapisujesz wywołując np. zapis.php?zapisz=1, to przekieruj na zapis.php
Możesz to zrobić za pomocą header()" title="Zobacz w manualu PHP" target="_manual + Location, JavaScript, czy tagi meta http-equiv.
starter91php
Hmm, testowalem kilka razy ta funkcje header(), jednak gdzie nie wstawie kodu np.:
CODE
header("Location: http://www.onet.pl/");
exit;

to nie następuje żadne przekierowanie, gdzie powinienem dokladnie wrzucic ta funkcje, aby zaraz po dodaniu rekordu do SQL nastąpiło przekierowanie?
Próbowałem chyba wszędzie i nihooyah %-)
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.