[PHP] Risultato in una sola query

MikSkagit

Nuovo Utente
22 Ago 2017
24
0
1
49
Buongiorno a tutti. Ho creato questi 2 codici i quali identificano il totale ombrelloni presenti e il conteggio della FILA. Non riesco però a creare un solo codice che li unisca, facendo in modo che mi dia per fila la detrazione dal totale sugli ombrelloni.
Posto i 2 codici

PHP:
$queries[] = "SELECT sum(OMBRELLONE) FROM stabilimento1";

   foreach ($queries as $query) {

    $result = mysql_query($query);

    $row = mysql_fetch_assoc($result);

    $totale = $row ['sum(OMBRELLONE)'];

    $ombrellone = (90);

    $totale -= $ombrellone;

}

echo "<div class=\"center\">Ci sono---$totale---ombrelloni liberi</div>";



 

 
$query = "SELECT COUNT(FILA) FROM stabilimento1 where FILA = 1";
$results=mysql_query($query);          
if($myrow=mysql_fetch_array($results)){  
echo "<div class=\"center\">Su 10 Ombrelloni in 1°FILA ne sono occupati ".$myrow["COUNT(FILA)"]."";

}
 
Ultima modifica di un moderatore:
La stampa a video mi da 2 risultati i quali : il numero totale di ombrelloni e il risultato della FILA in quanto con update, ho fatto in modo di unire tutte le file uguali a 1 (where FILA = 1). Non riesco a far si che php mi conteggi la FILA + il rimanente degli ombrelloni su un totale di un ipotetico (90), unendo così i 2 codici.
 
Mi sembra ci sia ancora qualche ambiguità nella richiesta, cioè tu vuoi che:
  • Dato il numero totale di ombrelloni presenti nello stabilimento stampare, per la fila 1, il numero di ombrelloni occupati e il numero di ombrelloni rimanenti (in totale o su quella data fila ?)
 
ciao
una cosa del genere?
ombrelloni.jpg

posta la struttura della tabella stabilimento1
 
Nella form inserisco il numero di ombrelloni assegnati esempio 2 alla voce OMBRELLONE, vorrei che nel conteggio della 1 fila contasse anche la voce OMBRELLONE, ottenendo che in fila 1 sono stati assegnati 2 ombrelloni. Il rimanente (88) dalla somma dell'ipotetico 90 non si deve vedere.
Quando poi andrò a fare altri inserimenti l'update aggiornerà in base alla detrazione.
 
Si ho intuito anche io che non siamo connessi. Appena ho qualche minuto riformulo lo scenario. Mi scuso per la mia inesperienza avendo fatto perdere tempo. A dopo
 
Esatto tranquillo nessun disturbo cerchiamo di fare chiarezza altrimenti avrai risultati e suggerimenti differenti da quelli che ti aspetti, appena hai modo con calma riorganizza la cosa ;)
 
Borgo Italia sono arrivato alla conclusione che una tabella come me l'hai proposta tu sia la migliore soluzione al problema. Perché poi non ci sarebbe solo la fila 1 ma altre ...
 
Dopo svariati tentativi sono giunto a questa semplice riga che mi permette di sommare gli ombrelloni alla fila :

Codice:
SELECT sum (OMBRELLONE) FROM tabella where FILA =1

Il problema "se così si può chiamare" è che dovrei copiare questo codice per "tot" volte ottenendo anche le altre file, otenendo molte stampe a video ... non si potrebbe unificare il tutto con una sola riga di codice come proponeva "Borgo Italia"?
 
Secondo quesito, nel conteggio ombrelloni totali mi stampa a video (- rimanenti), non si può togliere il (-) dalla stampa a video?

Codice:
$queries[] = "SELECT sum(OMBRELLONE) FROM stabilimento1";

   foreach ($queries as $query) {

    $result = mysql_query($query);

    $row = mysql_fetch_assoc($result);

    $totale = $row ['sum(OMBRELLONE)'];

    $ombrellone = (90);

    $totale -= $ombrellone;

}

echo "<div class=\"center\">Ci sono---$totale---ombrelloni liberi</div>";

Il problema è qui secondo me
Codice:
$totale -= $ombrellone;
però non riesco proprio a far sì di togliere il segno (-) dalla stampa a video
 
