phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

query - where risultato e stampa RIT o DNF, possibile?

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

query - where risultato e stampa RIT o DNF, possibile?

Messaggio da juventissimo » 31/12/2014, 14:35

Buon ultimo giorno dell'anno a tutti e grazie del fantastico anno passato insieme :D
in attesa di mezzanotte ho bisogno di un suggerimento per eseguire una query in quanto non sono un esperto.

io ho una tabella sls_t_career nella quale tra le varie colonne c'e RacePlace dove viene compilato con un numero che puo andare da 1 a 35, ovviamente tali numeri li imposta un pogramma esterno.
io devo estrarre dei valori da tale DB, ma purtoppo se il programma non trova il valore di RacePlace mette 9999 ed io avrei la necessità che al posto di questo valore venisse stampato sulla pagina php RIT o DNF

Codice: Seleziona tutto

SELECT sls_t_career.RacePlace
FROM sls_t_career
WHERE RacePlace = "9999"
io sono riuscito a creare questo (mi crea una risultato con tutti i valori 9999 della colonna RacePlace), ma non so quale sia la funzione/operazione corretta per proseguire ad arrivare al risultato richiesto.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da Micogian » 31/12/2014, 16:02

Non ho capito una cosa: la query deve estrarre tutti i valori che ci sono nella tabella o solamente quelli che hanno RacePlace = "9999" ?

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da juventissimo » 01/01/2015, 14:39

La query che serve a me deve estrarre tutta la colonna ma se è 9999 convertire il risultato in rit o dnf.
Quindi cercando dovrebbe esserci la funzione if...

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da Micogian » 01/01/2015, 16:35

"rit o dfn" sono indifferenti? perchè o uno o l'altro.

Questa la query, ovviamente dopo aver stabilito la connessione con il DB

Codice: Seleziona tutto

$sql = "SELECT * FROM sls_t_career";
    $result = mysql_query($sql);
    $x = 0;
    while ($row = mysql_fetch_array($result)) 
    {
        $RacePlace_cor[$x] = $row['RacePlace'] ;
            if($RacePlace_cor[$x] == '9999')
            {
            $RacePlace_cor[$x] = "rit" ;
            )
        ++$x ;
    }
L'asterisco nel SELECT serve per poter estrarre tutti i campi della tabella, altrimenti si mette l'elenco dei campi necessari, separati da una virgola. Questo se serve associare un altro campo al valore estratto.

La variabile $x è il numero del record, pertanto la variabile $Race_Place_cor[$x] sarà quella relativa al valore $x.
Se il valore di $RacePlace_cor[$x] è '9999' viene trasformato in "rit"

Per visualizzare i dati estratti si usa un ciclo for,

Codice: Seleziona tutto

    <?php
    for($i = 0; $i < $x; ++$i)
    {
    echo $RacePlace_cor[$i] . "<br />";
    }
    ?>

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da juventissimo » 01/01/2015, 17:33

Si si, quelle sono le due possibilità ma appena riesco a fare una prova e vedo il risultato decido quale mettere in funzione allo spazio che occupa sulla colonna.
Grazie mille gentilissimo,ti farò sapere :-)

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da juventissimo » 03/01/2015, 13:22

il codice va bene, ora però mi sono accorto che per farlo funzionare nella mia pagina avrei bisogno di integrarlo nelle operazioni del programma che ragione con il codice qui sotto, io ci ho provato, ma purtoppo mi restituisce tutti i risultati della colonna prima della tabella, io invece avrei bisogno di filtrarli per un IDdriver (mi ero dimenticato dirtelo).
per caso tu sai capire come dovrei integrare il codice nel primo new CCareer perché il risultato attualmente appare con il 9999, ma come ti dicevo vorrei apparisse con RIT o DNF

Codice: Seleziona tutto

$dbLaps = new CCareer();
$dbLaps->SetAddFields("HotLap, TrackName, CarName, SUM(Laps) AS Laps, IDseason, RacePlace");
$dbLaps->SetAllFields(false);
$dbLaps->SetGroup('TrackName, CarName, HotLap, IDseason, RacePlace');
$dbLaps->SetSort('TrackName, HOTLAP, IDseason, RacePlace');
$dbLaps->SetHaving('HotLap=MIN(HotLap)');
$dbLaps->SetFilter('IDdriver=' . $dataarray['IDdriver'] . ' AND HotLap NOT IN(0,' . STAND_NOTIMEMK . ')');
$dbLaps->GetAllRecords();

