Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] UPDATE nie działa
Forum PHP.pl > Forum > Przedszkole
amii
Mam taki blok instrukcji i nie wiem czemu UPDATE nie działa, sprawdzałem instrukcje w bazie jest OK, błędów też nie wyrzuca

  1. //Funkcja pobiera ważne ustawienia z bazy danych
  2. function s($var) {
  3. connect_to_db();
  4.  
  5. $query = 'SELECT name, value FROM settings';
  6. $result = mysql_query($query) or die('Nastapił błąd w zapytani udo bazy w funkcji settings: '. mysql_error());
  7. while ($r = mysql_fetch_assoc($result)) {
  8. $site_settings[$r['name']] = $r['value'];
  9. }
  10.  
  11. $value = $site_settings[$var];
  12. return $value;
  13. }
  14.  
  15.  
  16.  
  17. $tablica = array();
  18. $podbij = 20; //to wartosc jaka zwiekszamy licznik
  19. $sql = "SELECT MIN(id) FROM dodane as minimum";
  20. $zapytaj = mysql_query($sql) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji select min dla cron.php: '. mysql_error());
  21.  
  22. $sql_max = "SELECT MAX(id) FROM dodane as maximum";
  23. $zapytaj_max = mysql_query($sql_max) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji select max dla cron.php: '. mysql_error());
  24. $max = mysql_fetch_array($zapytaj_max); //pobranie wartosci maxymalne id z dodane
  25. $maximum = $max['MAX(id)']; //zapisujemy ta wartosc z maximum w celu dalszego porownania
  26. $limit_dodan = s('limit'); //limit przeskanowanych stron domyslnie 20
  27.  
  28.  
  29. /*********************BLOK JESLI WSZYSTKIE ADRESY OBSLUZONE****************************************/
  30. if($limit_dodan > $maximum) {
  31.  
  32. echo 'Jestem wewnatrz ifa<br>'; //!!!TO SIE WYSWIETLA CZYLI WARUNEK SPELNIONY!!!
  33. echo 'Limit dodan to: ' .$limit_dodan. '<br>'; //tu sie wyswietla 20
  34. echo 'Maximum to: ' .$maximum. '<br>'; //tu sie wyswietla 2
  35.  
  36. $update = "UPDATE settings SET value=0 WHERE name='limit'"; //resetujemy licznik, sprawdzlem zapytanie i jest OK
  37. $zap1 = mysql_query($update) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji update wyzeruj do 20 dla cron.php: '. mysql_error());
  38. $limit_dodan = s('limit');
  39. echo 'Limit wewnatrz ifa to: ' . $limit_dodan . '<br>'; //tu sie wyswietla 20 czemu skoro bylo restowanie 2 instrukcje wczesniej questionmark.gif?
  40.  
  41.  
  42. }
  43. /**********************BLOK JESLI WSZYSTKIE ADRESY OBSLUZONE***************************************/
  44.  
  45. $pobierz = "SELECT MIN(id) FROM dodane as minimum";
  46. $zapytaj = mysql_query($pobierz) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji 0 SELECT MIN(id) FROM main as minimum : '. mysql_error());
  47.  
  48. $limit_min = mysql_fetch_array($zapytaj); //pobranie wartosci minimalnej id z main i jej zapisanie
  49. $limit_min = $limit_min['MIN(id)'] + s('limit'); //domyslnie sprawdzamy indeksacje 20 stron raz na ilosc uruchomien zdefiniowana w cron
  50. $limit_max = $limit_min + $podbij; //wartosc s('limit') domyslnie = 20
  51.  
  52.  
  53.  
  54. $sql1 = "SELECT id, url FROM dodane WHERE id BETWEEN $limit_min AND $limit_max";
  55. $pytamy = mysql_query($sql1) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji select from main dla cron.php: '. mysql_error());
  56. while($row = mysql_fetch_array($pytamy)) {
  57. $adres = $row['url'];
  58. $tablica[] = $adres;
  59. $wynik = szukaj($row['url']); //wywolujemy funkcje sprawdzajaca indeksacje
  60.  
  61. if (!$wynik) {
  62. $update1 = "UPDATE dodane SET tick=1 WHERE url='$adres'"; //ustawiamy wartosc tick na 1 co oznacza zaideksowana
  63. $zap11 = mysql_query($update1) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji update dla cron.php: '. mysql_error());
  64. echo "Upadate dla nastepujacych stron. Strony oznaczone zostaly jako zaindeksowane: " .$adres. "<br>"; //docelow testowych
  65. }
  66. else {
  67. $update2 = "UPDATE dodane SET tick=0 WHERE url='$adres'"; //ustawiamy wartosc tick na 0 co oznacza niezaideksowana
  68. $zap22 = mysql_query($update2) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji update dla cron.php: '. mysql_error());
  69. }
  70. }
  71.  
  72.  
  73. $update = "UPDATE settings SET value=value+$podbij WHERE name='limit'"; //tutaj podbijamy wartosc licznika o 20
  74. $zap1 = mysql_query($update) or die('Nastapil blad w polaczeniu w zapytaniu do bazy w instrukcji update dla cron.php: '. mysql_error());
