Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Gdzie robię błąd ?
Forum PHP.pl > Forum > Przedszkole
tofik1778983
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. }
CuteOne
Rzuciłeś kod i mamy zgadywać gdzie ewentualnie mogłeś popełnić błąd?? tak to chyba nie idzie...
tofik1778983
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.
nospor
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.
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.