Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem z cronem i bazą MySQL
pawlo896
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.02.2012

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


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.


Go to the top of the page
+Quote Post
nospor
post
Post #2





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




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
Go to the top of the page
+Quote Post
pawlo896
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.02.2012

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


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.



Ten post edytował pawlo896 22.02.2012, 10:49:27
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




No ale pokaz kod po zmianach...
Go to the top of the page
+Quote Post
pawlo896
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.02.2012

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


  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
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




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ć?
Go to the top of the page
+Quote Post
pawlo896
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.02.2012

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


No ale rand mi nie wygeneruje liczby ujemnej więc zawsze najmniejsza będzie 1
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




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);
Go to the top of the page
+Quote Post
pawlo896
post
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 21.02.2012

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


Dzięki po prostu skrypt nie losował ujemnych uparł się i losował dodatnie.

Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Nawet jakby losował tylko dodatnie, no to odrobina pomyślunku i:
  1. $zm = rand(0, 20) - 10;
  2. echo $zm;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:01