Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Gdzie robię błąd ?
tofik1778983
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Witam
Chcę zapisać do bazy wpis ktorego jeszcze nie ma.. jeśli juz jest ma sie wyświetlić komunikat.. oto kod:

  1. $min = 1;
  2. $max = $lvl -> fields['level'] +15;
  3.  
  4. $plan = $db -> Execute("SELECT * FROM `smith` WHERE owner=0 && level between ".$min." and ".$max." && (type='A' || type='S' || type='H' || type='W' || type='L') ORDER BY RAND() LIMIT 1");
  5. echo'wylosowano: '.$plan -> fields['name'];
  6. //$smith = $db -> Execute("SELECT * FROM `smith` where owner>0");
  7. $spr = $db -> Execute("SELECT count(*) as name FROM smith WHERE name=".$plan->fields['name']." && type=".$plan->fields['type']." && level=".$plan->fields['level']." && owner=".$player->id);
  8. //echo'<br><br>'.$spr->fields['name'].'<br><br>';
  9. if($spr->fields['name'] > 0)
  10. {
  11. echo'ten już jest w bzaie';
  12. }
  13. else
  14. {
  15. $db -> Execute("INSERT INTO smith (owner, name, type, cost, amount, level, lang) VALUES(".$player -> id.", '".$plan -> fields['name']."', '".$plan -> fields['type']."', ".$plan -> fields['cost'].", ".$plan -> fields['amount'].", ".$plan -> fields['level'].", '".$plan -> fields['lang']."')");
  16. }


Ten post edytował tofik1778983 1.12.2010, 02:08:49
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Rzuciłeś kod i mamy zgadywać gdzie ewentualnie mogłeś popełnić błąd?? tak to chyba nie idzie...
Go to the top of the page
+Quote Post
tofik1778983
post
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 1
Dołączył: 22.11.2007
Skąd: lbn

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


Nic nie rozrzuciłem tak wygląda zawartość jednego z moich if'ków. no może sa tam jeszcze z dwa linki które nic nie wnoszą do reszty..
Nieco wyjaśnie..
losuje sobie z bazy jeden element
Kod
$plan = $db -> Execute("SELECT * FROM `smith` WHERE owner=0 && level between ".$min." and ".$max." && (type='A' || type='S' || type='H' || type='W' || type='L') ORDER BY RAND() LIMIT 1");

tu miało zliczyć ile jest już elememtów takich jak wylosowano z bazy
Kod
$spr = $db -> Execute("SELECT count(*) as name FROM smith WHERE name=".$plan->fields['name']." && type=".$plan->fields['type']." && level=".$plan->fields['level']." && owner=".$player->id);

Potem sprawdzenie czy są jakieś wpisy o podanych kryteriach jeśli nie ma to jest 0 rekordów. If sprawdza czy to co zostało zwrócone jest wieksze od "0" Jak tak pisze komunikat ze już jest i nie dodaje wpisu.. jeśli jest "0" to dodaje do bazy wylosowany $plan
Kod
$db -> Execute("INSERT INTO smith (owner, name, type, cost, amount, level, lang) VALUES(".$player -> id.", '".$plan -> fields['name']."', '".$plan -> fields['type']."', ".$plan -> fields['cost'].", ".$plan -> fields['amount'].", ".$plan -> fields['level'].", '".$plan -> fields['lang']."')");

Gdy zamiast zmiennych w $spr
Kod
name=".$plan->fields['name']." && type=".$plan->fields['type']." && level=".$plan->fields['level']."

wpisałem konkretne wartości/nazwy przedmiotów (jakieś przykładowe które mam w bazie) przez myphpadmina to działa zwraca ich liczbę ale gdy chcę podstawić wartości w zmiennych już w kodzie php które są pobrane przy losowanu w pierwszym zapytaniu, juz nie..

Ewentualnie niech ktoś podpowie jak sprawdzić czy dany wylosowany element który chcę dodać do bazy jest juz w niej..
(lista przedmiotów dostepnych w losowaniu, oraz dodawanie przedmiotów odbywa sie w jednej tabeli.. rozróznią je tylko kolumna "owner" gdzie "0" z tych losuje, po losowaniu wpis zostaje dodany do tej samej tabeli z "owner= id usera")
Ogólnie chodzi o to aby gdy wylosuje przedmiot który już "mam" nie zostawał ponownie dodany do bazy.

Ten post edytował tofik1778983 1.12.2010, 06:46:55
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




Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
a zobaczysz być może parę dodatkowych błędów, które pomogę Tobie/nam w rozwiązaniu tego problemu.
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: 22.08.2025 - 12:48