Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - contare campi database
Forum - PHP - contare campi database

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
atrx (Normal User)
Newbie


Messaggi: 6
Iscritto: 25/05/2009

Segnala al moderatore
Postato alle 18:59
Lunedì, 25/05/2009
salve....

chi e così gentile da dirmi come posso contare dei campi(o colonne ) da una tabella, dove specificata colonna contenga
un nome registrato in una variabile....
ho provato così ma non mi dà il risultato..



$sql = "SELECT * FROM mpt_teams order by date ASC";
$result = $db->sql_query($sql);
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$tname=mysql_result($result,$i,"tname");
$date=mysql_result($result,$i,"date");


$gioc= "(SELECT COUNT (*) FROM mpt_matches WHERE winner, winner2, winner3 ,loser,loser2, loser3 = '$tname')";
$result2 = $db->sql_query($gioc);
$giocate=mysql_result($result2,"winner, winner2, winner3 ,loser,loser2, loser3 ");


echo "<table align=center width=75%><tr>
<td align=center width=50%>$tname</td>
<td align=center width=50%>$giocate</td>
<td align=center width=50%>$date</td>
</tr>
</table>";

$i++;
}

praticamente, vorrei contare quante volte esiste il valore della variabile $tname nei campi

winner,winner2,winner3,loser,loser2, loser3 della tabella mpt_matches

ed il risultato ... un numero , visualizzarlo come $giocate.

grazie in anticipo...

bye

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:32
Lunedì, 25/05/2009
basta eseguire un query usando l'opzione WHERE e specificando cosa stai cercando
esempio Thejuster

inserisci un while e conti quanti ne esistono

Codice sorgente - presumibilmente PHP

  1. <?
  2. $giocate = 0;
  3.  
  4. $sql = mysql_query("SELECT * FROM tabella WHERE squadra='nome_team';");
  5. while ( $row = mysql_fetch_array($sql)) {
  6.  
  7. $giocate++;
  8.  
  9. }
  10. ?>



in quest'esempio esegui una query su tutta la tabella ma specificando in WHERE la squadra che desideri rilevare,

a quel punto incrementi la variabile intera giocate.


PM Quote
Avatar
atrx (Normal User)
Newbie


Messaggi: 6
Iscritto: 25/05/2009

Segnala al moderatore
Postato alle 23:56
Lunedì, 25/05/2009
Testo quotato

Postato originariamente da Thejuster:

basta eseguire un query usando l'opzione WHERE e specificando cosa stai cercando
esempio Thejuster

inserisci un while e conti quanti ne esistono

Codice sorgente - presumibilmente PHP

  1. <?
  2. $giocate = 0;
  3.  
  4. $sql = mysql_query("SELECT * FROM tabella WHERE squadra='nome_team';");
  5. while ( $row = mysql_fetch_array($sql)) {
  6.  
  7. $giocate++;
  8.  
  9. }
  10. ?>



in quest'esempio esegui una query su tutta la tabella ma specificando in WHERE la squadra che desideri rilevare,

a quel punto incrementi la variabile intera giocate.



-----------------------------------------------------------------------------------------
salve...e grazie per la considerazione....


ok ... ma la squadra in questione e dentro la variabile $tname..

ho provato ma mi risulta 0 eppure dovrebbe darmi 1 perchè nella tabella del  database esiste 1 campo con il nome in questione.


ho provato cosi....ma mi risulta 0..


$giocate = 0;

$sql = mysql_query("SELECT * FROM mpt_matches WHERE winner,winner2,winner3,loser,loser2,loser3='$tname';");
while ( $row = mysql_fetch_array($sql)) {

$giocate++;

}

facendo così mi risulta 0 invece dovrebbe uscire 1...
winner , winner2 eccc... sono i campi che contengono il nome della squadra che è registrato nella variabile $tname....

:d
--------------------------------------------------------------------------------

questo è il link della pagina in questione:

http://www.elitepack.ismywebsite.com/phpnk/modules.php?nam ...

in allegato il database in  questione

questa la pagina php completa.

