Multi DropDown... Funzionamento

crospa

Nuovo Utente
18 Giu 2012
6
0
0
Ragazzi ho un dubbio,
nella mia applicazione PHP ho l'esigenza di creare delle Riparazioni, pensavo per poter avere più gestione della situazione di registrare i clienti e i relativi apparecchi per poi richiamarli nella riparazione, mi spiego:

Tabella 1: Riparazioni
Tabella 2: Clienti
Tabella 3: Apparecchi

Quando un operatore carica una nuova riparazione, seleziona da un dropdown il cliente e poi il secondo dropdown farà vedere solamente gli apparecchi di quel cliente, per poi salvare nella tabella Riparazioni dentro a Apparecchio_ID e Cliente_ID i relativi identificativi impostati...

Il dubbio è... è tecnicamente fattibile? se si come? sono nuovo all'Ajax e non ho mai provato fino ad ora... qualcuno mi può guidare su come impostare il tutto? attualmente l'applicativo presenta nella creazione della nuova riparazione una pagina dove l'operatore scrive direttamente dentro i dati, ma che ogni volta vanno persi, quindi non si può per esempio, sapere quante riparazioni ha subito quell'apparecchio e se il cliente ritorna con lo stesso apparecchio per esempio per un Check-up del sistema evito di reinserirlo ma i dati sono già nel sistema...
 

crospa

Nuovo Utente
18 Giu 2012
6
0
0
L'idea non è sbagliata, ma quella è molto confusa... io attualmente ho fatto così, ma ovviamente non funziona,

questi sono i due form su cui opera l'utente

PHP:
		<tr>
          <th><?php echo lang('INVC_CNAME');?>: <?php echo required();?></th>
          <td><select name="client_id" class="custombox" style="width:250px" onChange="getState(this.value)">
              <option value="">--- <?php echo lang('INVC_CLIENTSELECT');?> ---</option>
              <?php if($userlist):?>
              <?php foreach ($userlist as $crow):?>
              <option value="<?php echo $crow->id;?>"><?php echo $crow->name;?></option>
              <?php endforeach;?>
              <?php unset($crow);?>
              <?php endif;?>
            </select>
	<a href="index.php?do=clients-rip&action=add"><img src="../images/client-overview.png" alt="" class="tooltip img-wrap2" title="<?php echo lang('PROJ_ADDCLIENTE');?>"/></a>
			</td>
        </tr>
       
	  
  <tr>
   <th><?php echo lang('INVC_CNAME');?>: <?php echo required();?></th>
   <select name="apparecchio" class="custombox" style="width:250px">
    <td><div  id="statediv"><select name="state" >
	<option>Seleziona prima il Cliente</option>
        </select></div></td>
  </tr>

Questa è la funzione del dropdown:

PHP:
// Roshan's Ajax dropdown code with php
// This notice must stay intact for legal use
// Copyright reserved to Roshan Bhattarai - [email protected]
// If you have any problem contact me at http://roshanbh.com.np
function getXMLHTTP() { //fuction to return the xml http object
		var xmlhttp=false;	
		try{
			xmlhttp=new XMLHttpRequest();
		}
		catch(e)	{		
			try{			
				xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				try{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch(e1){
					xmlhttp=false;
				}
			}
		}
		 	
		return xmlhttp;
    }
	
	function getState(id) {		
		
		var strURL="apparecchiodrop.php?="+name;
		var req = getXMLHTTP();
		
		if (req) {
			
			req.onreadystatechange = function() {
				if (req.readyState == 4) {
					// only if "OK"
					if (req.status == 200) {						
						document.getElementById('statediv').innerHTML=req.responseText;						
					} else {
						alert("There was a problem while using XMLHTTP:\n" + req.statusText);
					}
				}				
			}			
			req.open("GET", strURL, true);
			req.send(null);
		}

e questa è la pagina apparecchiodrop.php

PHP:
#### Roshan's Ajax dropdown code with php
#### Copyright reserved to Roshan Bhattarai - [email protected]
#### if you have any problem contact me at http://roshanbh.com.np
#### fell free to visit my blog http://roshanbh.com.np
?>

<? $apparecchio=intval($_GET['name']);
$link = mysql_connect('localhost', 'root', ''); //changet the configuration in required
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('gecko');
$query="SELECT apparecchi. * ,apparecchi.id as appid, tipo_apparecchio.title AS tipo, marca.title AS marca, CONCAT( users.fname,  ' ', users.lname ) AS clientname"
. "\n FROM apparecchi"
. "\n LEFT JOIN users ON apparecchi.client_id = users.id"
. "\n LEFT JOIN tipo_apparecchio ON apparecchi.tipo_apparecchio = tipo_apparecchio.id"
. "\n LEFT JOIN marca ON apparecchi.marca_app = marca.id";
$result=mysql_query($query);

?>


<select name="apparecchio">
<option>Seleziona Apparecchio</option>
<? while($row=mysql_fetch_array($result)) { ?>
<option value=<?=$row['id']?>><?=$row['tipo']?> <?=$row['marca']?> <?=$row['modello']?></option>
<? } ?>
</select>

di tutto questo l'unica cosa che funziona è soltanto che alla selezione del cliente, il campo sotto si abilita mi mostra tutti i record... senza applicare nessuna condizione ne niente... e sopra compare questo errore: Notice: Undefined index: name in C:\xampp\htdocs\gecko\admin\apparecchiodrop.php on line 15

non so che pesci pigliare....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda se ti può servire questo (evidentemente cambiando i vari nomi)
consiste in tre pagine
1. pagina dove c'è il form che ho chiamato index_db.php
2. una pagina in cui si formano i valori della seconda select che ho chiamato select_db.php
3. la pagina ajax.js
il tutto è mutuato da un vecchio script che mi aveva passato eliox che ho adattato all'uso del db

index_db.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var url = "select_db.php";
var what = "SetProvince(req.responseText)";
function GetProvince(regione)
{
  InviaDati("regione="+regione);
}
function SetProvince(province)
{
  var provinciaBox = document.getElementById("provincia");
  provinciaBox.options.length = 0;
  if(province != "")
  {
	var arrProvince = province.split(",");
	for(i = 0; i < arrProvince.length; i++)
    {
	  if(arrProvince[i] != "")
      {
		provinciaBox.options[provinciaBox.options.length] = 
        new Option(arrProvince[i], arrProvince[i]);
      }
    }
  }
}
</script>
<script src="ajax.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
select{
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
-->
</style>
</head>
<body>
<?php
//righe di prova delle selec
if(isset($_POST['invia']) && $_POST['invia'] == "invia"){
	$regione_scelta= $_POST['regione'];
	$provincia_scelta= $_POST['provincia'];
	if($regione_scelta=="" || $provincia_scelta==""){
		echo "non hai selezionato la regione e/o la provincia<br>";
	}else{
		echo "hai selezionato la regione: $regione_scelta con la provincia di $provincia_scelta<br>";
	}
}
//********************qui  mettere i dati di connessione
$query_reg="SELECT * FROM regioni ORDER BY regione";
$ris_reg=mysql_query($query_reg);
$esistono regioni=mysql_num_rows($ris_reg);
if($esistono regioni > 0){
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Regione:<br> 
<select onChange="GetProvince(this.options[this.selectedIndex].text)" id="regione" name="regione">
<?php
while($riga_reg=mysql_fetch_array($ris_reg)){
	echo "<option>".$riga_reg['regione']."</option>";
}
?>
</select>
<br>Provincia:<br> 
<select id="provincia" name="provincia"></select>
<br>
<input name="invia" type="submit" id="invia" value="invia">
</form>
<?php
}else{
	echo "il db è vuoto";
}
?>
</body>
</html>
select_db.php
PHP:
<?php
//...............qui i dati di connessione
$province = array();//diventerà un array di array
$query_reg="SELECT * FROM regioni ORDER BY regione";
$ris_reg=mysql_query($query_reg);
/*
con i due while creo l'array di array che mi servirà per riempire dinamicamente le selct delle province
esempio
$province["ABRUZZO"] = array("Chieti", "L'Aquila", "Teramo")
stati attento all'eventuale addslashes/stripslashes da mettere
qui non l'ho messo, dipende se hai inserito le province nel db con addslashes, se si devi mettere
$province[$nome_reg][]=stripslashes$riga_prov['provincia']);
*/
while($riga_reg=mysql_fetch_array($ris_reg)){
	$id_reg=$riga_reg['id_regione'];
	$nome_reg=$riga_reg['regione'];
	$query_prov="SELECT * FROM province WHERE id_regione=$id_reg ORDER BY provincia";
	$ris_prov=mysql_query($query_prov);
	while($riga_prov=mysql_fetch_array($ris_prov)){
		$province[$nome_reg][]=$riga_prov['provincia'];
	}
}
if(isset($_POST["regione"]) && isset($province[$_POST["regione"]]))
{
  foreach($province[$_POST["regione"]] as $provincia)
  {
    printf("%s,", $provincia);
  }
}
?>
ajax.js
Codice:
function InviaDati(data)
{
  // istanziamo l'oggetto XMLHttpRequest
  if (window.XMLHttpRequest) 
  {
    req = new XMLHttpRequest();
    req.onreadystatechange = function() { PocessaDati(req); };
    req.open('POST', url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.send(data);
  }
  // controlliamo la versione di ActiveX
  else if (window.ActiveXObject) 
  {
    req = new ActiveXObject('Microsoft.XMLHTTP')
    if (req)
    {
      req.onreadystatechange = PocessaDati;
      req.open('POST', url, true);
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      req.send(data);
    }
  }
}

function PocessaDati(req)
{
  // monitoriamo lo stato dell'invio
  if (req.readyState == 4)
  {
    // restituiamo lo stato della richiesta
    if (req.status == 200) 
    {
      eval(what);
    }else{
      alert('Problema nella gestione dei dati: ' +
      req.responseText);
    }
  }
}


è evidente che al posto di province comuni metterai quello che ti serve, e dovrai adattarlo in funzione di come sono fatte le tue tabelle
 
Discussioni simili
Autore Titolo Forum Risposte Data
L inserire dati multi livello PHP 8
maxnegri Icon Multi Marker Personalizzate Google Maps Javascript 0
S Spring Boot - Multi thread Discussioni Varie 0
D VENDO guestpost su sito di notizie multi-tematico Vendere e Acquistare pubblicita' online 4
V Estrazione di una singola banda da file multi banda (RGB) con Python Programmazione 0
A [Javascript] Multi input su due tabelle correlate Javascript 1
ANDREA20 [PHP] multi lingue PHP 1
D [Apache] Installazione multi istanza Tomcat Apache 0
P [PHP] Multi-session PHP 1
readme [CERCO] Articolisti per blog multi-categoria ( ospito anche guestpost) Offerte e Richieste di scambio links 0
Z vps per multi site Server Dedicati e VPS 3
Giuliana Signorello WP: Creare un booking multi-struttura con area agenzie annessa WordPress 0
S Cerco programmatore ( cambi di moneta elettronica multi-valuta ) E-Commerce 1
P Problema multi select form jQuery 6
S multi request ajax con jquery jQuery 2
G [risolto] Multi select Javascript 4
T [risolto] Realizzare un form email con multi scelta Sviluppo app per Android 2
K [PHP] multi upload immagine da form PHP 60
C Prestashop multi negozio, problemi con url riscritti CMS (Content Management System) 1
N problema script php mysql multi upload immagini PHP 31
F Inviare dati da multi form Javascript 3
L creare sistema multi categorie MySQL 18
O array multi dimensionale con ciclo for PHP 6
K Windows mail multi account Windows e Software 4
P Aiuto Applicazione multi mini-blog PHP 0
neo996sps Sito in multi.lingua PHP 1
U Software per gestione multi magazzino Windows e Software 6
M Multi PHP su IIS 6 Web Server 1
F Campo multi-record Database 0
I Dropdown HTML e CSS 15
psikolele Dropdown menù HTML e CSS 2
S Gestire scelta dropdown con dati da Mysql PHP 2
S spostare il pulsante menu dropdown HTML e CSS 8
Alex_70 Visualizzare anteprima foto in dropdown PHP 2
F Dropdown menu con tabella PHP 33
felino [HTML] Font Awesome icon all'interno di una dropdown HTML e CSS 3
L Navbar dropdown con Bootstrap: link ai css CMS (Content Management System) 4
G [Javascript] Transition in OnClick Dropdown Menu Javascript 5
L [HTML] Menu di 4 livello "dropdown menu" HTML e CSS 6
F Slide down/up dropdown Bootstrap jQuery 0
L [HTML] bootstrap problema menu dropdown in mobile. HTML e CSS 3
F errore select option dropdown list jQuery 15
J Bootstrap dropdown menu non funziona con jquery-1.8.2??? jQuery 5
A Problema Menu dropdown orizzonate HTML e CSS 1
C Login DropDown WordPress 0
L menu dropdown orizzontale su 3 livelli. Evidenziare la voce generale HTML e CSS 0
andre9004 Dropdown menu con .hover() jQuery 2
L Selezione da database con DropDown Menu e visualizzazione PHP 10
C Roundec Corner Select ( Dropdown menu) HTML e CSS 1
D Menu con immagine a stile DropDown jQuery 0

Discussioni simili