$dbCons = new CCareer();
$dbCons->SetPersistentFilter('IDdriver=' . $dataarray['IDdriver'] . ' AND Consistency NOT IN(0,' . STAND_NOTIMEMK . ') AND Consistency IS NOT NULL');
$dbCons->SetAddFields('AVG(Consistency) AS CONSISTENCY');
$dbCons->SetAllFields(false);

$table = new CTable();
$table->SetPrintReturn(true);

$hotlaps = $table->OpenTable(0, '', '', '', '', '', '', '', '', 'text-align:left');
$hotlaps .= $table->PrintData($lang['nei_season'], '', '', 'det_name_frame', 'text-align:center', '', '50px');
		$hotlaps .= $table->PrintData($lang['drvlst_team'], '', '', 'det_name_frame', 'text-align:center', '', '118px');
		$hotlaps .= $table->PrintData($lang['drvdet_ctrack'], '', '', 'det_name_frame', 'text-align:center', '', '118px');
		$hotlaps .= $table->PrintData($lang['drvdet_chot'], '', '', 'det_name_frame', 'text-align:center', '', '55px');
		$hotlaps .= $table->PrintData($lang['stcars_pos'], '', '', 'det_name_frame', 'text-align:center', '', '25px');
		$hotlaps .= $table->PrintData($lang['drvdet_claps'], '', '', 'det_name_frame', 'text-align:center', '', '25px');

while (!$dbLaps->eof())
	{
	$dbCons->GetSelectedData("TrackName='" . $dbLaps->Fields['TrackName'] . "' AND CarName='" . $dbLaps->Fields['CarName'] . "'");

	$hotlaps .= $table->NextRow();
	$hotlaps .= $table->PrintData($dbLaps->Fields['IDseason'], '', '', 'team_det_drv', 'text-align:left', '', '');
	$hotlaps .= $table->PrintData($dbLaps->Fields['CarName'], '', '', 'team_det_drv', 'text-align:left', '', '118px');
	$hotlaps .= $table->PrintData(GetRealTrackName($dbLaps->Fields['TrackName']), '', '', 'team_det_drv', 'text-align:left', '', '118px');
	$hotlaps .= $table->PrintData(MicrosecToTime($dbLaps->Fields['HotLap']), '', '', 'team_det_drv', 'text-align:center', '', '');
	$hotlaps .= $table->PrintData($dbLaps->Fields['RacePlace'], '', '', 'team_det_drv', 'text-align:center', '', '');
	$hotlaps .= $table->PrintData($dbLaps->Fields['Laps'], '', '', 'team_det_drv', 'text-align:right', '', '');

	$dbLaps->NextRow();
	}

$hotlaps .= $table->CloseTable();
print $hotlaps;
inoltre ho trovato il codice per restituire l'ID della stagione (IDseason che ho provveduto ad inserirlo sopra), ma io vorrei restituire il nome riferito e si trova nella tabella sls_t_seasons nella colonna SeasonName.
guardando a fondo il discorso della connessione al database ho trovato che per entrare in quella tabella il programma utilizza questa funzione CSeasons() quindi mi sono copiato un codice sopra e ho provato a compilarla, ma non capendo e non trovando nulla sul web sono venuto a chiedere supporto a te.

Codice: Seleziona tutto

$dbLapss = new CSeasons();
$dbLapss->SetAddFields("SeasonName");
$dbLapss->SetAllFields(false);
$dbLapss->SetGroup('SeasonName');
$dbLapss->SetSort('SeasonName');
$dbLapss->SetHaving('');
$dbLapss->SetFilter('IDdriver=' . $dataarray['IDdriver'] . ' AND IDseason NOT IN(0,' . STAND_NOTIMEMK . ')');
$dbLapss->GetAllRecords();
grazie mille per il supporto che date :)

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da Micogian » 03/01/2015, 17:06

Sarà anche corretto ma non è così che io sono abituato a interrogare un database.
Una query può anche estrarre dati da più tabelle, basta che ci sia un riferimento in comune tra le tabelle.
Ad esempio, se mi serve il nome dell'utente che si trova in un'altraevo per lo meno avere a disposizione il suo ID.
Nella sezioni Wiki di questo forum avevo creato una guida su come si interroga un database e c'è un esempio anche con più tabelle.
Mettere mani sul tuo codice per me non è facile, è un sistema che non uso mai.

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da juventissimo » 03/01/2015, 17:55

