Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Poprawne liczenie wyników z bazy
Forum PHP.pl > Forum > Przedszkole
kamilos809
Witajcie,
Mam maleńki problem, w którym niestety nie umiem znaleźć rozwiązania.
Mój kod i pomysł jest prosty. User zbiera karty, system przydziela mu losowo kartę którą kupi, więc może mieć nawet 10 tych samych kart.
Sęk w tym, że chciałbym umożliwić userowi, żeby mógł zobaczyć ile ma sztuk danej karty.
Kod który stworzyłem pobiera dane z dwóch baz:
  1. CREATE TABLE `karty_kupione` (
  2. `id` int(8) NOT NULL auto_increment,
  3. `nick` varchar(100) NOT NULL default '',
  4. `id_karty` int(8) NOT NULL default '0',
  5. `kolekcja` text NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=8 ;

oraz:
  1. CREATE TABLE `karty` (
  2. `id` int(8) NOT NULL auto_increment,
  3. `obrazek` text NOT NULL,
  4. `opis` text NOT NULL,
  5. `kolekcja` int(8) NOT NULL default '0',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=9 ;


No i ogólnie wszystko śmiga, ale nie do końca. W moim kodzie działa wszystko jeśli zawartość po kolei wyczytywanych id_karty jest ciągła(1,2,3,4,5,6...) to wszystko chodzi jak po maśle, ale jak zabraknie jakiejś cyfry, np. 3, to kod przesuwa się o jedno i przy wyświetlaniu pokazuje wartości dla 3 karty pod 4 kartą...

  1. $gnick='Edziu';
  2. $sql = "SELECT * FROM karty WHERE kolekcja='$_GET[kolekcja]'";
  3. $result = mysql_query($sql);
  4. $cala_kolekcja=mysql_num_rows($result);
  5. $i=1;
  6. echo("<table class='UNI_01' border='0' align='center'><tr>");
  7. while($r = mysql_fetch_array($result)) {
  8. $sql2 = "SELECT * FROM karty_kupione WHERE kolekcja='$_GET[kolekcja]' AND nick='$gnick' AND id_karty='$i'";
  9. $result2 = mysql_query($sql2);
  10. $ile=mysql_num_rows($result2);
  11. if($ile >= '1'){$karta[$i]="1";}
  12. $sum += $karta[$i];
  13. ?><td align='center' style=" word-wrap: break-word;"><body>
  14. <img <? if($r['opis']==''){ ?> <? }else{ ?>onmouseover="show('<? echo $i; ?>')" <?}?> onmouseout="hide('<? echo $i; ?>')" src="<? echo("$r[obrazek]") ?>">
  15. <div id="<?echo $i;?>" style="display: none"><? echo $r['opis']; ?></div>
  16. </body>
  17. <br><b><? echo $ile; ?></b></td>
  18. <?
  19. if($i%4==0){ echo '</tr><tr>';}
  20. $i++;
  21.  
  22. }
  23. echo("</tr></table>");
  24.  
  25. echo 'Suma:'.$sum;
nospor
Takie rzeczy robi sie przez LEFT JOIN i GROUP BY i COUNT i nie ma problemu z niepokolei numerowaniem rekordow. Wszystko w jednym zapytaniu a nie porozwalane na 1000 zapytan jak u ciebie.
kamilos809
No okej, fajnie.
Tylko mógłbyś jakoś naprowadzić jak to posklejać?
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.