Codice sorgente - presumibilmente PHP

  1. <?php
  2.  
  3. /*****************************************************************
  4. **MP Tournament Module By: Major Playing (cablemp@insightbb.com)**
  5. **http://mp.rocknrollranchhouse.com                             **
  6. **Copyright © 2005 by Major Playing                             **
  7. *****************************************************************/
  8.  
  9. if (!eregi("modules.php", $_SERVER['SCRIPT_NAME'])) {
  10.     die ("You can't access this file directly...");
  11. }
  12.  
  13. require_once("mainfile.php");
  14. $module_name = basename(dirname(__FILE__));
  15. include("header.php");
  16. include("mptmenu.php");
  17. $index=1;
  18.  
  19. OpenTable();
  20. title("Teams");
  21.  
  22. echo "<table align=center width=75%>
  23. <tr>
  24. <td align=center width=50%><b>Team</b><hr></td>
  25. <td align=center width=50%><b>Giocate</b><hr></td>
  26.  
  27. <td align=center width=50%><b>Joined</b><hr></td>
  28. </tr></table>";
  29.  
  30.  
  31.  
  32.  
  33. $sql = "SELECT * FROM mpt_teams order by date ASC";
  34. $result = $db->sql_query($sql);
  35. $num=mysql_numrows($result);
  36. $i=0;
  37. while ($i < $num) {
  38. $tname=mysql_result($result,$i,"tname");
  39.  
  40. $date=mysql_result($result,$i,"date");
  41.  
  42.  
  43.  
  44. $sql = mysql_query("SELECT * FROM mpt_matches WHERE winner,winner2,winner3,loser,loser2,loser3='$tname';");
  45. while ( $row = mysql_fetch_array($sql)) {
  46.  
  47. $giocate++;
  48.  
  49. }
  50.  
  51.  
  52.  
  53.  
  54. echo "<table align=center width=75%><tr>
  55. <td align=center width=50%>$tname</td>
  56. <td align=center width=50%>$giocate</td>
  57.  
  58. <td align=center width=50%>$date</td>
  59. </tr>
  60. </table>";
  61.  
  62. $i++;
  63. }
  64.  
  65. CloseTable();
  66.  
  67. include("by.php");
  68. include("footer.php");
  69. ?>



