Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Proszę o pomoc z błędem Undefined variable - Podaje swój kod, proszę o pomoc w kodzie php.
casperii
post 7.07.2015, 18:59:35
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie mam kod:

  1. if(isset($WhoRegister) && $WhoRegister=="worker"){
  2. $result = "INSERT INTO `os_fizyczna` (`id_user`, `name`, `surname`) VALUES ('".$key_iduser."', '".$name."', '".$surname."')" or die('zapytanie :'.$result.' blad:'.mysql_error());
  3. $sql = mysql_query($result);
  4. }
  5. elseif(isset($WhoRegister) && $WhoRegister=="firm"){
  6. $result = "INSERT INTO `firmy` (`id_user`, `name_firm`, `name`, `surname`) VALUES ('".$key_iduser."', '".$name_firm."', '".$name."', '".$surname."')" or die('zapytanie :'.$result.' blad:'.mysql_error());
  7. $sql=mysql_query($result);
  8. }
  9. if($sql){
  10. print('dodano');
  11. }else{
  12. print('Ooops! Pojawił się błąd '.$sql.' blad:'.mysql_error().'');
  13. }


Powyższy kod działa nie do końca dobrze. Tzn. jak ja to testuje to jest ok, ale czasami dostaje błąd gdy ktoś dodaje się do bazy. Tak jak to miało miejsce dziś:
Typ błędu: Undefined variable: sql linia 460 oraz linia 470. Czyli pianie do:

