Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z baza danych mysql
tabbi
post 26.11.2010, 15:06:31
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Witam,

nie wiem jak przejsc cala baze danych i kazda zmienna z tablicy dopisac do zmiennej.

  1. $sql = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM pacjenci LIMIT 1"));
  2. $koniec=$sql[0];
  3. $licznik_kobiet=0;
  4. for($i=1;$i<=$koniec;$i++)
  5. {
  6. $sql=mysql_fetch_assoc(mysql_query("SELECT imie FROM pacjenci where id='$i' "));
  7. $newsstring = $sql['imie'];
  8. $newstring = substr($newsstring, -1);
  9. if($newstring=="a")
  10. {
  11. $licznik_kobiet++;
  12. }
  13. }
  14. $dane[0]=$licznik_kobiet;
  15. $licznik_men = $koniec-$licznik_kobiet;
  16. $dane[1]=$licznik_men;
Go to the top of the page
+Quote Post
ADeM
post 26.11.2010, 15:52:02
Post #2





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Poczytaj o JOIN.


--------------------
Go to the top of the page
+Quote Post
phpion
post 26.11.2010, 15:55:41
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(ADeM @ 26.11.2010, 15:52:02 ) *
Poczytaj o JOIN.

W jakimś konkretnym celu?

@tabbi:
To powinno Ci zadziałać:
  1. $mezczyzni = 0;
  2. $kobiety = 0;
  3.  
  4. $q = 'SELECT imie FROM pacjenci';
  5. $q = mysql_query($q);
  6.  
  7. while ($r = mysql_fetch_assoc($q)) {
  8. if (substr($r['imie'], -1) == 'a') {
  9. $kobiety++;
  10. }
  11. else {
  12. $mezczyzni++;
  13. }
  14. }
  15.  
  16. echo 'Mezczyzn: '.$mezczyzni.', kobiet: '.$kobiety;


// Edit:
Możesz zrobić to od razu w MySQL:
  1. SELECT IF(RIGHT(imie, 1) = 'a', 'kobiet', 'mezczyzn') AS plec, COUNT(*) FROM pacjenci GROUP BY plec;


Ten post edytował phpion 26.11.2010, 16:00:21
Go to the top of the page
+Quote Post
zordon
post 26.11.2010, 16:00:37
Post #4





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


całą bazę czy tablicęquestionmark.gif
Po pobieżnej analizie Twego kodu wydaje mi się że źle się za to zabrałeś. Zamiast wysyłać zapytanie z count, w drugim zapytaniu nie dawaj warunku where. W ten sposób pobierzesz wszystkie wiersze tabeli w 1 zapytaniu, a nie wielu.
Liczbe wierszy otrzymasz stosując count() na tablicy wynikowej.
do iterowania po tablicy wynikowej zamiast for zastosuj while.

Ponadto założyłeś, że najwyższe id jest takie samo jak count(*), a to przecież nieprawda!
np wiersze maja id 1, 3, 4. Twój sposób poinformuje Cię, że są 3 wiersze, ale pobierzesz wiersz 1, 2(nie istnieje) i 3.
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: 19.07.2025 - 12:53