Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    33

    join sulla stessa tabella...

    ho un db così composto:

    IT-Trade

    |ID|Marca|Modello|
    |1 |casio |xy1
    |2 |casio |xy2
    |3 |casio |xy3
    |4 |acer |ab1
    |5 |acer |ab2
    ecc
    ecc

    come faccio a fare una query per farmi restituire il modello in base alla marca scelta nella prima query: << SELECT marca FROM IT_Trade group BY marca ASC >>

    in pratica voglio che nella seconda tendina di scelta appaiano i modelli relativi alla marca
    con una SELF JOIN e un WHERE marca=$_POST[marca] dovrei riuscire ??
    perchè mettendo solo la condizione WHERE non funziona!!!

    grazie!

  2. #2
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Posta il codice che usi, magari hai fatto degli errori di sintassi.
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    33
    ecco il codice option.class.php
    Codice PHP:
    <?php
    class Option
    {
        public 
    $conn;
     
            public function 
    __construct()
            {
                
    $this->DbConnectAndSelect();
            }
     
            protected function 
    DbConnectAndSelect()
            {
                include_once 
    "db_config.php";
                
    $this->conn mysql_connect($db_host,$username,$password);
                
    mysql_select_db($db_name$this->conn);
                return 
    TRUE;
            }
     
            public function 
    ShowMarca()
            {
                
                echo 
    'Seleziona una marca:
    '
    ;
                echo 
    '<select id="sel_manufacturer" name="sel_manufacturer"><option value="no">Scegli...</option>';

                
    $sql "SELECT manufacturer FROM IT_Trade group BY manufacturer ASC";        
                
    $res mysql_query($sql,$this->conn);

                    while(
    $row mysql_fetch_array($res))
                    
                    {
                        echo 
    '<option value="' $row['ID'] . '">'$row[manufacturer] .   '</option>';                    

                    }
                echo 
    '</select>';             
            }
            
            public function 
    ShowModello()
            { 
            if(
    $_POST['manufacturer'] == "no")
                {
                    die;
                }    
                
                
    $sql "SELECT ID,ModelNo FROM IT_Trade WHERE manufacturer=$_POST[manufacturer]";
                
                
    $res mysql_query($sql,$this->conn);
                    echo
    '<option value="no">Scegli...</option>';
                    while(
    $row mysql_fetch_array($res))
                    {
                        echo 
    '<option value="' $row['ID'] . '">' $row[ModelNo] . '</option>';
                    }
                    echo 
    '</select>';
            }
            public function 
    ShowResult()
            {
                if(
    $_POST['ID'] == "no")
                {
                    die;
                }
                echo 
    '

    Hai scelto il modello: '
    ;
                
    $sql "SELECT ModelNo,Trade_Price FROM IT_Trade WHERE id=$_POST[id]";
                
    $res mysql_query($sql,$this->conn);
                
    $row mysql_fetch_array($res);
                echo 
    $row[ModelNo];

                
    //calcolo aumento prezzo al pubblico
    {
    $num1=20;
    $num2=100;
    {
    $x = (($num1 $num2)* $row['Trade_Price']);}
    {
    $y = ($row['Trade_Price'] + $x)+10; }
    //fine calcolo
    echo "  -  Euro: " round($y2)  . ""//visualizzazione risultato
    }
            }
    }
     
    ?>
    e questo l'index

    Codice PHP:
    <html>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <script type="text/javascript" src="./jquery-1.3.2.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
     
    $('#sel_manufacturer').change(function(){
     
                var cont = $('#sel_manufacturer').attr('value');
     
                $.post("selection.php", {manufacturer:cont}, function(data){
                $("#sel_modelno").empty();
                $("div#result").empty();
                $("#sel_modelno").prepend(data);
                });
                });
     
    $('#sel_modelno').change(function(){
     
                var id_naz = $('#sel_modelno').attr('value');
     
                $.post("result.php", {id:id_naz}, function(data){
                $("div#result").empty();
                $("div#result").prepend(data);
                });
                });
     
    });
    </script>
    </head>
     
     
    <body>
    <div id="continenti">
    <?php
    include_once 'option.class.php';
    $obj = new Option();
    $obj->ShowMarca();
    ?>
    </div>
     
    <div id="nazioni">
    Seleziona un modello:

    <select id="sel_modelno" name="sel_modelno"><option value="no">Scegli...</option>
    </select>
    </div>
     
    <div id="result"></div>
     
     
    </body>
     
    </html>

  4. #4
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Dopo questa query:
    Codice PHP:
     $sql "SELECT ModelNo,Trade_Price FROM IT_Trade WHERE id=$_POST[id]"
    Fai una echo $sql; per vedere com'è fatta la query e cosa mette nel WHERE, perchè forse va scritta così:
    Codice PHP:
     $sql "SELECT ModelNo,Trade_Price FROM IT_Trade WHERE id='$_POST[id]'"
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    33
    questo è il risultato WHERE id=130X 15e - Euro: 492.45

    ma il problema non sta li...

    sta qui: $sql = "SELECT ID,ModelNo FROM IT_Trade ";

    in pratica quando scelgo la marca la select dopo di popola con tutti i modelli presenti nel db,

    quindi non sta tenendo conto della prima scelta.
    se poi metto la condizione WHERE manufacturer=$_POST[manufacturer] non mi popola la seconda select che è quella dei modelli.

    non so che fare!!!

    in ogni caso ho provato a fare come dici tu e questo è il risultato sulla query prima che appare nella tendina

    SELECT ID,ModelNo FROM IT_Trade WHERE id=''

  6. #6
    Originariamente inviato da pato79
    questo è il risultato WHERE id=130X 15e - Euro: 492.45

    ma il problema non sta li...

    sta qui: $sql = "SELECT ID,ModelNo FROM IT_Trade ";
    codice:
     $sql = "SELECT ID, ModelNo 
           FROM IT_Trade 
           WHERE manufacturer= '$_POST[manufacturer]' ";
    senza le apici $_POST[manufacturer] diventa il nome di un campo e non sara' piu' una stringa.

    se mettessi la segnalazione degli errori mysql_error() dopo la query lo troveresti (il problema) senza alcun dubbio

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    33
    allora...ho provato a fare come mi hai consigliato...

    mettendo le apici e il controllo errori non si popola la seconda scelta, mentre se non metto le apici, il rapporto errori mi dice che li devo mettere per cui un punto lo abbiamo assodato.

    Ora come risolvo il fatto che non si popola la seconda scelta se metto la condizione WHERE ???

    Aiutooo!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    33
    il problema potrebbe essere il fatto che con il db così:

    IT-Trade

    |ID|Marca|Modello|
    |1 |casio |xy1
    |2 |casio |xy2
    |3 |casio |xy3
    |4 |acer |ab1
    |5 |acer |ab2
    ecc
    ecc

    e con WHERE manufacurer='$_POST[manufacturer]'

    e dovendo fare uno a molti non riesce ad associare il modello alla marca??
    Non so più cosa pensare.

  9. #9
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Scusa ma nel db non hai un campo che si chiama manufacturer! Devi fare WHERE Marca = '$_POST[manufacturer]'
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    33
    si ma non funziona lo stesso e nessuno capisce perchè.....eppure è semplicissimo no??

    la cosa più assurda però, è che se tolgo la condizione WHERE popola la seconda scelta ma senza tener conto della prima.

    quindi ho pensato che abbia bisogno prima di una relazione (Self Join) e poi della condizione WHERE.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.