Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Controlli su campi, non ho capito come fare

    Buon giorno a tutti, ho questo problema.
    Eseguo dei controlli su valori inviati tramite un form.
    All'interno del primo controllo, strutturo una select che man mano, che aggiungo valori, viene completata per restituirmi dei record.
    Mi sono accorto che cosi facendo, anche se, il valore che inserisco per la ricerca, non è presente all'interno della Tabella, la query viene eseguita ugualmente(e giustamente).

    Però vorrei sapere come faccio a strutturare una query, passo passo..

    codice:
    if($host=="" || $user=="" || $pass==""){
    	echo "Impossibile eseguire la connessione verso il DB";
    	exit;
    }
    else{
    if($txtMunicipio!="" || $txtZona!="" || $txtQuartiere!="" || $txtGruppo!="" || $txtLotto!=""){
    //connessione al database
    $conn = mysql_connect($host,$user,$pass) or die ("Connessione Fallita!! " . mysql_error());
    //selezione del DB
    $db = mysql_select_db("DB_SITO") or die ("Selezione del DB Fallita!! ". mysql_error());
    
    $qTot = ("SELECT * from TBDATIGENERALI ") or die ("Impossibile eseguire la query".mysql_error());
    
    if($txtZona!=""){
    	$sel .= (" tol_Zona_Amm = '". $txtZona ."'") or die ("Non è possibile eseguire la SUM riga 61: " . mysql_error());
    }
    elseif($txtMunicipio!=""){
    $sel .= (" tol_Municipio = '". $txtMunicipio ."'") or die ("Non è possibile eseguire la SUM riga 61: " . mysql_error());
    }
    
    $qTot = mysql_query($qTot) or die("Query non valida: ".mysql_error());
    while ($row = mysql_fetch_array ($qTot)){
    //ect ect
    }
    }//chiusura if
    }//chiusura else
    }//chiusura 1° if
    Come faccio a non far eseguire la query, dopo il primo controllo?
    Oppure, come faccio, a fare una query concatenata tramite i sopracitati controlli?

    Grazie mille...

  2. #2
    La query non è altro che una stringa con il seguente formato (semplificato per le tue esigenze):

    codice:
    SELECT * FROM TBDATIGENERALI WHERE condizione1 AND condizione2
    Le tue 2 condizioni (se ho evinto correttamente) sono tol_Zona_Amm = 'qualcosa' e tol_Municipio = 'qualcosaltro'. Entrambe sono opzionali, quindi puoi avere le seguenti possibilità:

    codice:
    nessuna condizione specificata
    SELECT * FROM TBDATIGENERALI
    solo una condizione specificata
    SELECT * FROM TBDATIGENERALI WHERE tol_Municipio='la chucha'
    entrambe le condizioni specificate
    SELECT * FROM TBDATIGENERALI WHERE tol_Zona_Amm='porongo' AND tol_Municipio='carajo'
    Quando hai generato la stringa di query, la sua esecuzione ti ritornerà i risultati desiderati nel ciclo while che hai implementato.

    Codice PHP:
    // Poniamo che hai registrato la stringa di query in $query
    $risultato mysql_query($query) or die(mysql_error());
    while (
    $row mysql_fetch_array ($risultato)) {
        
    // Gestisci la riga di risultato (con print_r la stampo)
        
    print_r($row);

    In fase di debug, è molto comodo avere solo la visualizzazione della query senza eseguirla per poter controllare se la sintassi della query è corretta. Quindi, quando stai facendo le prove, sostituisci il codice PHP sopraccitato con:

    Codice PHP:
    echo "<pre>$query</pre>"
    La generazione della stringa di query, che è la parte più difficile della faccenda, per questioni didattiche devi farla tu.

  3. #3
    Grazie per avermi risposto. Questo va bene, ma io volevo sapere come realizzare la struttura dei controlli, per non incorrere nell'esecuzione, della select, qualcora il valore passato non fosse presente all'interno della tabella.

    spero di essere stato chiaro...

  4. #4
    vorrei sapere, se questa select è valida oppure no...
    codice:
    SELECT
    	distinct  
    	tol_Alloggi_ceduti as Alloggi_ceduti,  
    	tol_Locali_ceduti as Locali_ceduti,
    	tol_Cantine_cedute as Cantine_cedute,
    	tol_Posti_auto_ceduti as Posti_auto_ceduti,
    
    	tol_Alloggi_Azienda as Alloggi_Azienda,  
    	tol_Locali_Azienda as Locali_Azienda,
    	tol_Cantine_Azienda as Cantine_Azienda,
    	tol_Posti_auto_Azienda as Posti_auto_Azienda,
    
    	tol_Alloggi_ceduti + tol_Locali_ceduti + tol_Cantine_cedute + tol_Posti_auto_ceduti as totAlloggiCed,
    	tol_Alloggi_Azienda + tol_Locali_Azienda + tol_Cantine_Azienda + tol_Posti_auto_Azienda as totAlloggiAzienda
    	from TBDATIGENERALI where tol_Municipio = '20'
    
    //dopo di che eseguo la select ed il relativo ciclo
    $qTot = mysql_query($qTot) or die("Query non valida: ".mysql_error());
    //$row=mysql_fetch_array($qTot);
    while ($row = mysql_fetch_array ($qTot)){
    	$nTotAllCeduto = $row['totAlloggiCed'];
    	$nTotAllAzienda = $row['totAlloggiAzienda'];
    	$nUni_Immo_Accertare = $row['Num_Accertare'];
    	$nAllCeduti = $row['Alloggi_ceduti'];
    	$nLocCeduti = $row['Locali_ceduti'];
    	$nCantSoffCedute = $row['Cantine_cedute'];
    	$nPostiAutoCeduti = $row['Posti_auto_ceduti'];
    	$nAllAzienda = $row['Alloggi_Azienda'];
    	$nLocAzienda = $row['Locali_Azienda'];
    	$nCantSoffAzienda = $row['Cantine_Azienda'];
    	$nPostiAutoAzienda = $row['Posti_auto_Azienda'];
    	$nPartiComuni = $row['parti_Comuni'];
    	$nTotFabbricati = $row['Tot_fabbricati'];
    }
    
    //ancora dopo stampo i risultati
    echo "<div class=\"fTotUnitCed\">".$nTotAllCeduto."</div>";
    echo "<div class=\"fTotUnitAzienda\">".$nTotAllAzienda."</div>";
    echo "<div class=\"fTotUni_Immo_Accertare\">".$nUni_Immo_Accertare."</div>";
    Purtroppo i risultati non sono corretti...e non capisco come mai!!
    Potete aiutarmi per favore?

  5. #5
    Originariamente inviato da ANTAGONIA
    ...come realizzare la struttura dei controlli, per non incorrere nell'esecuzione, della select, qualora il valore passato non fosse presente all'interno della tabella
    Finché non esegui la SELECT non saprai se ci sono o meno valori.

  6. #6
    Originariamente inviato da ANTAGONIA
    vorrei sapere, se questa select è valida oppure no...
    codice:
    SELECT
    	distinct  
    	tol_Alloggi_ceduti as Alloggi_ceduti,  
    	tol_Locali_ceduti as Locali_ceduti,
    	tol_Cantine_cedute as Cantine_cedute,
    	tol_Posti_auto_ceduti as Posti_auto_ceduti,
    
    	tol_Alloggi_Azienda as Alloggi_Azienda,  
    	tol_Locali_Azienda as Locali_Azienda,
    	tol_Cantine_Azienda as Cantine_Azienda,
    	tol_Posti_auto_Azienda as Posti_auto_Azienda,
    
    	tol_Alloggi_ceduti + tol_Locali_ceduti + tol_Cantine_cedute + tol_Posti_auto_ceduti as totAlloggiCed,
    	tol_Alloggi_Azienda + tol_Locali_Azienda + tol_Cantine_Azienda + tol_Posti_auto_Azienda as totAlloggiAzienda
    	from TBDATIGENERALI where tol_Municipio = '20'
    Se non ti da errore è valida, no?

    codice:
    while ($row = mysql_fetch_array ($qTot)){
    	$nTotAllCeduto = $row['totAlloggiCed'];
    	$nTotAllAzienda = $row['totAlloggiAzienda'];
    	$nUni_Immo_Accertare = $row['Num_Accertare'];
    	$nAllCeduti = $row['Alloggi_ceduti'];
    	$nLocCeduti = $row['Locali_ceduti'];
    	$nCantSoffCedute = $row['Cantine_cedute'];
    	$nPostiAutoCeduti = $row['Posti_auto_ceduti'];
    	$nAllAzienda = $row['Alloggi_Azienda'];
    	$nLocAzienda = $row['Locali_Azienda'];
    	$nCantSoffAzienda = $row['Cantine_Azienda'];
    	$nPostiAutoAzienda = $row['Posti_auto_Azienda'];
    	$nPartiComuni = $row['parti_Comuni'];
    	$nTotFabbricati = $row['Tot_fabbricati'];
    }
    Questo ciclo non esegue assolutamente niente. Non so cosa tu voglia fare, ma fatto così è sicuramente sbagliato. Assicurati inoltre che i nomi dei campi siano corretti (maiuscole/minuscole, sottolineature ecc...).

    Mentre sviluppi, se vuoi vedere il contenuto basta che fai così:

    Codice PHP:
    echo '<pre>';
    while (
    $row mysql_fetch_array ($qTot)) {
        
    print_r ($row);
    }
    echo 
    '</pre>'
    e finché non ottieni quello che vuoi continua a lasciarlo così, altrimenti invece di risolvere un problema ti perdi in una decina di sfronzoli. Affronta un problema alla volta se non vuoi bruciare la gioventù su questo programma.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.