[PHP][MySQL] Bład w kodzie |
[PHP][MySQL] Bład w kodzie |
25.09.2012, 00:45:24
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Witam mam problem z tym kodem. Po odświeżeniu strony dodają się do bazy puste rekordy, przycisk działa ale coś się wykonuje samoczynnie i nie wiem gdzie jest bład.
Kod <?php $con = mysql_connect("localhost", "user", "pass"); if (!$con) { die('Nie mozna połączyć:' . mysql_error()); } mysql_select_db("baza",$con); $add = $_POST['add']; $sql = nl2br("INSERT INTO tabela SET id='null', arty='$add'"); if(!mysql_query($sql,$con)) { die('Bład: ' . mysql_error()); } echo "Dodany"; mysql_close($con); ?> <form action="admin.php" method="POST"> <textarea rows="10" cols="30" name="add"></textarea><br> <input type="submit" value="Dodaj"> </form> |
|
|
25.09.2012, 01:21:28
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Musisz jakoś (if isset POST) sprawdzić, czy został kliknięty przycisk i dopiero wtedy wewnątrz tej zależności wysyłać zapytanie MySQL.
|
|
|
25.09.2012, 12:33:40
Post
#3
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Też tak myślałem ale to nie działa...
Kod <?php
if (isset($_POST['add'])){ $add = $_POST['add']; } $con = mysql_connect("localhost", "user", "pass"); if (!$con) { die('Nie mozna połączyć:' . mysql_error()); } mysql_select_db("baza",$con); $sql = nl2br("INSERT INTO tabela SET id='null', arty='$add'"); if(!mysql_query($sql,$con)) { die('Bład: ' . mysql_error()); } echo "Dodany"; mysql_close($con); ?> <form action="admin.php" method="POST"> <textarea rows="10" cols="30" name="add"></textarea><br> <input type="submit" value="Dodaj"> </form> |
|
|
25.09.2012, 12:36:24
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Przecież ty nadal wykonujesz zapytanie niezależnie od tego czy POST poszedł czy nie.... Przeczytaj jeszcze raz UWAŻNIE post Damonsson
A do kodu PHP używaj BBOCODE PHP a nie CODE. I na przyszłość tytułuj tematy jak człowiek a nie jak dwuletnie dziecko Temat: Jak poprawnie zatytulowac watek -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
25.09.2012, 12:42:26
Post
#5
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) |
Prosty if i cieszy
|
|
|
25.09.2012, 13:10:43
Post
#6
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Dzięki prz3kus teraz działa.
|
|
|
25.09.2012, 13:14:04
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
To że działa nie znaczy że jest dobry. Gdzie sprawdzasz czy POST istnieje, czy został wysłany? Po co chcesz zakończyć połączenie w wypadku jego "braku"? Już nie wspominając że w ogóle tu niczego nie filtrujesz.
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
25.09.2012, 21:49:18
Post
#8
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
|
|
|
25.09.2012, 21:55:57
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) |
To fajnie, że sprawdzasz czy istnieje indeks add w tablict $_POST za pomocą isset($_POST['add']), ale pare linijek dalej nadal korzystasz z zapisu if($_POST['add']), co w Twoim przypadku nie jest prawidłowe.
Ten post edytował peter13135 25.09.2012, 21:56:49 -------------------- :)
|
|
|
25.09.2012, 23:02:03
Post
#10
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Poprawione.
|
|
|
25.09.2012, 23:21:34
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) |
1. nl2br - wiesz co robi ta funkcja ?
2. po co robisz to : $_POST['add'] = null; ? 3. zauważ, że gdy warunek nie jest spełniony, Twój kod wykonuje tą instrukcję : ale nie wykonuje tej instrukcji : -------------------- :)
|
|
|
25.09.2012, 23:37:35
Post
#12
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Cytat 1. nl2br - wiesz co robi ta funkcja ? Dodaje mi <br /> po naciśnięciu enter. Cytat 2. po co robisz to : $_POST['add'] = null; ? Zapomniałem to wywalić późno jest ;D. Cytat 3. Hmm nie rozumiem dla czego to jest źle...Jeżeli nic nie dodaje chyba niema potrzeby łączyć sie z bazą Ten post edytował MSPM5 25.09.2012, 23:38:29 |
|
|
25.09.2012, 23:44:22
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) |
1.
OK, rozumiem już po co dodałeś tą funkcję. Ale lepiej by było jakbyś użył jej na zmiennej add, a nie całym zapytaniu. 3. Jeżeli nic nie dodajesz, to nie ma potrzeby łączyć się z bazą... a jeżeli się nie połączyłeś z bazą to nie ma potrzeby się z nią rozłączać. Błąd polega na tym, że próbujesz zamknąć drzwi których nie otworzyłeś. Ten post edytował peter13135 25.09.2012, 23:45:50 -------------------- :)
|
|
|
26.09.2012, 00:12:04
Post
#14
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Cytat 3. Jeżeli nic nie dodajesz, to nie ma potrzeby łączyć się z bazą... a jeżeli się nie połączyłeś z bazą to nie ma potrzeby się z nią rozłączać. Błąd polega na tym, że próbujesz zamknąć drzwi których nie otworzyłeś. Chyba zaczynam rozumieć oczywiście moja pomyłka wziąłem to za to Zastanawiam się jeszcze czy takie filtrowanie jest wystarczające...
Ten post edytował MSPM5 26.09.2012, 00:28:40 |
|
|
26.09.2012, 07:40:07
Post
#15
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
Powiedzmy. Sprawdź jeszcze na tej samej zasadzie czy formularz został wysłany, input/button musi mieć name. Zainteresuj się PDO zamiast mysql_* bo za jakiś czas wylecą z PHP. Aha no i teraz nie kończysz połączenia. dodaj też trim()
Ten post edytował !*! 26.09.2012, 07:41:10 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
26.09.2012, 13:58:18
Post
#16
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Cytat Zainteresuj się PDO zamiast mysql_* bo za jakiś czas wylecą z PHP. Juz mieli takie pomysły w perl6 żeby ułatwić prace i ten język jest martwy ludzie nie lubią zmian więc nigdy nie wiadomo Ten post edytował MSPM5 26.09.2012, 14:00:26 |
|
|
26.09.2012, 15:01:31
Post
#17
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
W ogóle nie znasz podstaw PHP i zasad działania funkcji.
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
26.09.2012, 15:42:35
Post
#18
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Cytat W ogóle nie znasz podstaw PHP i zasad działania funkcji. W PHP bawie sie 3 dzień wiec sie zgodze, natomiast ty masz 6 lat doświadczenia na forum i wciąż masz problem z czytaniem ze zrozumieniem. Pytanie Cytat Zastanawiam się jeszcze czy takie filtrowanie jest wystarczające... Twoja odpowiedź Cytat Powiedzmy. niepotrzebny tekst który otwiera nowy temat o którym nie mam pojęcia po 3 dniach nauki Cytat Sprawdź jeszcze na tej samej zasadzie czy formularz został wysłany, input/button musi mieć name. Zainteresuj się PDO zamiast mysql_* bo za jakiś czas wylecą z PHP. Aha no i teraz nie kończysz połączenia. dodaj też trim() później wstawiam kod zrobiony w 5min na kolanie i twoja odpowiedź Cytat W ogóle nie znasz podstaw PHP i zasad działania funkcji. nabijaj posty dalej dobiesz do 3k przed końcem swiata pozdro .
|
|
|
26.09.2012, 15:58:10
Post
#19
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) |
A ten przykład, zaczerpnąłeś z książki z tutoriala jakiegoś? Jeśli tak to przestań to czytać i sięgnij do innej lektury. W ogóle wiele if'ów jest z będnych w twoim kodzie np.
zamiast:
można użyć: Cytat $sql = nl2br("INSERT INTO tabela SET id='null', arty='$add'"); W ogóle te nl2br do niczego nie jest tam potrzebne-wywal to wraz z nawiasami-to ma być zwykły string. Ten post edytował Niktoś 26.09.2012, 16:00:34 |
|
|
26.09.2012, 16:17:26
Post
#20
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 25.09.2012 Ostrzeżenie: (0%) |
Cytat W ogóle te nl2br do niczego nie jest tam potrzebne-wywal to wraz z nawiasami-to ma być zwykły string. Dodaje mi <br /> po naciśnięciu enter. |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 11:58 |