Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z cronem i bazą MySQL
Forum PHP.pl > Forum > Przedszkole
pawlo896
Witam, jak widać jestem nowy i początkujący w PHP.

Mam taki ładny problem z cronem.

Oto kod:

  1. <?php
  2.  
  3. $host_bazy_danych = 'localhost';
  4. $uzytkownik_bazy_danych = 'root';
  5. $haslo_bazy_danych = '';
  6. $nazwa_bazy_danych = 'baza';
  7.  
  8. $polacz = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych) or die('uzupelnij poprawnie plik config.php');
  9. mysql_select_db($nazwa_bazy_danych,$polacz) or die('uzupelnij poprawnie plik z corn');
  10.  
  11. mysql_query("SET NAMES 'utf8'");
  12.  
  13. // nieruchomosci
  14.  
  15. $s_cena = mysql_fetch_array(mysql_query("select * from nieruchomosci ")); // stara cena
  16. $n_cena = $s_cena['cena'] + (1 + (floor(-20 + rand() * 40)/100) );
  17.  
  18. mysql_query("update nieruchomosci set p_cena = ".$s_cena['cena'].", cena = ".$n_cena." ");
  19.  
  20.  
  21.  
  22.  
  23.  
  24. ?>


Cron ma za zadanie najpierw przekopiować starą cenę czyli aktualną do innego rekordu, następnie ma wylosować i dodać
tak aby powstała nowa cena mniejsza lub większa.

Wszystko jest ok losuje i kopiuje poprawnie tylko dla każdego id inną, czyli mamy coś takiego:

id cena_new cena_stara
1 10 000 11 000
2 10 000 11 000

a ma być:

id cena_new cena_stara
1 10 000 11 000
2 5 000 6000

Nie wiem co mam zrobić z tym skryptem aby wykonywał się poprawnie.

Proszę o pomoc.


nospor
Problem z cronem nie ma żadnego związku. Skąd pomysł że ma? Przecież skrypt masz do kitu. cron go jedynie wykonuje.

Ten kod
$s_cena = mysql_fetch_array(mysql_query("select * from nieruchomosci "));
pobiera zawsze, ale to zawsze pierwszy rekord z tabeli nieruchmości
Jak chcesz pobrać wszystkie to masz użyć pętli

Zaś ten kod:
mysql_query("update nieruchomosci set p_cena = ".$s_cena['cena'].", cena = ".$n_cena." ");
zawsze ale to zawsze zmienia pola p_cena oraz cena wszystkim rekordom z tabeli nieruchomości. Jak chcesz zmienić tylko wybranemu to masz użyc warunku WHERE
pawlo896
Działa wszystko ale nie wiem czemu nie losuje mi teraz liczb takich aby cena raz wzrasta a czasami spadała.
Cały czas stosuje ten sam skrypt losowania liczb jak powyżej i po drobnych zmianach skrypt albo dodaje 1 lub mnoży i wychodzą kolosalne liczby. Najlepiej chciałbym aby dodawał losową liczbę od 10 do -10.

nospor
No ale pokaz kod po zmianach...
pawlo896
  1. <?php
  2.  
  3. $host_bazy_danych = 'localhost';
  4. $uzytkownik_bazy_danych = 'root';
  5. $haslo_bazy_danych = '';
  6. $nazwa_bazy_danych = 'baza';
  7.  
  8. $polacz = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych) or die('uzupelnij poprawnie plik config.php');
  9. mysql_select_db($nazwa_bazy_danych,$polacz) or die('uzupelnij poprawnie plik z corn');
  10.  
  11. mysql_query("SET NAMES 'utf8'");
  12.  
  13. // nieruchomosci
  14.  
  15. $s_cena = mysql_query("select * from nieruchomosci where dom > 0 order by dom desc");// stara cena
  16. while($sc = mysql_fetch_array($s_cena)){
  17. $n_cena = $sc['cena'] + (1 + (floor(-20 + rand() * 40)/100) );
  18.  
  19. mysql_query("update nieruchomosci set p_cena = ".$sc['cena'].", cena = ".$n_cena." where dom = ".$sc['dom']." ");
  20.  
  21. }
  22.  
  23.  
  24.  
  25. ?>


Jak mam tak to dodaje 1 lub więcej
a jeżeli wstawię znak * to mnoży
nospor
No ale czemu używasz rand() bez parametrów?? Skoro chcesz, by skrypt ci losował liczby z zakresu -10 do 10 to musisz mu to podać. Myślisz ze rand() czyta ci w myślach??

Lektura obowiązkowa
http://www.php.net/rand
masz tam wszytko jak na dłoni opisane i wyjaśnione na przykładach. Czy tak trudno tam zajrzeć?
pawlo896
No ale rand mi nie wygeneruje liczby ujemnej więc zawsze najmniejsza będzie 1
nospor
A skad ten wniosek? Sprawdziłeś? Podałeś jako zakres -10, 10? Nie, nie podałeś. Wiec podaj i sprawdź a potem pisz, ze czegos nie robi.
echo rand(-10, 10);
pawlo896
Dzięki po prostu skrypt nie losował ujemnych uparł się i losował dodatnie.

nospor
Nawet jakby losował tylko dodatnie, no to odrobina pomyślunku i:
  1. $zm = rand(0, 20) - 10;
  2. echo $zm;
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.