Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]błędy w formularzu
Forum PHP.pl > Forum > Przedszkole
mariuszzzzzz
Witam

mam skrypt php (formularz) ktory teraz jakos przestal poprawnie dzialac. Otoz ja go kupilem poniewaz nie jestem dobry w programowaniu php.

Po wypelnieniu formularza za kazdym razem pisze ze nie udalo sie dodac obiektu, pomimo tego ze wszystko zostalo poprawnie wypelnione. Czy jest mozliwe ze zostal jakis limit zalozony bez mojej wiedzy?

Ja moze dam troche tego kodu:

  1. <?php
  2. $q="INSERT INTO `obiekty` (kraj,woj,kat,nazwa,ul,kod,miasto,tel1,tel2,fax,www,mail,pokoje,kuchnia,free
    time,wyposazenie,platnosc,polozenie,jezyki,data,cena1,cena2,cena3,cena4,cena5,cen
    a6,opis,url1,url2,url3,url4,url5,ok) VALUES ('$_POST[kraj]','$woj','$kat','$_POST[nazwa]','$_POST[ul]','$_POST[kod]','$_POST[miasto]','$_POST[tel1]','$_POST[tel2]','$_POST[fax]','$_POST[www]','$_POST[mail]','$pokojeadd','$kuchniaadd','$freetimeadd','$wyposazenieadd','$platnoscadd','$polozenieadd','$jezykiadd','$data','$cena1','$cena2','$cena3','$cena4','$cena5','$cena6','$opis','$url1','$url2','$url3','$url4','$url5','$ok')"
    ;
  3. $r=mysql_query($q);
  4.  
  5. if ($r == TRUE)
  6. {
  7. echo '<div align="center"><table border=1 width="350"><tr><td>Dane zg&sup3;oszonego obiektu zosta&sup3;y wys&sup3;ane do administratora strony. 
  8. Po ich zatwierdzeniu obiekt zostanie dodany do katalogu.</td></tr></table><br><br>';
  9. }
  10. else
  11. {
  12. echo '<center><b>nie uda&sup3;o si&ecirc; doda&aelig; obiektu!</b></center><br><br>';
  13. }
  14. ?>



Bardzo prosze o pomoc. Nie wiem gdzie szukac w tym wszystkim bledu.
kossa
1. Sprawdź co zwraca mysql_query - czy zapytanie się wykonuje

2. Podejrzyj jak wygląda zapytanie po wypełnieniu formularza (echo $q;)

3. Może tabela jest źle zaprojektowana i "zapełniłeś" ją maksymalną ilością rekordów

4. Może nie masz połączenia z bazą

5. Włącz wyświetlanie błędów, może jest jakiś błąd w zapytaniu sql

6. ...

Łukasz
Cienki1980
Otwieram i przenoszę na PHP->Przedszkole
mariuszzzzzz
Cytat(kossa @ 2.03.2007, 11:18:37 ) *
1. Sprawdź co zwraca mysql_query - czy zapytanie się wykonuje

2. Podejrzyj jak wygląda zapytanie po wypełnieniu formularza (echo $q;)

3. Może tabela jest źle zaprojektowana i "zapełniłeś" ją maksymalną ilością rekordów

4. Może nie masz połączenia z bazą

5. Włącz wyświetlanie błędów, może jest jakiś błąd w zapytaniu sql

6. ...

Łukasz



skrypt nie wyrzuca zadnych bledow, polaczenie z baza jest nawiazywane. Ale cos mi sie wydaje ze to baza danych zostala zle skomponowana.
W jaki sposob moge wlaczyc wyswietlanie bledow?
JaRoPHP
Wywołaj funkcję mysql_error" title="Zobacz w manualu PHP" target="_manual po zapytaniu:
  1. <?php
  2. $q="INSERT INTO `obiekty` ...";
  3. echo $q;
  4. $r=mysql_query($q) or die(mysql_error());
  5. ?>

Poza tym, dlaczego nawias w zapytaniu otwierasz za pomocą kodu ASCII: & #40 (bez spacji)?

EDIT:
Zgodnie z sugestią (poniżej) autora wątku, zamieszczam cały kod:
  1. <?php
  2. $q="INSERT INTO `obiekty` & #40;kraj,woj,kat,nazwa,ul,kod,miasto,tel1,tel2,fax,www,mail,pokoje,kuchnia,
    freet
  3. ime,wyposazenie,platnosc,polozenie,jezyki,data,cena1,cena2,cena3,cena4,cena5,cen
  4. a6,opis,url1,url2,url3,url4,url5,ok) VALUES ('$_POST[kraj]','$woj','$kat','$_POST[nazwa]','$_POST[ul]','$_POST[kod]','$_POST[miasto]','$_POST[tel1]','$_POST[tel2]','$_POST[fax]','$_POST[www]','$_POST[mail]','$pokojeadd','$kuchniaadd','$freetimeadd','$wyposazenieadd','$platnoscadd','$polozenieadd','$jezykiadd','$data','$cena1','$cena2','$cena3','$cena4','$cena5','$cena6','$opis','$url1','$url2','$url3','$url4','$url5','$ok')";
  5.  
  6. echo $q; // dodane
  7. $r=mysql_query($q) or die(mysql_error()); // zmodyfikowane
  8.  
  9. if ($r == TRUE)
  10. {
  11. echo '<div align="center"><table border=1 width="350"><tr><td>Dane zgłoszonego obiektu zostały wysłane do administratora strony. 
  12. Po ich zatwierdzeniu obiekt zostanie dodany do katalogu.</td></tr></table><br><br>';
  13. }
  14. else
  15. {
  16. echo '<center><b>nie udało się dodać obiektu!</b></center><br><br>';
  17. }
  18. ?>