Micogian ha scritto:Sarà anche corretto ma non è così che io sono abituato a interrogare un database.
Una query può anche estrarre dati da più tabelle, basta che ci sia un riferimento in comune tra le tabelle.
Ad esempio, se mi serve il nome dell'utente che si trova in un'altraevo per lo meno avere a disposizione il suo ID.
Nella sezioni Wiki di questo forum avevo creato una guida su come si interroga un database e c'è un esempio anche con più tabelle.
Mettere mani sul tuo codice per me non è facile, è un sistema che non uso mai.
infatti ho a disposizione un campo in relazione comune perché sula tabella sls_t_season ho questo IDseason 5 che si autoincrementa (a cui è collegato un SeasonName chiamato pippo) invece su sls_t_career (mi appare il numero dell' IDseason) quindi mi piacerebbe che su career invece che il numero stampasse il nome pippo.
ho provato a fare una query esterna che analizzasse il numero, ma non va :( perchè manca credo una relazione all'IDdriver che decide quale record stampare

Codice: Seleziona tutto

SELECT sls_t_seasons.SeasonName
FROM sls_t_career
INNER JOIN sls_t_seasons
ON sls_t_career.IDseason=sls_t_seasons.IDseason

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da Micogian » 03/01/2015, 20:06

Si possono interrogare più tabelle di un database pueche tra le due tabelel ci sia un campo in comune.
Un esempio basato su campi teorici potrebbe essere questo:

Codice: Seleziona tutto

$sql = "SELECT a.campo1, a.campo2, a.campo3, b.campo4, b.campo5
    FROM tabella1 a, tabella2 b
   WHERE a.campo1 = b.campo4";
    $result = mysql_query($sql);
    $x = 0;
    while ($row = mysql_fetch_array($result)) 
    {
        $var1[$x] = $row['campo1'] ;
        $var2[$x] = $row['campo2'] ;
        $var3[$x] = $row['campo3'] ;
        $var4[$x] = $row['campo4'] ;
        $var5[$x] = $row['campo5'] ;

            if($campo2[$x] == '9999')
            {
            $var2[$x] = "rit" ;
            )
        ++$x ;
    }
In questo modo si assegnano le stringhe "a" e "b" alle rispettive tabelle per semplifivare il codice.
Il campo a.campo1 sarà un campo della prima tabella, il campo b.campo4 sarà della seconda tabella.
a.campo1 e b.campo4 sono i valori in comune tra le tabelle.
Il risultato è un array di variabili denominato "var1[$x]" ecc. dove il valore $x è il numero progressino dei records.
Poi bisogna vedere come utilizzarli per la visualizzazione, il ciclo for del primo esempio va benissimo, va solo messo al posto giusto.

juventissimo
Utente
Utente
Messaggi: 243
Iscritto il: 11/12/2011, 12:21
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.3.28
Database: MySQL 5.5.36-34.2-log
Contatta:

Re: query - where risultato e stampa RIT o DNF, possibile?

Messaggio da juventissimo » 04/01/2015, 15:10

ti ringrazio, ma non mi viene fuori nulla... appare solo pagina bianca con i miei tag di tabella

Codice: Seleziona tutto

<?php
// richiamo il file di configurazione
require 'config.php';

// richiamo lo script responsabile della connessione a MySQL
require 'connect.php';

// il resto dello script: posso effettuare query
// senza preoccuparmi della connessione a MySQL
?>


			<table style="width: 1200px;text-align:center">
				<thead>
					<tr style="height:50px">
                        <th id="title">col1</th>
                        <th id="title">col2</th>
                        <th id="title">col3</th>
                        <th id="title">col4</th>
                        <th id="title">col5</th>
                    </tr>
				</thead>
				<tbody>

				<?php
    $sql = "SELECT a.IDdriver, a.RacePlace, a.IDseason, b.IDdriver, b.FName
        FROM sls_t_career a, sls_t_drivers b
       WHERE a.IDdriver = b.IDdriver";
        $result = mysql_query($sql);
        $x = 0;
        while ($row = mysql_fetch_array($result))
        {
            $IDdriver[$x] = $row['IDdriver'] ;
            $RacePlace[$x] = $row['RacePlace'] ;
            $IDseason[$x] = $row['IDseason'] ;
            $IDdriver[$x] = $row['IDdriver'] ;
            $FName[$x] = $row['FName'] ;

                if($RacePlace[$x] == '9999')
                {
                $RacePlace[$x] = "RIT" ;
        }
            ++$x ;
        }
				?>
				</tbody>
			</table>
:oops: :oops: :cry: :cry:

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti