Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Dodawanie rekordu do bazy, Prosty formularz
starter91php
post 6.05.2009, 23:13:05
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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 :]

Ten post edytował starter91php 6.05.2009, 23:29:44
Go to the top of the page
+Quote Post
marcio
post 6.05.2009, 23:14:48
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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??


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
starter91php
post 6.05.2009, 23:34:59
Post #3





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


Nawiasy sa chyba ok : ), apostrofy i cudzyslowy tez zgodnie ze wzorem. Pewnie cos z GET namieszalem.
Go to the top of the page
+Quote Post
guilty82
post 6.05.2009, 23:35:23
Post #4





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $zapytanie2 = "INSERT INTO `content` (`id`, `nazwa`) VALUES ('', ".$_GET['nazwaa'].")";
  3. ?>
Go to the top of the page
+Quote Post
sowiq
post 6.05.2009, 23:36:49
Post #5





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  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ść?

Ten post edytował sowiq 6.05.2009, 23:38:49
Go to the top of the page
+Quote Post
starter91php
post 6.05.2009, 23:41:42
Post #6





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


Dziekuje pieknie smile.gif
Moje pole id jest auto increement.
Go to the top of the page
+Quote Post
sowiq
post 6.05.2009, 23:44:03
Post #7





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
starter91php
post 6.05.2009, 23:50:20
Post #8





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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?

Ten post edytował starter91php 7.05.2009, 00:20:15
Go to the top of the page
+Quote Post
sowiq
post 7.05.2009, 09:22:30
Post #9





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
starter91php
post 7.05.2009, 22:40:02
Post #10





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 6.05.2009

Ostrzeżenie: (0%)
-----


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 %-)

Ten post edytował starter91php 7.05.2009, 22:44:10
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 15:21