mariuszzzzzz
chcialbym przypomniec ze nie mialem jeszcze doczynienia z php. Ja ten skrypt kupilem i nie wdrazalem sie jak on dziala. Powiedzialem co chcialem i tyle. Facet mi zrobil kod i bylem zadowolony.
Moze podac caly kod tego pliku to wtedy bedziesz mogl zobaczyc dokladnie.


edycja
po wprowadzeniu zmian w kodzie pojawil sie taki tekst


INSERT INTO `obiekty` (kraj,woj,kat,nazwa,ul,kod,miasto,tel1,tel2,fax,www,mail,pokoje,kuchnia,freetime
,wyposazenie,platnosc,polozenie,jezyki,data,cena1,cena2,cena3,cena4,cena5,cena6,o
pis,url1,url2,url3,url4,url5,ok) VALUES ('1','1','','hl','g','hjg','jh','h','g','','','m.otokw@dfas.pl','','','','','','','','02.03.07|12:41','','','','','','','','','','','','','no')Powtórzone wyst?pienie '127' dla klucza 1

po wywołaniu funkcji mysql_error nie wyszedl zaden blad.
z tego wynika ze powinno cos byc nie tak z baza danych. Czy wie moze ktos jak wejde do bazy to na co powinienem spojrzec/poprawic/sprawdzic zeby formularz normalnie zostal dodawany do bazy?

juz wiem co jest powodem
otoz usunolem czesc danych z bazy (oczywiscie zrobilem sobie najpierw kopie) i sprobowalem jeszcze raz dodac nastepne dane przez formularz i teraz idzie perfekt.

I teraz mam pytanie:

Jak zrobic zeby w tabeli zmiescilo sie wiecej wpisó/danych? worriedsmiley.gif
kossa
najprawdopodobniej masz jakąś kolumnę np id (auto_increment) której wartość już jest zapełniona maksymalnym wpisem, np. możesz mieć typ id jako smallint, zmień na int lub bigint

Łukasz
mariuszzzzzz
Cytat(kossa @ 2.03.2007, 14:49:38 ) *
najprawdopodobniej masz jakąś kolumnę np id (auto_increment) której wartość już jest zapełniona maksymalnym wpisem, np. możesz mieć typ id jako smallint, zmień na int lub bigint

Łukasz



dokladnie tak mam ID auto_increment.
w "type" dalem na INT a w "extra" jest tylko do wyboru auto_increment albo nic
to mam dac na nic?

sprobowalem dodac nocleg i udalo sie dodac ale przypisal mu ID=0 potem kolejny raz sprobowalem dodac nocleg to juz nie szlo bo juz istnial noecl z ID=0
a da sie jakos zwiekszyc limit na ilosc ID?
Cienki1980
Jak już to zostaw INT i auto_increment. To pole nie powinno być problemem. Ja bym poszukał czy któreś pole nie ma założonego UNIQUE.
Pokaż cała strukturę tej tabeli.
mariuszzzzzz
jak mam pokazac strukture tabeli? mam poprostu zrobic kopiuj - wklej?
Cienki1980
w phpMyAdminie po wyborze tabeli masz opcję EXPORT, zostaw zaznaczony checkbox tylko przy Struktura, a odznaczony przy Dane, po czym kliknij Wykonaj

Na ekranie pojawi się zrzut tabeli .. skopiuj i wklej tu na forum .. ale tylko od create table ..... do pierwszego średnika ';' .
mariuszzzzzz
oto struktura tabeli
  1. CREATE TABLE `obiekty` (
  2. `id` int(4) NOT NULL AUTO_INCREMENT,
  3. `kraj` text NOT NULL,
  4. `woj` text NOT NULL,
  5. `kat` text NOT NULL,
  6. `nazwa` text NOT NULL,
  7. `ul` text NOT NULL,
  8. `kod` text NOT NULL,
  9. `miasto` text NOT NULL,
  10. `tel1` text NOT NULL,
  11. `tel2` text NOT NULL,
  12. `fax` text NOT NULL,
  13. `www` text NOT NULL,
  14. `mail` text NOT NULL,
  15. `pokoje` text NOT NULL,
  16. `kuchnia` text NOT NULL,
  17. `freetime` text NOT NULL,
  18. `wyposazenie` text NOT NULL,
  19. `platnosc` text NOT NULL,
  20. `polozenie` text NOT NULL,
  21. `jezyki` text NOT NULL,
  22. `data` text NOT NULL,
  23. `cena1` int(11) NOT NULL DEFAULT '0',
  24. `cena2` int(11) NOT NULL DEFAULT '0',
  25. `cena3` int(11) NOT NULL DEFAULT '0',
  26. `cena4` int(11) NOT NULL DEFAULT '0',
  27. `cena5` int(11) NOT NULL DEFAULT '0',
  28. `cena6` text NOT NULL,
  29. `opis` text NOT NULL,
  30. `url1` text NOT NULL,
  31. `url2` text NOT NULL,
  32. `url3` text NOT NULL,
  33. `url4` text NOT NULL,
  34. `url5` text NOT NULL,
  35. `ok` text NOT NULL,
  36. PRIMARY KEY (`id`)
  37. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=131 ;
Cienki1980
Nie wypełniasz wszystkich danych potrzebnych do tego, żeby dodał się rekord.
Np: kat, www, fax, i potem wszystkich innych....

Z tych pól nie są wymagane pola cena ... bo mają ustawione wartości default.
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.