[PHP] Check tra 2 campi della stessa tabella

Enri Rosso

Nuovo Utente
6 Nov 2016
11
0
1
53
Ciao a tutti , ho un problema e vorrei capire dove sbaglio.
Ho una tabella che viene aggiornata periodacamente e vorrei fare un check se il campo1 e >= del campo2.
Praticamente ho fatto cosi

$check = "SELECT * FROM $tbl_lim_do WHERE lim_day > min_tot";
$q_check = mysql_query($check) or die('Errore QUERY CONTROLLO MINUTI...');
echo $q_check;

La select funziona ma su pagina PHP ho l'errore
Resource id #3
Come posso correggere?
 
Prova con la funzione LEAST dovresti poter estrarre il valore minore tra due campi.. non l'ho mai testata ma da quanto ho letto in giro potrebbe essere una soluzione.

In più hai controllato che i dati salvati siano di tipo numerico?

Saluti.
G.G.
 
Ultima modifica:
Ciao e grazie x la tua risposta.
Non devo estrarre il valore minore, ma se lim_day >= min_tot devo prelevare un campo settare altro, ma solo se la condizione è giusta.
Grazie
 
Ma nn puoi farlo con php una volta estratti i valori? Nel senso ( sempre che io abbia capito il problema ) con un ciclo estrai, confronti e in base al risultato ottenuto -> crei, aggiorni ecc..
 
ciao
guarda che stai facendo un po' di confusione, echo $q_check; ti riporta il risultato della query (NON un errore)
dandoti Resource id #3 vuol dire che la query è andata a buon fine, altrimenti ti avrebbe dato false
se vuoi visualizzare i valori dei campi devi usare mysql_fetch_array o mysql_fetch_assoc dentro un ciclo while (non sapendo i nomi dei tuoi cami li metto a caso)
PHP:
//....
$check = "SELECT * FROM $tbl_lim_do WHERE lim_day > min_tot";
$q_check = mysql_query($check) or die('Errore QUERY CONTROLLO MINUTI...');
while($riga=mysql_fetch_array($q_chec)){
    echo $riga['campo_1'];
    echo $riga['campo_2'];   
}
//....
 
OK
Si funziona ed è come volevo io.
Domanda e se il risultato ha 5 valori ed io ne volessi uno per volta come trovei fare?
Nel senso che ora ho questo risultato
corridore01corridore02corridore03
mentre io vorrei prima corridore01 poi rifaccio corridore02 e poi ancora corridore03
 
ciao
per farlo devi sapere e far sapere a php prima cosa deve estarre cioè mettere nel WHERE della quary un qualcosa che ti faccia estrarre es. solo 02
 
C'è un modo per ripetere la query per tutti corridori?
Nel senso che se ci sono 25 corridori io faccio rieseguire la query 25 volte e ogni volta prendo il primo
 
Scusa se faccio cosi

$check = "SELECT * FROM $tbl_lim_do WHERE lim_day > min_tot LIMIT 1";

Io dovrei prendere solo il primo e poi devo rieseguire di nuovo?
Grazie
 
Ti seleziona solo il primo risultato che soddisfa la condizione. E la seconda volta ti riprenderà lo stesso ..
A te serve un ciclo foreach, che prende ad uno ad uno i risultati che soddisfano la condizione e fa le operazioni richieste su ognuno..


Saluti
G.G.
 
Ciao tu dici cosi?

$check = "SELECT * FROM $tbl_lim_do WHERE min_tot >= lim_day";
$q_check = setFetchMode((PDO::FETCH_ASSOC)mysql_query($check) or die('Errore QUERY CONTROLLO MINUTI...'));
while($riga=$q_check->fetch())
{
echo $riga['exten']"<br />";
}
Grazie
 
Quello che dico io è una cosa del genere.. Questo è lo schema che uso per estrarre i dati solitamente dal db..
Potrebbe tornarti utile..
PHP:
 <?php
 // Estraggo i dati prodotti da db 
          include '../db/connection.php';
          try
        {
          $sql = 'SELECT id, titolo, prezzod, prezzop, linkimm, linkprod, percentuale, data, ora, spedizione, click, pub, categoria FROM prodotti WHERE data = CURDATE()'; //esempio
          $result = $pdo->query($sql);
        }
        catch (PDOException $e)
        {
          $error = 'Error: ' . $e->getMessage();
          include '../db/ERRORDB/outputpage.php';
          exit();
        }     
        foreach ($result as $row) // Primo ciclo, incamero tutti i dati in un'array $prodotti[]
        {
          $prodotti[] = array(
            'id' => $row['id'],
            'titolo' => $row['titolo'],
            'prezzod' => $row['prezzod'],
            'prezzop' => $row['prezzop'],
            'linkimm' => $row['linkimm'],
            'linkprod' => $row['linkprod'],
            'percentuale' => $row['percentuale'],
            'data' => $row['data'],
            'ora' => $row['ora'],
            'spedizione' => $row['spedizione'],
            'click' => $row['click'],
            'pub' => $row['pub'],
            'categoria' => $row['categoria']
            
          );
        }
        // fine estrazione dati prodotti da db
        ?>     
            <?php foreach ($prodotti as $prodotto): // prendo i valori di ogni singolo prodotto e li stampo?>


                <div><?php echo $prodotto["id"]. '-' .$prodotto["titolo"].'ecc..'.$prodotto["prezzod"]. $prodotto["prezzop"];?></div>
                <!-- Continuerà a stamparti tutti i valori fino alla fine..-->
            <?php endforeach; ?>
 
Esattamente è un costrutto che fa questo..
PHP:
try
        {
          //prova connessione..
        }
        catch (PDOException $e)
        {
         // Se va male fai qualcosa...
        }
Ma se non vuoi utilizzarlo puoi farne a meno..
Ho visto che usavi PDO, per questo te l'ho inserito. L'errore in questo caso viene salvato nella variabile $e e viene visualizzato nel mio caso in una pagina che ho costruito appositamente: include '../db/ERRORDB/outputpage.php';
 

Discussioni simili