ciao
come detto posta come hai strutturato la tabella, quando si lavora con i db è più importante la struttara il codice viene di conseguenza, se la tabella è strutturata male dopo è difficile ottenere quello che si vuole, ti faccio un esempio (se non ho capito male) di come struttureri la tabella
Codice:
id int(6) prymarykey autoincrement
num_fila int(3) notnull unique// oppure varchar(6) se es dovessi fare fila 3A
ombrelloni int(6) default 0 //numero di ombrelloni della fila
ombrellone int(6) default 0 //numero di ombrelloni occupati nella fila
il codice come detto viene di conseguenza
PHP:
<?php
//dati di connessione
$query="SELECT * FROM stabilimento ORDER BY num_fila";
$ris=mysqli_query($connessione,$query);
$tot_ombrelloni=0;
$tot_occupati=0;
echo "<table><tr><td>num.fila</td><td>num.ombrelloni</td><td>occupati</td><td>liberi</td></tr>";
while($riga=mysqli_fetch_assoc($ris)){
    //faccio tutti i calcoli in modo che poi mi facilita la stringa da visualizzare
    $fila=$riga['num_fila'];
    $omb_fila=$riga['ombrelloni'];
    $occ_fila=$riga['ombrellone'];
    $lib_fila=$omb_fila-$occ_fila;
    $tot_ombrelloni+=$omb_fila;
    $tot_occupati+=$occ_fila;
    echo "<tr><td>$fila</td><td>$omb_fila</td><td>$occ_fila</td><td>$lib_fila</td></tr>";
}
$tot_liberi=$tot_ombrelloni-$tot_occupati;
echo "<tr><td>totale</td><td>$tot_ombrelloni</td><td>$tot_occupati</td><td>$tot_liberi</td></tr>";
echo "</table>";
//....
?>
da questo semplice codice poi con poche modifiche puoi interrogarlo se ti interessa sapere di una fila in particolare o di un gruppo di file
usando poi i css potresti colorare le varie celle in modo da vedere subito dove sono gli ombrelloni liberi
 
Ultima modifica:
ciao
come detto posta come hai strutturato la tabella, quando si lavora con i db è più importante la struttara il codice viene di conseguenza, se la tabella è strutturata male dopo è difficile ottenere quello che si vuole, ti faccio un esempio (se non ho capito male) di come struttureri la tabella
Codice:
id int(6) prymarykey autoincrement
num_fila int(3) notnull// oppure varchar(6) se es dovessi fare fila 3A
ombrelloni int(6) default 0 //numero di ombrelloni della fila
ombrellone int(6) default 0 //numero di ombrelloni occupati nella fila
il codice come detto viene di conseguenza
PHP:
<?php
//dati di connessione
$query="SELECT * FROM stabilimento ORDER BY num_fila";
$ris=mysqli_query($connessione,$query);
$tot_ombrelloni=0;
$tot_occupati=0;
echo "<table><tr><td>num.fila</td><td>num.ombrelloni</td><td>occupati</td><td>liberi</td></tr>";
while($riga=mysqli_fetch_assoc($ris)){
    //faccio tutti i calcoli in modo che poi mi facilita la stringa da visualizzare
    $fila=$riga['num_fila'];
    $omb_fila=$riga['ombrelloni'];
    $occ_fila=$riga['ombrellone'];
    $lib_fila=$omb_fila-$occ_fila;
    $tot_ombrelloni+=$omb_fila;
    $tot_occupati+=$occ_fila;
    echo "<tr><td>$fila</td><td>$omb_fila</td><td>$occ_fila</td><td>$lib_fila</td></tr>";
}
$tot_liberi=$tot_ombrelloni-$tot_occupati;
echo "<tr><td>totale</td><td>$tot_ombrelloni</td><td>$tot_occupati</td><td>$tot_liberi</td></tr>";
echo "</table>";
//....
?>
da questo semplice codice poi con poche modifiche puoi interrogarlo se ti interessa sapere di una fila in particolare o di un gruppo di file
usando poi i css potresti colorare le varie celle in modo da vedere subito dove sono gli ombrelloni liberi
 
ciao
dimenticavo al campo
num_fila int(3) notnull// oppure varchar(6) se es dovessi fare fila 3A
converrebbe dare l'opzione unique in modo da non avere due file con lo stesso nome
ed inoltre con altre opportune modifiche la <table> puo essere messa in un form in modo da poter occupare o liberare un certo numero di ombrelloni, così vedi ed eventualmente modifichi
 

Discussioni simili