Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Losowanie liczby różnej od liczb z bazy
miccom
post 6.05.2009, 17:51:35
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Witam serdecznie.
Chciałbym wylosować odpowiednie liczby ze zbioru liczb, ale różne od liczb już dodanych do bazy danych.
Jak to ugryźć?
Mam takie coś.
  1. <?php
  2. $mapa=rand(1,120);
  3. $pole=rand(1,100);
  4. ?>


A pola w bazie są takie same jak nazwy czyli: mapa: int i pole: int.
Jak skonstruować zapytanie do bazy?
Proszę o odpowiedzi.
Pozdrawiam.
miccom

Ten post edytował miccom 6.05.2009, 18:48:34


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
kefirek
post 6.05.2009, 18:42:26
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Ja bym to zrobił tak
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM test");
  3. while($r = mysql_fetch_assoc($wynik)) {
  4. $mapa[]=$r['mapa'];
  5. $pole[]=$r['pole'];
  6. }
  7. ?>


I potem sprawdzsz czy wylosowane liczby istnieją w tablicy $mapa i $pole za pomcą
is_array" title="Zobacz w manualu PHP" target="_manual

jak istnieje to losujesz jeszcze raz jak nie to wyswietlasz lub robisz co tam chcesz dalej

Ten post edytował kefirek 6.05.2009, 18:43:02
Go to the top of the page
+Quote Post
miccom
post 6.05.2009, 18:51:50
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Cytat(kefirek @ 6.05.2009, 19:42:26 ) *
Ja bym to zrobił tak
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM test");
  3. while($r = mysql_fetch_assoc($wynik)) {
  4. $mapa[]=$r['mapa'];
  5. $pole[]=$r['pole'];
  6. }
  7. ?>


I potem sprawdzsz czy wylosowane liczby istnieją w tablicy $mapa i $pole za pomcą
is_array" title="Zobacz w manualu PHP" target="_manual

jak istnieje to losujesz jeszcze raz jak nie to wyswietlasz lub robisz co tam chcesz dalej

No tak myślałem, ale jak zrobić warunek jeśli podane dane już są?
I jak wykonać tą pętlę.


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
marcio
post 6.05.2009, 18:56:12
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
No tak myślałem, ale jak zrobić warunek jeśli podane dane już są?
I jak wykonać tą pętlę.

http://funkcje.net/view/3/1/188/

Robisz normalna petle for lub foreach i jedziesz po danych.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
miccom
post 6.05.2009, 20:59:43
Post #5





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Witam ponownie.
Zrobiłem coś takiego:
  1. <?php
  2. $mapa=rand(1,120);
  3. $pole=rand(1,100);
  4. $login='testowe';
  5. include('config.php');
  6. $wynik = mysql_query("SELECT * FROM miasta");
  7. while($r = mysql_fetch_assoc($wynik)) {
  8. $mapa[]=$r['mapa'];
  9. $pole[]=$r['koord'];
  10. $login[]=$r['user'];
  11. }
  12. $a = array(array($mapa[]),array($pole[]),array($login[]));
  13.  
  14. if (in_array("$mapa", "$pole", "$login"), $a) {
  15.    echo "znaleziono już miasto na koordach:$pole<br />
  16.          właściciel $login, na mapie $mapa";
  17. }else{
  18.  
  19.  echo "mogę losować koordy nowego miasta";
  20.  //dalsze instrukcje
  21. }
  22. ?>

Ale nie działa, pewnie jest coś źle;/ Pomocy!

Ten post edytował miccom 6.05.2009, 21:00:24


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
marcio
post 6.05.2009, 21:55:52
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $mapa=rand(1,120);
  3. $pole=rand(1,100);
  4. $login='testowe';
  5. include('config.php');
  6. $wynik = mysql_query("SELECT * FROM miasta");
  7. while($r = mysql_fetch_assoc($wynik)) {
  8.  
  9.  $mapa[] = $r['mapa'];
  10.  $pole[] = $r['koord'];
  11.  $login[] = $r['user'];
  12.  
  13. }
  14.  
  15. $a = array($mapa, $pole, $login);
  16.  
  17. if(in_array($mapa, $a) && in_array($pole, $a) && in_array($login, $a)) {
  18.  
  19.    echo "znaleziono już miasto na koordach:$pole<br />właściciel $login, na mapie $mapa";
  20.  
  21. }
  22.  
  23. else {
  24.  
  25.  echo "mogę losować koordy nowego miasta";
  26.  //dalsze instrukcje
  27. }
  28. ?>

Kombinuj cos w ten desen albo w ogole to zmiennej $a daj np tak:
  1. <?php
  2. $a = array(0 => $mapa, 1 => $pole, 2 => $login);
  3. ?>

Rob print_r na tablice $a i zobacz jakie daje ci dane ktore zapisuje w petli while() i mi pokarz.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
miccom
post 6.05.2009, 22:16:15
Post #7





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Zrobiłem coś takiego:$mapa=rand(1,50);
plik los.php
  1. <?php
  2. $mapa=rand(1,50);
  3. $pole=rand(1,100);
  4. $login=$l;//login zapisany jest w bazie danych
  5. include('config.php');
  6. $zapytanie="SELECT * FROM miasta WHERE mapa='$mapa' AND koord='$pole' AND user='$login'";
  7. $wynik=mysql_query($zapytanie);
  8. $cnt = mysql_num_rows($wynik);
  9. if($cnt==0){
  10.  //budowanie miasta (update koordów mapy i pola do bazy)
  11.  }else{
  12.  Header("Location: los.php");//jeśli   $cnt != 0 (czyli ktoś jest na takich danych, przenoszę przez header ponownie do tego pliku, i on znów losuje.
  13. //Musiałbym mies strasznego pecha aby zapętlić tak, że skrypt będzie się wykonywał parę minut;/
  14.    }
  15. ?>


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
marcio
post 6.05.2009, 22:23:45
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie rozumiem to bylo pytanie czy stwierdzenie?


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
miccom
post 6.05.2009, 22:40:25
Post #9





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Witaj.
Robiąc tak jak podałeś:

  1. <?php
  2. $mapa=rand(1,120);
  3. $pole=rand(1,100);
  4. $login='testowe';
  5. include('config.php');
  6. $wynik = mysql_query="SELECT * FROM miasta";
  7. while($r = mysql_fetch_assoc($wynik)) {
  8.  
  9. $mapa[] = $r['mapa'];
  10. $pole[] = $r['koord'];
  11. $login[] = $r['user'];
  12.  
  13. }
  14.  
  15. $a = array(0 => $mapa, 1 => $pole, 2 => $login);
  16.  
  17.  
  18. if(in_array($mapa, $a) && in_array($pole, $a) && in_array($login, $a)) {
  19.  
  20.   echo "znaleziono już miasto na koordach:$pole<br />właściciel $login, na mapie $mapa";
  21.  
  22. }
  23.  
  24. else {
  25.  
  26. echo "mogę losować koordy nowego miasta";
  27. //dalsze instrukcje
  28. }
  29. ?>

Wyciągasz dane z danych, bo $mapa jest wylosowane na samej górze.
Po za tym wrzuciłem powyższy kod: i nie działa, pusta strona;/


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
marcio
post 6.05.2009, 22:49:40
Post #10





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Sam $mapa wrzucales do tablicy to raz.

Dwa to nie powiedzialem ze kod bedzie dziala tylko ze masz robic cos w ten desen co ci podalem bo miales duzo bykow.

Trzy:
  1. <?php
  2. $wynik = mysql_query="SELECT * FROM miasta";
  3. while($r = mysql_fetch_assoc($wynik)) {
  4.  
  5. $mapa[] = $r['mapa'];
  6. $pole[] = $r['koord'];
  7. $login[] = $r['user'];
  8.  
  9. }
  10. ?>

Zrob potem:
  1. <?php
  2. print_r($mapa);
  3. print_r($pole);
  4. print_r($login);
  5. ?>

I pokaz chodz kawalek bo nawet nie wiem czy ci pobiera dane potem zrobi sie reszte.

P.S i dawaj sobie zawsze error_reporting(E_ALL) zeby kod debugowac.

P.S2 zapomnialem dodac ze jak tak bedziesz robil:
  1. <?php
  2. $login[] = $r['user'];
  3. ?>

to dostaniesz tylko ostatnie dane bo nadpisujesz za kazdym obejsciem petli daj .= zamiast =

Ten post edytował marcio 6.05.2009, 22:52:22


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
miccom
post 7.05.2009, 13:52:01
Post #11





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Ok.
Działa.
Otrzymałem takie dane:
Mam dwa wpisy testowe a wynik to
Array ( [0] => 1 [1] => 1 ) Array ( [0] => 24 [1] => 56 ) Array ( [0] => testowe [1] => bierun )


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:33