Oppure

Loading
25/05/09 16:59
atrx
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
aaa
25/05/09 19:32
Thejuster
basta eseguire un query usando l'opzione WHERE e specificando cosa stai cercando
esempio Thejuster

inserisci un while e conti quanti ne esistono


<?
$giocate = 0;

$sql = mysql_query("SELECT * FROM tabella WHERE squadra='nome_team';");
while ( $row = mysql_fetch_array($sql)) {

$giocate++;

}
?>



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.
mire.forumfree.it/ - Mire Engine
C# UI Designer
25/05/09 21:56
atrx
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


<?
$giocate = 0;

$sql = mysql_query("SELECT * FROM tabella WHERE squadra='nome_team';");
while ( $row = mysql_fetch_array($sql)) {

$giocate++;

}
?>



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:

elitepack.ismywebsite.com/phpnk/…

in allegato il database in questione

questa la pagina php completa.


<?php

/*****************************************************************
**MP Tournament Module By: Major Playing (cablemp@insightbb.com)**
**http://mp.rocknrollranchhouse.com                             **
**Copyright © 2005 by Major Playing                             **
*****************************************************************/

if (!eregi("modules.php", $_SERVER['SCRIPT_NAME'])) {
    die ("You can't access this file directly...");
}

require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
include("header.php");
include("mptmenu.php");
$index=1;

OpenTable();
title("Teams");

echo "<table align=center width=75%>
<tr>
<td align=center width=50%><b>Team</b><hr></td>
<td align=center width=50%><b>Giocate</b><hr></td>

<td align=center width=50%><b>Joined</b><hr></td>
</tr></table>";



 
$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");



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

$giocate++;

} 




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++;
}

CloseTable();

include("by.php");
include("footer.php");
?>
Ultima modifica effettuata da atrx 25/05/09 22:52
aaa
26/05/09 6:53
Thejuster
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.



$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';");

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

//incremento varibile se ne caso ha trovato una ricorenza della squadra
//in uno dei campi elencati

}

mire.forumfree.it/ - Mire Engine
C# UI Designer
26/05/09 10:42
atrx
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 26/05/09 10:53
aaa
26/05/09 12:19
Thejuster
allora se vuoi fare una classifica ti consiglio di riscrivere completamente il tuo codice
o la tabella che hai attualmente,

io ne userei 3.

1 tabella
che contine il nome della squadra con varie statistiche


Tabella Team

ID Int 10 unsignend NotNull PrimaryKey Autoincrement
NomeSquadra VarChar 255
Vittorie Int 10
Sconfitte int 10
Pareggi int 10


Tabella Classficia
ID int 10 unsigned NotNull PrimaryKey Autoincrement
IdSquad Int 10
Punti int 10

Tabella Partite
ID int 10 Unsigned NotNull PrimaryKey Autoincrement
IDSquad1 int 10
IDSquad2 int 10
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




<?php

//Primo ciclo di query
//Che controlla le partite che ci sono

$sql = mysql_query("SELECT * FROM Partite");

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

//Se nel risultato e presente 1 ha vinto la squadra con ID1 altrimenti il 2 ecc.


// in caso di vittoria della squadra a sinistra

if($row[risultato] == "1") {

//aggiorno la classifica
// ma  devo recuperare i dati necessari per poter incrementare i punti di vittoria

$sql = mysql_query("UPDATE classifica SET punti=punti+3 WHERE IDSquad='$row[IDsquad1]';");


}



//In caso di Pareggio

// in caso di vittoria della squadra a sinistra

if($row[risultato] == "X") {

//aggiorno la classifica
// ma  devo recuperare i dati necessari per poter incrementare i punti di vittoria

$sql = mysql_query("UPDATE classifica SET punti=punti+1 WHERE IDSquad='$row[IDsquad1]';");
$sql = mysql_query("UPDATE classifica SET punti=punti+1 WHERE IDSquad='$row[IDsquad2]';");

}






// in caso di vittoria della squadra a destra

if($row[risultato] == "2") {

//aggiorno la classifica
// ma  devo recuperare i dati necessari per poter incrementare i punti di vittoria

$sql = mysql_query("UPDATE classifica SET punti=punti+3 WHERE IDSquad='$row[IDsquad2]';");


}



}
?>




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 26/05/09 12:22
mire.forumfree.it/ - Mire Engine
C# UI Designer
26/05/09 13:33
atrx
è 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...
aaa
26/05/09 14:53
Thejuster
a questo punto allora devi provare solo il medoto che ti ho scritto sopra

Where Like Or
Ultima modifica effettuata da Thejuster 26/05/09 14:53
mire.forumfree.it/ - Mire Engine
C# UI Designer