Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Proszę o pomoc z błędem Undefined variable - Podaje swój kod
Forum PHP.pl > Forum > Przedszkole
casperii
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().'');


KsaR
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;
casperii
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.
KsaR
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).
casperii
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
KsaR
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.
casperii
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.
com
no skoro kod działa to znaczy ze dostał blednę dane to się nie wykonało smile.gif
casperii
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...
com
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
casperii
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.
redeemer
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.
casperii
@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.
redeemer
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.
casperii
Ok problem rozwiązany.
nospor
Nie bądź samolubem i napisz co było nie tak i jak to rozwiązałeś.
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.