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

    Configuratore prodotto con select a cascata, db + php + js

    Ciao a tutti!
    Vorrei ottenere una specie di configuratore di prodotto con select a cascata concatenate per individuare tramite le varie opzioni il prodotto desiderato.

    Per questo ho modificato un esempio di select a cascata (regioni-province-comuni)
    http://www.yourinspirationweb.com/20...-php-e-jquery/

    Sono arrivata al 5° livello (se ne ipotizzano una decina se possibile) ma non riesco a proseguire... sicuramente per mia ignoranza di codice, avrò sbagliato da qualche parte ma penso soprattutto nell'ultima select in cui mi si ingarbugliano le condizioni :/

    Mi scuso già per il post lunghissimo ma vi riporto il codice.

    Utilizzo un'unica tabella del tipo:

    codice----tipo-----base_mat------len

    numero tipo1 materiale1 lunghezza1 ...
    numero tipo1 materiale2 lunghezza1 ...
    numero tipo2 materiale1 lunghezza2 ...

    i file:
    db_config.php contiene i parametri di connessione al database.
    jquery-1.3.2.js è il file che si può scaricare dal link sopra

    select.php

    Codice PHP:
    <?php

    include_once 'select.class.php';
    $opt = new SelectList();

    if(isset(
    $_POST['tipo']))
    {
        echo 
    $opt->ShowBaseMaterial();
        die;
    }

    if(isset(
    $_POST['base_mat']))
    {
        echo 
    $opt->ShowLen();
        die;
    }

    if(isset(
    $_POST['len']))
    {
        echo 
    $opt->ShowStudSize();
        die;
    }

    if(isset(
    $_POST['stud_size']))
    {
        echo 
    $opt->ShowBaseSize();
        die;
    }

    ?>
    select.class.php

    Codice PHP:
    <?php
    class SelectList{
        protected 
    $conn;
            public function 
    __construct()
            {
                
    $this->DbConnect();
            }
        
            protected function 
    DbConnect()
            {
            include 
    "db_config.php";
            
    $this->conn mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
            
    mysql_select_db($db,$this->conn) OR die("Impossibile selezionare il database $db");
            return 
    TRUE;
            }
            
            public function 
    ShowTipo()
            {
                
    $sql "SELECT DISTINCT tipo FROM prodotti";
                
    $res mysql_query($sql,$this->conn);
                
    $tipo '<option value="0">scegli...</option>';
                    while(
    $row mysql_fetch_array($res))
                    {
                        
    $tipo .= '<option value="' $row['tipo'] . '">' utf8_encode($row['tipo']) . '</option>';
                    }
                return 
    $tipo;
            }
            
            public function 
    ShowBaseMaterial()
            {
                if(isset(
    $_POST['tipo'])){
                
    $tipo $_POST["tipo"];
                
    $sql "SELECT DISTINCT base_mat FROM prodotti WHERE tipo = \"$tipo\" GROUP BY base_mat";
                
    $res mysql_query($sql,$this->conn);
                
    $base_mat '<option value="0">scegli...</option>';
                
                    while(
    $row mysql_fetch_array($res))
                    {
                        
    $base_mat .= '<option value="' $row['base_mat'] . '">' utf8_encode($row['base_mat']) . '</option>';
                    }
                return 
    $base_mat;
                }
            }
            public function 
    ShowLen()
            {
                if(isset(
    $_POST['base_mat'])){
                
                
    $base_mat $_POST["base_mat"];
                
    $tipo $_POST["tipo"];
                
                
    $sql "SELECT DISTINCT len FROM prodotti WHERE base_mat = \"$base_mat\" AND tipo LIKE \"%$tipo%\" GROUP BY len";
                
                
    $res mysql_query($sql,$this->conn);
                
    $len '<option value="0">scegli...</option>';
                
                    while(
    $row mysql_fetch_array($res))
                    {
                        
    $len .= '<option value="'$row['len'] . '">' utf8_encode($row['len']) . '</option>';
                    }
                return 
    $len;
                }
            }
            public function 
    ShowStudSize()
            {
                if(isset(
    $_POST['len'])){
                
    $len $_POST["len"];
                
    $base_mat $_POST["base_mat"];
                
    $tipo $_POST["tipo"];
                
                
    $sql "SELECT DISTINCT stud_size FROM prodotti WHERE len = \"$len\" AND base_mat LIKE \"%$base_mat%\" AND tipo LIKE \"%$tipo%\" GROUP BY stud_size";
                
                
    $res mysql_query($sql,$this->conn);
                
    $stud_size '<option value="0">scegli...</option>';
                
                    while(
    $row mysql_fetch_array($res))
                    {
                        
    $stud_size .= '<option value="' $row['stud_size'] . '">' utf8_encode($row['stud_size']) . '</option>';
                    }
                return 
    $stud_size;
                }
            }
            public function 
    ShowBaseSize()
            {
                if(isset(
    $_POST['stud_size'])){
                
                
    $stud_size $_POST["stud_size"];
                
    $len $_POST["len"];
                
    $base_mat $_POST["base_mat"];
                
    $tipo $_POST["tipo"];
                
                
    $sql "SELECT DISTINCT base_size FROM prodotti WHERE stud_size = \"$stud_size\" AND (len LIKE \"%$len%\" AND base_mat LIKE \"%$base_mat%\" AND tipo LIKE \"%$tipo%\") GROUP BY base_size";
            
    //    $sql = "SELECT DISTINCT base_size FROM prodotti WHERE base_size IN (SELECT stud_size FROM prodotti WHERE len = \"$len\" AND (base_mat LIKE \"%$base_mat%\" AND tipo LIKE \"%$tipo%\"))";
                
                
    $res mysql_query($sql,$this->conn);
                
    $base_size '<option value="0">scegli...</option>';
                
                    while(
    $row mysql_fetch_array($res))
                    {
                        
    $base_size .= '<option value="' $row['base_size'] . '">' utf8_encode($row['base_size']) . '</option>';
                    }
                return 
    $base_size;
                }
            }    
    }
    ?>
    Questo è index.php

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    
    <html>
    
    <head>
    	<meta http-equiv="content-type" content="text/html charset=utf-8">
    	<meta name="author" content="Baba - IseoComSolution" >
    
    	<script type="text/javascript" src="jquery-1.3.2.js"></script>
    
    	<link href="screen.css" rel="stylesheet" type="text/css" />
    	<title>Test catalogo configuratore Mbase_sizein</title>
    	
    	<script type="text/javascript">
    	$(document).ready(function(){
    
    		var scegli = '<option value="0">Scegli...</option>';
    		var attendere = '<option value="0">Attendere...</option>';
    		
    		$("select#base-material").html(scegli);
    		$("select#base-material").attr("disabled", "disabled");
    		$("select#len").html(scegli);
    		$("select#len").attr("disabled", "disabled");
    		$("select#stud_size").html(scegli);
    		$("select#stud_size").attr("disabled", "disabled");
    		$("select#base_size").html(scegli);
    		$("select#base_size").attr("disabled", "disabled");
    		
    		$("select#tipo").change(function(){
    			var tipo = $("select#tipo option:selected").attr('value');
    			$("select#base-material").html(attendere);
    			$("select#base-material").attr("disabled", "disabled");
    			$("select#len").html(scegli);
    			$("select#len").attr("disabled", "disabled");
    			$("select#stud_size").html(scegli);
    			$("select#stud_size").attr("disabled", "disabled");
    			$("select#base_size").html(scegli);
    			$("select#base_size").attr("disabled", "disabled");
    			
    			$.post("select.php", {tipo:tipo}, function(data){
    				$("select#base-material").removeAttr("disabled"); 
    				$("select#base-material").html(data);	
    			});
    		});	
    
    
    		$("select#base-material").change(function(){
    			var base_mat = $("select#base-material option:selected").attr('value');
    			$("select#len").html(attendere);
    			$("select#len").attr("disabled", "disabled");
    			$("select#stud_size").html(scegli);
    			$("select#stud_size").attr("disabled", "disabled");
    			$("select#base_size").html(scegli);
    			$("select#base_size").attr("disabled", "disabled");
    			
    			$.post("select.php", {base_mat:base_mat}, function(data){
    				$("select#len").removeAttr("disabled"); 
    				$("select#len").html(data);	
    			});
    		});	
    		
    		$("select#len").change(function(){
    			var len = $("select#len option:selected").attr('value');
    			$("select#stud_size").html(scegli);
    			$("select#stud_size").attr("disabled", "disabled");
    			$("select#base_size").html(scegli);
    			$("select#base_size").attr("disabled", "disabled");
    			
    			$.post("select.php", {len:len}, function(data){
    				$("select#stud_size").removeAttr("disabled"); 
    				$("select#stud_size").html(data);	
    			});
    		});
    		
    		$("select#stud_size").change(function(){
    			var stud_size = $("select#stud_size option:selected").attr('value');
    			$("select#base_size").html(scegli);
    			$("select#base_size").attr("disabled", "disabled");
    			
    			$.post("select.php", {stud_size:stud_size}, function(data){
    				$("select#base_size").removeAttr("disabled"); 
    				$("select#base_size").html(data);	
    			});
    		});
    		
    		
    		
    		
    
    		$("select#base_size").change(function(){
    			var base_size = $("select#base_size option:selected").attr('value');
    			
    			$.post("select.php", {base_size:base_size}, function(data){
    
    			});
    		});
    		
    	});
    	
    	</script>
    </head>
    <?php
    include_once 'select.class.php';
    $opt = new SelectList();
    ?>
    <body>
    	<div id="container">
    	
    	<h1>Test catalogo configuratore</h1>
    	<h2>Seleziona:</h2>
    	
    		<form action="?" id="myform" method="post">
    			Seleziona il prodotto:
    
    			<select id="tipo">
    				<?php echo $opt->ShowTipo(); ?>
    			</select>
    			
    
    
    			
    			Seleziona il materiale:
    
    			<select id="base-material">
    			<option>Scegli...</option>
    			</select>
    			
    
    
    		
    			Seleziona lenght:
    
    			<select id="len">
    			<option>Scegli...</option>
    			</select>
    			
    
    
    			
    			Seleziona stud size:
    
    			<select id="stud_size">
    			<option>Scegli...</option>
    			</select>
    			
    
    
    			
    			Seleziona base size:
    
    			<select id="base_size">
    			<option>Scegli...</option>
    			</select>
    			
    
    
    			
    			
    			
    		</div>
    	</form>
    
    
    </body>
    </html>

  2. #2
    Up...

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.