poli25
nie wiem czy to jest dobrze
SET value=value+$podbij questionmark.gif podstaw cos pod to jesli zadziałą rto znaczy ze skłądnie trzeba poprawic winksmiley.jpg


p.s.
value moze zasta $value?
amii
Niestety nie pomaga sad.gif
poli25
a pod limit co sie znajduje?? where name='limit' name kojarzy mi sie z nazwa a limit z liczba to jest poprawne ?
amii
Struktura tabeli wygląda tak:

  1. CREATE TABLE `settings` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(20) NOT NULL DEFAULT '',
  4. `value` varchar(255) NOT NULL DEFAULT '',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
  7.  
  8. --
  9. -- Zrzut danych tabeli `settings`
  10. --
  11.  
  12. INSERT INTO `settings` (`id`, `name`, `value`) VALUES (1, 'licznik', '0'),
  13. (2, 'pula', '5'),
  14. (3, 'login', '099f6ecd4621d273cade4e832627b4f6'),
  15. (4, 'pass', '099f6ecd4621d773cade4e832627b4f6'),
  16. (5, 'paginator', '10'),
  17. (6, 'limit', '20');
poli25
a sprobuj zmienic nazwe zmienej $query na inna nazwe czy przypadkiem nie wykonuje sie inne query??

p.s.
nie ma tabeli dodane jeszcze przeslij druga tabele jeszcze

przelsij jeszcze tabele dodane
amii
  1. CREATE TABLE `dodane` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `url` varchar(80) NOT NULL DEFAULT '',
  4. `tick` int(11) NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  7.  
  8. --
  9. -- Zrzut danych tabeli `dodane`
  10. --
  11.  
  12. INSERT INTO `dodane` (`id`, `url`, `tick`) VALUES (1, 'http://strona.pl/index.php/', 0),
  13. (2, 'http://strona.org.pl/index.php/category/', 0)


Dorzuciłem w bloku i niby działa OK. tylko nadal nie wiem czemu po UPDATE na 0 wyświetla tym razem 40

if($limit_dodan > $maximum) {
$podbij = 0;
}
pablo89pl
Kolego sprwadź sobie najpierw wyniki na samym SQLu ( chociazby przez phpmyadmina albo konsole SQL)
Potem posprawdzaj jakie warunki przechodząCi w skrypcie, po prostu "zdebuguj"....


@offtopic - właśnie przez takich "skrypciarzy" PHP-owcy uważani są za dzieci z gim, którym 100zł starcza na życie, zabijając w ten sposób ten pełen potencjału rynek
poli25
bo masz valu + $podbij winksmiley.jpg (a value masz w bazie juz 20) winksmiley.jpg
amii
Kolego pablo89pl czytasz ze zrozumieniem ?
Napisałem w pierwszym poście, że testowałem zapytanie na bazie (i zawsze tak robię przed zadaniem pytania na forum).
Warunki tez testuje, program drukuje na ekran odpowiedni na komunikat. Na przyszłość jeśli Twoja wypowiedź ma wnosić tyle co nic to się nie udzielaj.
poli25
@pablo
jeślii siedzisz nad projektem tydzień i jesteś potwornie zmęczony to czasem najprostsze rzeczy uchodzą uwadze pamiętaj o tym Pablo
pablo89pl
Cytat(poli25 @ 26.11.2010, 11:46:10 ) *
@pablo
jeślii siedzisz nad projektem tydzień i jesteś potwornie zmęczony to czasem najprostsze rzeczy uchodzą uwadze pamiętaj o tym Pablo

no fakt..
OK powodzenia i miłego kodowania;-)
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.