Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP][MySQL] Bład w kodzie

Napisany przez: MSPM5 25.09.2012, 00:45:24

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>


Napisany przez: Damonsson 25.09.2012, 01:21:28

Musisz jakoś (if isset POST) sprawdzić, czy został kliknięty przycisk i dopiero wtedy wewnątrz tej zależności wysyłać zapytanie MySQL.

Napisany przez: MSPM5 25.09.2012, 12:33:40

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>

Napisany przez: nospor 25.09.2012, 12:36:24

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 wink.gif
http://forum.php.pl/Jak_poprawnie_zatytulowac_watek_t182364.html

Napisany przez: prz3kus 25.09.2012, 12:42:26

Prosty if i cieszy smile.gif

  1. <?php
  2.  
  3. if($_POST['add'])
  4. {
  5. $add = $_POST['add'];
  6. $con = http://www.php.net/mysql_connect("localhost", "user", "pass");
  7. if (!$con)
  8. {
  9. http://www.php.net/die('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  10. }
  11. http://www.php.net/mysql_select_db("baza",$con);
  12. $sql = http://www.php.net/nl2br("INSERT INTO tabela SET id='null', arty='$add'");
  13. if(!http://www.php.net/mysql_query($sql,$con))
  14. {
  15. http://www.php.net/die('Bład: ' . http://www.php.net/mysql_error());
  16. }
  17. http://www.php.net/echo "Dodany";
  18. $_POST['add'] = null;
  19. }
  20. http://www.php.net/mysql_close($con);
  21. ?>
  22. <form action="admin.php" method="POST">
  23. <textarea rows="10" cols="30" name="add"></textarea><br>
  24. <input type="submit" value="Dodaj">
  25. </form>

Napisany przez: MSPM5 25.09.2012, 13:10:43

Dzięki prz3kus teraz działa.

Napisany przez: !*! 25.09.2012, 13:14:04

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.

Napisany przez: MSPM5 25.09.2012, 21:49:18

  1. <?php
  2. if(http://www.php.net/isset($_POST['add'])){
  3. $add = http://www.php.net/addslashes(http://www.php.net/htmlspecialchars($_POST['add']));
  4. }
  5. if($_POST['add']){
  6. $add = $_POST['add'];
  7. $con = http://www.php.net/mysql_connect("localhost", "user", "root");
  8. if (!$con)
  9. {
  10. http://www.php.net/die('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  11. }
  12. http://www.php.net/mysql_select_db("baza",$con);
  13. $sql = http://www.php.net/nl2br("INSERT INTO tabela SET id='null', arty='$add'");
  14. if(!http://www.php.net/mysql_query($sql,$con))
  15. {
  16. http://www.php.net/die('Bład: ' . http://www.php.net/mysql_error());
  17. }
  18. http://www.php.net/echo "Dodany";
  19. $_POST['add'] = null;
  20. }
  21. http://www.php.net/mysql_close($con);
  22. ?>

Napisany przez: peter13135 25.09.2012, 21:55:57

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.

Napisany przez: MSPM5 25.09.2012, 23:02:03

Poprawione.

  1. <?php
  2. if(http://www.php.net/isset($_POST['add']))
  3. {
  4. $add = http://www.php.net/addslashes(http://www.php.net/htmlspecialchars($_POST['add']));
  5. $con = http://www.php.net/mysql_connect("localhost", "user", "pass");
  6. if (!$con)
  7. {
  8. http://www.php.net/die('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  9. }
  10. http://www.php.net/mysql_select_db("baza",$con);
  11. $sql = http://www.php.net/nl2br("INSERT INTO tabela SET id='null', arty='$add'");
  12. if(!http://www.php.net/mysql_query($sql,$con))
  13. {
  14. http://www.php.net/die('Bład: ' . http://www.php.net/mysql_error());
  15. }
  16. http://www.php.net/echo "Dodany";
  17. $_POST['add'] = null;
  18. }
  19. http://www.php.net/mysql_close($con);
  20. ?>

Napisany przez: peter13135 25.09.2012, 23:21:34

1. nl2br - wiesz co robi ta funkcja ?
2. po co robisz to : $_POST['add'] = null; ?
3. zauważ, że gdy warunek

  1. if(http://www.php.net/isset($_POST['add']))
nie jest spełniony, Twój kod wykonuje tą instrukcję :
  1. http://www.php.net/mysql_close($con);
ale nie wykonuje tej instrukcji :
  1. $con = http://www.php.net/mysql_connect("localhost", "user", "pass");

Napisany przez: MSPM5 25.09.2012, 23:37:35

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ą questionmark.gif

Napisany przez: peter13135 25.09.2012, 23:44:22

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ś.

Napisany przez: MSPM5 26.09.2012, 00:12:04

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
  1. http://www.php.net/mysql_close($con);
za to
  1. or http://www.php.net/die(http://www.php.net/mysql_error());


Zastanawiam się jeszcze czy takie filtrowanie jest wystarczające...

  1. <?php
  2. if(http://www.php.net/isset($_POST['add'])){
  3. $add = http://www.php.net/addslashes(http://www.php.net/htmlspecialchars($_POST['add']));
  4. $con = http://www.php.net/mysql_connect("localhost", "user", "pass");
  5. if (!$con)
  6. {
  7. http://www.php.net/die('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  8. }
  9. http://www.php.net/mysql_select_db("baza",$con);
  10. $sql = "INSERT INTO tabela SET id='null', arty='$add'";
  11. if(!http://www.php.net/mysql_query($sql,$con))
  12. {
  13. http://www.php.net/die('Bład:' . http://www.php.net/mysql_error());
  14. }
  15. http://www.php.net/echo "Dodany";
  16. }
  17. ?>

Napisany przez: !*! 26.09.2012, 07:40:07

Powiedzmy. Sprawdź jeszcze na tej samej zasadzie czy formularz został wysłany, input/button musi mieć name. Zainteresuj się http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO zamiast mysql_* bo za jakiś czas wylecą z PHP. Aha no i teraz nie kończysz połączenia. dodaj też trim()

Napisany przez: MSPM5 26.09.2012, 13:58:18

  1. <?php
  2. if(http://www.php.net/isset($_POST['submit'])&& $_POST['add'] or http://www.php.net/mysql_close($con)){
  3. $add = http://www.php.net/trim(http://www.php.net/addslashes(http://www.php.net/htmlspecialchars($_POST['add'])));
  4. $con = http://www.php.net/mysql_connect("localhost", "user", "pass");
  5. if (!$con)
  6. {
  7. http://www.php.net/die('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  8. }
  9. http://www.php.net/mysql_select_db("baza",$con);
  10. $sql = http://www.php.net/nl2br("INSERT INTO tabela SET id='null', arty='$add'");
  11. if(!http://www.php.net/mysql_query($sql,$con))
  12. {
  13. http://www.php.net/die('Bład:' . http://www.php.net/mysql_error());
  14. }
  15. http://www.php.net/echo "Dodany";
  16. }
  17. ?>
  18. <form action="admin.php" method="POST">
  19. <textarea rows="10" cols="30" name="add"></textarea><br>
  20. <input type="submit" value="Dodaj" name="">
  21. <input type='hidden' name='submit' />
  22. </form>

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 smile.gif

Napisany przez: !*! 26.09.2012, 15:01:31

W ogóle nie znasz podstaw PHP i zasad działania funkcji.

Napisany przez: MSPM5 26.09.2012, 15:42:35

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 wink.gif.

Napisany przez: Niktoś 26.09.2012, 15:58: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:

  1. $con = http://www.php.net/mysql_connect("localhost", "user", "pass");
  2. if (!$con)
  3. {
  4. http://www.php.net/die('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  5. }


można użyć:
  1. $con = http://www.php.net/mysql_connect("localhost", "user", "pass") or http://www.php.net/die ('Nie mozna połączyć:' . http://www.php.net/mysql_error());

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.

Napisany przez: MSPM5 26.09.2012, 16:17:26

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.

Napisany przez: Niktoś 26.09.2012, 16:29:17

To jest polecenie do bazy danych, przecież tego nie wyświetlasz.Jak już chcesz mieć znaki podziału z textarea to powinno być:

  1. $sql = "INSERT INTO tabela SET id='null', arty=".http://www.php.net/nl2br($_POST['add']);

Napisany przez: !*! 26.09.2012, 17:02:30

MSPM5 - niah, bulwersik? biggrin.gif

Jeśli już coś robisz, to rób to dobrze, albo wcale. 5 minut na kolanie nie wystarczy. Moja odpowiedź była adekwatna do tego o co pytałeś. Nie poprawiłeś błędów o które już Ci ktoś wyżej wspomniał, zbudowałeś warunki które w ogóle nie mają sensu.
Przeczytaj pierw jakiś kurs (http://pl.wikibooks.org/wiki/PHP), poznaj zasady działania PHP, a następnie przemyśl to jak Twój skrypt powinien działać.

Do czego Ci te pole ukryte i pusta wartość name? Sprwdź też typ danych, utwórz połączenie wtedy gdy warunki zostną spełnione, tak samo z zakończeniem.

Cytat
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

Perl jest martwy? Skoro wiesz lepiej.

Napisany przez: Niktoś 26.09.2012, 17:08:38

Cytat
Perl jest martwy? Skoro wiesz lepiej.

Coś tam jeszcze żyje.Dalej mnie zastanawia czy to język webowy czy okienkowy.Próbowałem się pobawić przy wdrożeniu jednej aplikacji- dla mnie to magiel i czarna magia więc sobie darowałem- taki offtop z mojej strony.

Napisany przez: abort 26.09.2012, 18:00:36

Cytat(Niktoś @ 26.09.2012, 18:08:38 ) *
Coś tam jeszcze żyje.Dalej mnie zastanawia czy to język webowy czy okienkowy.Próbowałem się pobawić przy wdrożeniu jednej aplikacji- dla mnie to magiel i czarna magia więc sobie darowałem- taki offtop z mojej strony.

Heh, fajnie. Jakieś 10 lat temu też próbowałem się pobawić pewnym językiem. I dałem sobie spokój, bo to była dla mnie czarna magia. Tym językiem był Javascript. O którym dziś nie powiedziałbym, że "coś tam jeszcze żyje". Tego samego nie powiem ani o C ani (na przykład) o fortranie. Mnogość pakietów (i istniejących rozwiązań) w tych językach jest naprawdę poważnym argumentem za tym, by nie mówić "coś jeszcze żyje".

Napisany przez: MSPM5 26.09.2012, 18:02:41

Mowilem o Perl6 ,ze jest martwy moim zdaniem nic sie nie dzieje wszyscy dalej siedza w 5.10 ogolnie perl zostal zepchniety z web przez PHP a do aplikacji okienkowych sa lepsze narzedzia. Teraz jest niezastapiony w pracy administratora generowanie statystyk, automatyzacja itd Perl nie jest martwy ale nie jest modny bo to jak napisal Niktoś magiel i czarna magia.

Cytat
Jeśli już coś robisz, to rób to dobrze, albo wcale. 5 minut na kolanie nie wystarczy. Moja odpowiedź była adekwatna do tego o co pytałeś. Nie poprawiłeś błędów o które już Ci ktoś wyżej wspomniał, zbudowałeś warunki które w ogóle nie mają sensu.
Nie zbudowalem blad jest w tym ,ze przerobilem jakis przyklad wziety z jakiegos kursu zeby dzialal pozniej wy cos zaczeliscie podpowiadac i zaczalem niektore linijki wymieniac i zrobil sie magiel ;D gdybym pisal to od zera to by tego nie bylo a ten kod ktos napisal zmienilem pare rzeczy czegos niezrozumialem i dla tego tak to wyglada.
Cytat
Do czego Ci te pole ukryte i pusta wartość name? Sprwdź też typ danych, utwórz połączenie wtedy gdy warunki zostną spełnione, tak samo z zakończeniem.
Pusta wartosc name to przypadek napisales ,ze input/button musi mieć name mialem dopisac name a robilem cos innego jeszcze i pomieszaly mi sie pliki.

Napisany przez: !*! 26.09.2012, 18:24:57

Cytat(MSPM5 @ 26.09.2012, 19:02:41 ) *
Perl nie jest martwy ale nie jest modny bo to jak napisal Niktoś magiel i czarna magia


Język nie ma być modny, tylko opłacalny, przejrzysty, skalowalny, spełniający założenia programisty wink.gif PHP6 też jest w powijakach, ale nie powiedziałbym że jest martwy. A magiel? czyli znaczy się burdel? PHP ma tak od zawsze.

Napisany przez: Niktoś 26.09.2012, 18:32:41

Ja próbowałem uruchomić perla poprzez fastCGI na IIS zajęło mi to dwa dni aby pojawił się napis is work na białej stronie.Dwa dni mi to zajęło, gdyż błędy wyświetlenia tylko napisów było spowodowane tym, że brakowało mi szeregu modułów, które musiałem ręcznie doinstalowywać w CPAN'ie -wybacz ale to tylko napisy, więc takie coś chyba powinno być obsługiwane standardowo przy instalacji perla. No właśnie skusiłem się na perla bo o statystyki mi chodziło, a wyszukałem sobie programik godny uwagi -cholewcia wie ile modułów musiałbym zainstalować aby go uruchomić,więc sobie darowałem.
Godnym zainteresowania w tym języku programowania jest studio programistyczne ActivePearl -niestety o dziwo płatne, zważywszy ,że tacy potentaci jak Microsoft, Java Microsystem, PHP i jego frameworki udostępniają swoje platformy za darmo.
Dlatego ten język(perl) jak i flash pójdą w zapomnienie gdyż są płatne.

Napisany przez: peter13135 26.09.2012, 18:42:34

MSP.... Autorze tematu. Pisałem CI, żebyś nl2br użył tylko na zmiennej add, wtedy nikt się do tego nie przyczepi smile.gif

Co do filtrowania zmiennych - jest to wystarczające filtrowanie.

Napisany przez: abort 26.09.2012, 18:49:07

Cytat(Niktoś @ 26.09.2012, 19:32:41 ) *
Godnym zainteresowania w tym języku programowania jest studio programistyczne ActivePearl


ActivePERL, do jasnej. "PERL" od "Practical Extraction and Report Language". Nie od Perły, a tym bardziej nie od piwa "Perła". Przepraszam, że tak ostro, ale irytuje mnie zniekształcanie nazw własnych.

Cytat(Niktoś @ 26.09.2012, 19:32:41 ) *
niestety o dziwo płatne, zważywszy ,że tacy potentaci jak Microsoft, Java Microsystem, PHP i jego frameworki udostępniają swoje platformy za darmo.
Dlatego ten język(perl) jak i flash pójdą w zapomnienie gdyż są płatne.

Tak. A PHPStorm też jest płatny - i czego wg Ciebie to dowodzi? że nie mogę pisać w PHP? Proszę Cię, trzymajmy jakiś poziom dyskusji.
Zresztą, od kiedy istnieje ActivePerl? Bo sam Perl to już ponad 20 lat... Popatrz, jakie to dziwne: bez ActivePerla tyle czasu przetrwał? No niemożliwe, prawda?

Napisany przez: MSPM5 26.09.2012, 19:04:08

Cytat
Język nie ma być modny, tylko opłacalny, przejrzysty, skalowalny, spełniający założenia programisty wink.gif PHP6 też jest w powijakach, ale nie powiedziałbym że jest martwy.
Perl taki jest moze nie idealnie przejrzysty smile.gif ale spelnia swoje zadanie od lat. Jest elastyczny robi to co sie chce a po drugiej stronie jest python ktory jest latwy, przejrzysty i ma dobra reklame a ze dzisiaj sie leci na latwizne to wiekszosc wybierze pythona bo jest teraz na topie i o to mi chodzilo chociaz jak niektorzy mowia python to nie tylko zabawka ale tez potezne narzedzie.
Cytat
A magiel? czyli znaczy się burdel? PHP ma tak od zawsze.
Uzylem slowa magiel w porownaniu do tego co stworzylem i jakims cudem nie posypalo bledami ale prawdziwy magiel zaczal sie jak sprobowalem zrobic to.
Cytat
Sprwdź też typ danych, utwórz połączenie wtedy gdy warunki zostną spełnione, tak samo z zakończeniem.
nie rozumiem dla czego chcesz sprawdzac typ danych w moich pseudo artykolach to nie kalkulator chyba ,ze masz cos innego na mysli.

Cytat
MSP.... Autorze tematu. Pisałem CI, żebyś nl2br użył tylko na zmiennej add, wtedy nikt się do tego nie przyczepi smile.gif
hahah widzialem ,ze pisales i wiedzialem ze sie ktos przyczepi bylem pewien ale nie wiedzialem jak to zrobic pozatym dalej cos nie dziala jakis blad jest w tym kodzie zaraz cos z tym zrobie pewnie cudzyslow zgubiony
  1. $sql = "INSERT INTO tabela SET id='null', arty=".http://www.php.net/nl2br($_POST['add']);

Napisany przez: peter13135 26.09.2012, 19:12:17

JA tam błędu nie widzę... ale na kij filtrujesz zmienną $add, ja potem dodajesz do bazy i tak $_POST['add'] biggrin.gif

Napisany przez: MSPM5 26.09.2012, 19:19:07

Cytat
JA tam błędu nie widzę... ale na kij filtrujesz zmienną $add, ja potem dodajesz do bazy i tak $_POST['add'] biggrin.gif
Blad jest napewno bo sie strona nie wczytuje i sypie bladami. Kod juz jest poprawiony (chyba) wkleje jak poprawie WSZYSTKO tylko nie bijcie wiem ze to wyglada strasznie biggrin.gif Hmm w ktorym miejscu mam to filtrowac wydaje mi sie ,ze jest dobrze odfiltrowalo mi <hr> wczesniej sie robily krechy na stronie. Blad jest gdzie indziej za szybko wszystko robie jakis nawias.

Napisany przez: peter13135 26.09.2012, 19:31:08

To zapodaj te błędy wink.gif

Jak robisz takie coś :

  1. $add = $_POST['add'];
  2. $add - filtruj($add);
  3.  
  4. $query = "INSERT INTO ...." . $_POST['add'];
  5.  

to dodajesz nieprzefiltrowane dane, bo przefiltrowana jest $add, a nie $_POST['add'] .

Napisany przez: MSPM5 26.09.2012, 19:37:57

Wrzcam caly kod bo zrobil sie balagan

Tresc bledu: Parse error: syntax error, unexpected ')' in /virtual/****/admin.php on line 10

  1. <!DOCTYPE html><html lang="pl">
  2. <head><title>****</title><meta charset="ISO-8859-2"></head>
  3. <body background="black" bgproperties="fixed">
  4. <style type="text/css">
  5. body {background-color:black;color:white;}
  6. </style>
  7. <center>
  8. <h1>
  9. <?php
  10. if(http://www.php.net/isset($_POST['submit'])&& $_POST['add'])){
  11. $add = http://www.php.net/trim(http://www.php.net/addslashes(http://www.php.net/htmlspecialchars($_POST['add'])));
  12. $con = http://www.php.net/mysql_connect("localhost", "user", "pass") or http://www.php.net/die ('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  13. http://www.php.net/mysql_select_db("baza",$con);
  14. $sql = "INSERT INTO tabela SET id='null', arty=".http://www.php.net/nl2br($_POST['add']);
  15. if(!http://www.php.net/mysql_query($sql,$con))
  16. {
  17. http://www.php.net/die('Bład:' . http://www.php.net/mysql_error());
  18. }
  19. http://www.php.net/echo "Dodany";
  20. }
  21. ?>
  22. <form action="admin.php" method="POST">
  23. <textarea rows="10" cols="30" name="add"></textarea><br>
  24. <input type="submit" value="Dodaj" name="submit">
  25. </form></h1>

Napisany przez: koxu1996 26.09.2012, 19:43:09

W 10 lini za dużo o jedno zamknięcie nawiasu

Napisany przez: MSPM5 26.09.2012, 19:48:43

tak wiem juz to poprawilem ale ma inne bledy jeszcze

wpisuje jeden wyraz i wyskakuje

Bład:Unknown column 'lol' in 'field list'
wpisuje 2 wyrazy i wywala

Bład:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2' at line 1


Napisany przez: Niktoś 26.09.2012, 19:51:45

Żebyś się nie męczył:

  1. <?php
  2. if((http://www.php.net/isset($_POST['submit']))&&(!http://www.php.net/empty($_POST['add']))){
  3. $add = http://www.php.net/trim(http://www.php.net/addslashes(http://www.php.net/htmlspecialchars(http://www.php.net/nl2br($_POST['add']))));
  4. $con = http://www.php.net/mysql_connect("localhost", "user", "pass") or http://www.php.net/die ('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  5. http://www.php.net/mysql_select_db("baza",$con);
  6. $sql =http://www.php.net/mysql_query("INSERT INTO tabela SET id='null', arty='$add'",$con) or http://www.php.net/die('Bład:' . http://www.php.net/mysql_error());
  7.  
  8. http://www.php.net/echo "Dodany";
  9. }
  10. ?>

Napisany przez: MSPM5 26.09.2012, 19:51:54

zmienilem ta linijke

  1. $sql = "INSERT INTO tabela SET id='null', arty=".http://www.php.net/nl2br($_POST['add']);


na to co bylo wczesniej i nie ma bledu

  1. $sql = http://www.php.net/nl2br("INSERT INTO tabela SET id='null', arty='$add'");


dla czego tak sie dzieje

Napisany przez: koxu1996 26.09.2012, 19:52:24

Wydaje mi się że brakuje apostrofów. Spróbuj czegoś takiego:

  1. $sql = "INSERT INTO tabela SET id='null', arty='".http://www.php.net/nl2br($_POST['add'])."'";

Ew. Potestuj zapytanie bezpośrednio w bazie

Napisany przez: abort 26.09.2012, 19:54:16

Wyświetl sobie treść zapytania SQL (u Ciebie w zmiennej $sql). Z nami też możesz się podzielić smile.gif

Napisany przez: MSPM5 26.09.2012, 20:26:07

Teraz dziala.

  1. $sql = "INSERT INTO tabela SET id='null', arty='".http://www.php.net/nl2br($_POST['add'])."'";


tresc tego zapytania
  1. INSERT INTO tabela SET id='null', arty='dupa'Dodany


i poprzedniego

  1. INSERT INTO tabela SET id='null', arty=dopa2Bład:Unknown column 'dopa2' in 'field list'


Niktoś przerobiłem linijke w tym kodzie który dałeś nie zauważylem go wczśniej. Zmieniłem tak jak koxu1996 no i działa

  1. $sql = http://www.php.net/mysql_query("INSERT INTO tabela SET id='null', arty='".http://www.php.net/nl2br($_POST['add'])."'",$con) or http://www.php.net/die('Bład:' . http://www.php.net/mysql_error());



  1. <?php
  2. if((http://www.php.net/isset($_POST['submit']))&&(!http://www.php.net/empty($_POST['add']))){
  3. $add = http://www.php.net/trim(http://www.php.net/addslashes(http://www.php.net/htmlspecialchars($_POST['add'])));
  4. $con = http://www.php.net/mysql_connect("localhost", "user", "pass") or http://www.php.net/die ('Nie mozna połączyć:' . http://www.php.net/mysql_error());
  5. http://www.php.net/mysql_select_db("baza",$con);
  6. $sql = http://www.php.net/mysql_query("INSERT INTO tabela SET id='null', arty='".http://www.php.net/nl2br($_POST['add'])."'",$con) or http://www.php.net/die('Bład:' . http://www.php.net/mysql_error());
  7. http://www.php.net/echo "Dodany";
  8. }
  9. ?>
  10. <form action="admin.php" method="POST">
  11. <textarea rows="10" cols="30" name="add"></textarea><br>
  12. <input type="submit" value="Dodaj" name="submit">
  13. </form></h1>

Napisany przez: peter13135 26.09.2012, 21:37:36

Nadal jest ten błąd o którym pisałem. $add jest przefiltrowana prawidłowo, a $_POST['add'] nie jest przefiltrowana. Powineneś dodać $add do bazy.

Napisany przez: MSPM5 26.09.2012, 21:55:44

chodzi Ci o ta linie questionmark.gif
$sql = mysql_query("INSERT INTO tabela SET id='null', arty='".nl2br($_POST['add'])."'",$con) or die('Bład:' . mysql_error());

Napisany przez: peter13135 26.09.2012, 22:20:27

tak

Napisany przez: !*! 27.09.2012, 06:48:02

Cytat
nie rozumiem dla czego chcesz sprawdzac typ danych w moich pseudo artykolach to nie kalkulator chyba ,ze masz cos innego na mysli.

Po coś to wymyślili. Poczytaj o sql injection.

Napisany przez: MSPM5 27.09.2012, 10:52:44

O to chodzi ? http://gettype

Napisany przez: !*! 27.09.2012, 12:04:47

Wszytko co powinno Cie interesować z is_* w tym przypadku (art) http://php.net/is_string jak spełniają warunek, przesyłasz, jak nie http://php.net/unset ale to już inna bajka, są też inne opcje, ale to już byś musiał określić co chcesz wprowadzać do bazy.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)