linia 460:
  1. if($sql){


linia 470:
  1. print('Ooops! Pojawił się błąd '.$sql.' blad:'.mysql_error().'');


Go to the top of the page
+Quote Post
KsaR
post 7.07.2015, 19:06:24
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(casperii @ 7.07.2015, 19:59:35 ) *
Panowie mam kod:

  1. if(isset($WhoRegister) && $WhoRegister=="worker"){
  2. $result = "INSERT INTO `os_fizyczna` (`id_user`, `name`, `surname`) VALUES ('".$key_iduser."', '".$name."', '".$surname."')" or die('zapytanie :'.$result.' blad:'.mysql_error());
  3. $sql = mysql_query($result);
  4. }
  5. elseif(isset($WhoRegister) && $WhoRegister=="firm"){
  6. $result = "INSERT INTO `firmy` (`id_user`, `name_firm`, `name`, `surname`) VALUES ('".$key_iduser."', '".$name_firm."', '".$name."', '".$surname."')" or die('zapytanie :'.$result.' blad:'.mysql_error());
  7. $sql=mysql_query($result);
  8. }
  9. if($sql){
  10. print('dodano');
  11. }else{
  12. print('Ooops! Pojawił się błąd '.$sql.' blad:'.mysql_error().'');
  13. }


Powyższy kod działa nie do końca dobrze. Tzn. jak ja to testuje to jest ok, ale czasami dostaje błąd gdy ktoś dodaje się do bazy. Tak jak to miało miejsce dziś:
Typ błędu: Undefined variable: sql linia 460 oraz linia 470. Czyli pianie do:

linia 460:
  1. if($sql){


linia 470:
  1. print('Ooops! Pojawił się błąd '.$sql.' blad:'.mysql_error().'');



Zrób:

  1. if(isset($sql) && $sql){ # czyli zmienna istnieje i zwraca true.

Jako ze twoj kod zaleznie od warunku w skrypcie moze ci nie przypisac zmiennej.
Lub zrob na poczatku skryptu:

$sql=false;

Ten post edytował Ksar 7.07.2015, 19:07:41


--------------------
Go to the top of the page
+Quote Post
casperii
post 7.07.2015, 19:37:50
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Dzięki kolego. Zobaczymy jak to w praktyce wyjdzie:
Jeszcze jakbyś mi pomógł / podpowiedział co jest źle.

Mam kod:

  1. if(!preg_match('/^[.a-ząćęłńóśźż0-9-\"]+$/ui', $name_firm)){
  2. }


Jeżeli wpisze: "firma jakaś" to wywala mi że błędnie podałem.
Go to the top of the page
+Quote Post
KsaR
post 7.07.2015, 19:49:35
Post #4





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(casperii @ 7.07.2015, 20:37:50 ) *
Dzięki kolego. Zobaczymy jak to w praktyce wyjdzie:
Jeszcze jakbyś mi pomógł / podpowiedział co jest źle.

Mam kod:

  1. if(!preg_match('/^[.a-ząćęłńóśźż0-9-\"]+$/ui', $name_firm)){
  2. }


Jeżeli wpisze: "firma jakaś" to wywala mi że błędnie podałem.


Sprobuj tak (slabo znam wyrazenia to moglem zle zrobic):
  1. if (!preg_match('#[a-z0-9\-\"\s]+#ui',$name_firm)){


Edit: dodalem \s do wyrazenia (znaki spacji).

Ten post edytował Ksar 7.07.2015, 19:54:26


--------------------
Go to the top of the page
+Quote Post
casperii
post 7.07.2015, 19:57:26
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


a-z - przepuści tylko znaki bez polskich liter. Dlatego musi być:
a-ząćęłńóśźż

Ale nie rozumiem jednego, że jak np wpisze "jakaś" to działa ok, ale jak wpiszę firma jakaś to wywala błąd
Go to the top of the page
+Quote Post
KsaR
post 7.07.2015, 20:05:11
Post #6





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(casperii @ 7.07.2015, 20:57:26 ) *
a-z - przepuści tylko znaki bez polskich liter. Dlatego musi być:
a-ząćęłńóśźż

Ale nie rozumiem jednego, że jak np wpisze "jakaś" to działa ok, ale jak wpiszę firma jakaś to wywala błąd

u - za wyrazeniem, oznacza takze wszystkie znaki utf8.

Więc a-z powinno zaakceptowac takze śćź itp.

Ten post edytował Ksar 7.07.2015, 20:06:49


--------------------
Go to the top of the page
+Quote Post
casperii
post 12.07.2015, 20:57:30
Post #7





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Pojawił mi się koledzy kolejny problem i nie wiem co o tym myśleć, ponieważ ponownie jak JA testuje jest ok, ale dziś na maila dostaje info z raportu że coś błędnie się wykonało:

1 błąd:
array_filter() expects parameter 1 to be array, boolean given (linia 53)

2 błąd:
array_filter() expects parameter 1 to be array, boolean given (linia 54)

3 błąd:
Division by zero

Błąd jako błąd rozumiem, ale nie rozumiem, czemu mi działa, a jak ktoś się dziś zarejestrował to wywaliło jemu błąd?

Kod:

  1. function is_default($var){
  2. $defaults = array('0');
  3. if(in_array($var,$defaults) || $var=='' || $var===NULL){
  4. return false;
  5. }else{
  6. return $var;
  7. }
  8. }
  9.  
  10. $sql = mysql_query("SELECT `u`.`id_user`, `name`, `surname`, `sex`, `phone`,`gg`,`skype` FROM `table1` AS `u`
  11. LEFT JOIN `table2` ON `table2`.`id_user` = `u`.`id_user`
  12. LEFT JOIN `table3` ON `table3`.`id_user` = `u`.`id_user`
  13. WHERE `u`.`id_user` = '".$id_user."' LIMIT 1;");
  14. $row = mysql_fetch_array($sql,MYSQL_ASSOC);
  15.  
  16. $allFields = count($row)-1;
  17. $filledFields = count(array_filter($row))-1; //linia 53
  18. $empty=$allFields-count(array_filter($row, "is_default"))+1; //linia 54
  19. $filledPercent = $filledFields - $empty;
  20. $PercentFinish = ceil(($filledFields / $allFields) * 100); //linia 56


Proszę sprawne oko o spojrzenie w kod czy nie zawiera jakiegoś buga czy coś. Bo dziwnie jest to , że jak ja testuje to jest ok, ale dziś ten error raporting z maila, że coś poszło nie tak.
Go to the top of the page
+Quote Post
com
post 12.07.2015, 21:57:53
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no skoro kod działa to znaczy ze dostał blednę dane to się nie wykonało smile.gif
Go to the top of the page
+Quote Post
casperii
post 12.07.2015, 22:08:01
Post #9





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Cytat(com @ 12.07.2015, 22:57:53 ) *
no skoro kod działa to znaczy ze dostał blednę dane to się nie wykonało smile.gif


@com
Tylko co może być w otrzymaniu błędnych danych? Czyli co mam rozumieć, że ktoś celowo próbował "wstrzykiwać" jako imię, nazwisko błędne dane?
Tylko , że to też dla mnie dziwne bo przecież po coś była walidacja zrobiona...
Go to the top of the page
+Quote Post
com
post 13.07.2015, 15:44:34
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no zapytanie zwróciło zamiast wartości zapewne false, bo nie mogło sie wykonać a czemu to ja przecież nie wiem smile.gif
Go to the top of the page
+Quote Post
casperii
post 14.07.2015, 19:03:14
Post #11





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Cytat(com @ 13.07.2015, 16:44:34 ) *
no zapytanie zwróciło zamiast wartości zapewne false, bo nie mogło sie wykonać a czemu to ja przecież nie wiem smile.gif


@com będę upierdliwy i chcę dalej drążyć ten temat. Bo nie może być tak, że skrypt jest wadliwy. Czy na to , że zwraca mi "false" wpływ może mieć to , że źle coś mam ustawione w konstrukcji bazy mysql?
Bo nadal nie rozumiem, tego, że skoro mam jakieś pola w bazie i one nie są uzupełnione to ich nie liczy w/w funkcja. A jeżeli są uzupełnione to bierze je pod uwagę i liczy.
Go to the top of the page
+Quote Post
redeemer
post 14.07.2015, 19:10:15
Post #12





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


https://secure.php.net/manual/en/function.mysql-error.php

Prawdopodobnie masz błąd w zapytaniu (wyświetl sobie na ekran), albo ze strukturą bazy.

Ponadto funkcje mysql_* sa przestarzałe - patrz pierwszy warning w manualu.


--------------------
Go to the top of the page
+Quote Post
casperii
post 14.07.2015, 19:21:27
Post #13





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@redeemer zobacz sobie mój 7 post gdzie masz podany kod. Ja tam nie widzę błędu, poza tym gdyby był tam błąd to by za każdym razem pojawił się raport o błędzie.
Wnioskuje że błąd pojawia się tylko wtedy jeżeli jakieś pole w bazie jest wymagane a nie zostało uzupełnione i wtedy wywala błąd (?) chociaż musiałbym to sprawdzić wypełniając po kolei poszczególne pola.
Go to the top of the page
+Quote Post
redeemer
post 14.07.2015, 19:51:13
Post #14





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Nie gdybaj - ten błąd jest wynikiem błędnego zapytania. Poza tym ten twój kod, który wkleiłeś to jakiś wycinek BEZ najważniejszej cześci, mianowicie zmienna która bierze udział w budowie zapytania sql ($id_user) nie wiadomo skąd się bierze. Może prosto z $_GET to masz od razu błąd SQLi i pewnie ktoś już coś próbował skoro dostałeś error.


--------------------
Go to the top of the page
+Quote Post
casperii
post 14.07.2015, 20:43:52
Post #15





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Ok problem rozwiązany.
Go to the top of the page
+Quote Post
nospor
post 15.07.2015, 08:38:14
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie bądź samolubem i napisz co było nie tak i jak to rozwiązałeś.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 14.08.2025 - 08:45