atrx ha allegato un file: 1.jpg (18995 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da atrx il 26/05/2009 alle 0:52
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:53
Martedì, 26/05/2009
Il medoto di ricerca che hai scritto e completamente sbagliato.
non si usa la virgola per seperare una ricerca mirata,

prova ad usare i medoti Like e Or.


Codice sorgente - presumibilmente Php

  1. $sql = mysql_query("SELECT * FROM mpt_matches WHERE winner LIKE '%tname' OR winner2 LIKE '%tname' OR winner3 LIKE '%tname' OR loser LIKE '%tname' OR loser2 LIKE '%tname' OR loser3 LIKE '%tname';");
  2.  
  3. while ($row = mysql_fetch_array($sql)) {
  4.  
  5. //incremento varibile se ne caso ha trovato una ricorenza della squadra
  6. //in uno dei campi elencati
  7.  
  8. }



PM Quote
Avatar
atrx (Normal User)
Newbie


Messaggi: 6
Iscritto: 25/05/2009

Segnala al moderatore
Postato alle 12:42
Martedì, 26/05/2009
scusa abbi pazienza......

non ho la presunzione di voler programmare e imparare a programmare ....visto che il mio lavoro non ha nulla a che fare con la programmazione....

volevo provare a creare una classifica per me è i mie cyber amici con cui gioco spesso...
e vedendo quel programmino pensavo che visto che era abbastanza semplice...di poter riuscire a completare ....

aimhè... mi devo ricredere ...anche se ci metto tutta la buona volontà ... non ci riesco proprio....

non capisco ...ho provato a mettere come mi hai gentilmente spiegato...ma continua a ritornare 0

ho provato così:


$giocate = 0;

$sql2= mysql_query("SELECT * FROM mpt_matches WHERE winner LIKE '%tname' or winner2 LIKE '%tname' or winner3 LIKE '%tname' or loser LIKE '%tname' or loser2 LIKE '%tname' or loser3 LIKE '%tname';");

while ($row = mysql_fetch_array($sql2)) {

//incremento varibile se ne caso ha trovato una ricorenza della squadra
//in uno dei campi elencati
$giocate=mysql_result($sql2);


}

metto sql2 perchè già è usata la variabile sql... oppure posso utilizzare sql ugualmente?...

poi non ho capito il suggerimento
//incremento varibile se ne caso ha trovato una ricorenza della squadra
//in uno dei campi elencati

scusami tanto .... ma tutto quello che potrei fare per ricambiare la tua gentilezza è di offrirti una pizza... visto che faccio il pizzaiolo....oppure darti consigli su come cucinare una buona pizza....:rotfl:

abbi pazienza.....spero tanto che riscirò a completare questa benedetta classifica....

francamente per completare il programma classifica ...mi manca solo questo passaggio...perciò se riuscirò a risolvere....finalmente riuscirò a creare qualcosa.... lol...

ciao e grazie
:k:

Ultima modifica effettuata da atrx il 26/05/2009 alle 12:53
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:19
Martedì, 26/05/2009
allora se vuoi fare una classifica ti consiglio di riscrivere completamente il tuo codice
o la tabella che hai attualmente,

io ne userei 3.

Codice sorgente - presumibilmente C++

  1. 1 tabella
  2. che contine il nome della squadra con varie statistiche
  3.  
  4.  
  5. Tabella Team
  6.  
  7. ID Int 10 unsignend NotNull PrimaryKey Autoincrement
  8. NomeSquadra VarChar 255
  9. Vittorie Int 10
  10. Sconfitte int 10
  11. Pareggi int 10
  12.  
  13.  
  14. Tabella Classficia
  15. ID int 10 unsigned NotNull PrimaryKey Autoincrement
  16. IdSquad Int 10
  17. Punti int 10
  18.  
  19. Tabella Partite
  20. ID int 10 Unsigned NotNull PrimaryKey Autoincrement
  21. IDSquad1 int 10
  22. IDSquad2 int 10
  23. Risultato VarChar 255




-------------------

Prima cosa devi creare le squadre e metterle nella Tabella Team

Dopo devi usufruire della tabella partita
ne inserisci una per indicare che è stata svolta una partita
e inserisci tutto in base agl'ID delle altre tabelle
esempio nella tabella Team ci sono 10 squadre
tu prendi la squadra che desideri vedi che ID riporta
e riempi in campi IDSquad1 e IDSquad2
il risultato puoi fare tipo schedina  1  X  2


La classifica la programmi

anche qui deve riportare tutti i nomi delle squadre registrate
quindi quando vai a creare una squadra oltre ad inserirla nella tabella Team
inseriscila anche in Classifica

dopo esegui la query fondamentale


Codice sorgente - presumibilmente PHP

  1. <?php
  2.  
  3. //Primo ciclo di query
  4. //Che controlla le partite che ci sono
  5.  
  6. $sql = mysql_query("SELECT * FROM Partite");
  7.  
  8. while($row = mysql_fetch_array($sql)) {
  9.  
  10. //Se nel risultato e presente 1 ha vinto la squadra con ID1 altrimenti il 2 ecc.
  11.  
  12.  
  13. // in caso di vittoria della squadra a sinistra
  14.  
  15. if($row[risultato] == "1") {
  16.  
  17. //aggiorno la classifica
  18. // ma  devo recuperare i dati necessari per poter incrementare i punti di vittoria
  19.  
  20. $sql = mysql_query("UPDATE classifica SET punti=punti+3 WHERE IDSquad='$row[IDsquad1]';");
  21.  
  22.  
  23. }
  24.  
  25.  
  26.  
  27. //In caso di Pareggio
  28.  
  29. // in caso di vittoria della squadra a sinistra
  30.  
  31. if($row[risultato] == "X") {
  32.  
  33. //aggiorno la classifica
  34. // ma  devo recuperare i dati necessari per poter incrementare i punti di vittoria
  35.  
  36. $sql = mysql_query("UPDATE classifica SET punti=punti+1 WHERE IDSquad='$row[IDsquad1]';");
  37. $sql = mysql_query("UPDATE classifica SET punti=punti+1 WHERE IDSquad='$row[IDsquad2]';");
  38.  
  39. }
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. // in caso di vittoria della squadra a destra
  47.  
  48. if($row[risultato] == "2") {
  49.  
  50. //aggiorno la classifica
  51. // ma  devo recuperare i dati necessari per poter incrementare i punti di vittoria
  52.  
  53. $sql = mysql_query("UPDATE classifica SET punti=punti+3 WHERE IDSquad='$row[IDsquad2]';");
  54.  
  55.  
  56. }
  57.  
  58.  
  59.  
  60. }
  61. ?>



Piu o meno ti ho raffigurato una struttura completa di come dovrebbe funzionare una classifica che gestisca le partite e le squadre.

Un consiglio e quello di rendere le tabelle quanto più pulite possibile
e non farle sproporzionate.

Gli ID autoincrement servono a questo a rappresentare un ID di quella riga
in modo da recuperare dati in maniera facile e voloce.



Ultima modifica effettuata da Thejuster il 26/05/2009 alle 14:22


PM Quote
Avatar
atrx (Normal User)
Newbie


Messaggi: 6
Iscritto: 25/05/2009

Segnala al moderatore
Postato alle 15:33
Martedì, 26/05/2009
è tutto molto bello e chiaro...ma c è un piccolo problema...

nn me reggè.... lol


io ho utilizzato uno script fatto da un altra persona è l ho modificato in maniera tale che si riuscisse a scrivere record nella tabella partite per 6 giocatori.... originale era per 2 team....e fin quì tutto ok....
poi per fare la classifica volevo andare a leggere le partite sotto le colonne winner,winner2 .... ecc ecc.. che venivano scritte direttamente dal codice dello script originale....modificato lievemente perchè scriveva per 6 giocatori..

ora tu mi hai descritto come poter creare una classifica in maniera standard....
ma a me serve solo poter contare quelle colonne ....perchè se non avessi usato lo script di un altro....non mi sarei nemmeno sognato di creare una classifica dalla base...

cmq....ti ringrazio cmq....
mi sà che mi devo portare sta croce per ancora altro tempo....damn...

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:53
Martedì, 26/05/2009
a questo punto allora devi provare solo il medoto che ti ho scritto sopra

Where  Like Or

Ultima modifica effettuata da Thejuster il 26/05/2009 alle 16:53


PM Quote
Avatar
atrx (Normal User)
Newbie


Messaggi: 6
Iscritto: 25/05/2009

Segnala al moderatore
Postato alle 17:54
Martedì, 26/05/2009
HO PROVATO in questo modo:

$gioc="SELECT count(*) as numero_giocate FROM (
SELECT 1 FROM mpt_matches WHERE winner = '$tname'
UNION ALL
SELECT 1 FROM mpt_matches WHERE winner2 = '$tname'
UNION ALL
SELECT 1 FROM mpt_matches WHERE winner3 = '$tname'
UNION ALL
SELECT 1 FROM mpt_matches WHERE loser = '$tname'
UNION ALL
SELECT 1 FROM mpt_matches WHERE loser2 = '$tname'
UNION ALL
SELECT 1 FROM mpt_matches WHERE loser3 = '$tname'
) AS temp_table";

$giocate=$gioc['numero_giocate'];

mi dà come risultato.... una "S" :rotfl:


poi ho provato così:

$giocate="SELECT
(SUM(winner = '$tname') +
SUM(winner2 = '$tname') +
SUM(winner3 = '$tname') +
SUM(loser = '$tname') +
SUM(loser2 = '$tname') +
SUM(loser3 = '$tname') ) AS numero_giocate
FROM mpt_matches";

$giocate=$giocate['numero_giocate'];


e mi dà come risultato... di nuovo una S   :rotfl:


poi ho provato così :


$giocate="SELECT COUNT (*) AS numero_giocate FROM mpt_matches WHERE winner = '$tname' OR winner2 = '$tname' OR winner3 = '$tname' OR loser = '$tname' OR loser2 = '$tname' OR loser3 = '$tname'";

$giocate=$giocate['numero_giocate'];


e come risultato....guarda guarda.... di nuovo una S  stra--lol


che voglia dire S come smettila.... haha...


mahh..chissà---

vabbò....ciao....buona giornata...

Ultima modifica effettuata da atrx il 26/05/2009 alle 17:54
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo