Selettore che compila in automatico un INPUT

  • Creatore Discussione Creatore Discussione ivarello
  • Data di inizio Data di inizio

ivarello

Utente Attivo
14 Dic 2012
211
1
16
Salve ragazzi, ho sempre usato uno script per compilare, con una selezione dei campi input in automatico ve lo mostro:

PHP:
function compilatutto(value) {
  if (value == 'carne') {
  document.getElementById('prezzo1').value="15.00";
  document.getElementById('img_prod1').src="http://forum.mrwebmaster.it/images/prodotti/mini/00.png";
  document.getElementById('link1').href="http://forum.mrwebmaster.it/images/prodotti/00.png";
 }

però il problema sorge ogni volta che si aggiunge un nuovo prodotto/immagine/prezzo va compilato aggiungendo la funzione:

PHP:
function compilatutto02(value) {
  if (value == 'pesce') {
  document.getElementById('prezzo2').value="25.00";
  document.getElementById('img_prod2').src="http://forum.mrwebmaster.it/images/prodotti/mini/02.png";
  document.getElementById('link2').href="http://forum.mrwebmaster.it/images/prodotti/02.png";
 }

dato che nel database prodotti ho aggiunto il campo 'prezzo' 'img_prod'
conoscete una funzione che funzioni in automatico a seconda del prodotto che selezione, peschi dalla riga il relativo prezzo ed immagine?
Grazie in anticipo ;)
 
Stavo provando con qualche idea una cosa del genere avrebbe senso?

PHP:
function compilatutto12(value) {
 if (value == '2 <?php = $id ?>') {
  document.getElementById('prezzo1').value="
  		<?php
		$sql="SELECT * FROM prodotti WHERE	id = $id;";
		$prodotti=MYSQL_QUERY($sql) or die (mysql_error()); 
		while($riga = mysql_fetch_array($prodotti)){ 
    	$prezzo1=$riga['prezzo']; 
    	echo "$prezzo1"; 
		?>
}

Ovviamente non funziona qualche idea???
 
Ciao,
non ho capito molto..
la funzione viene richiamata da un pulsante?
cioè hai i campi vuoti e al click li riempi? o li devi riempire al caricamento della pagina?
 
Praticamente o un elenco di nomi che recupero dal database, quando ne seleziono uno popola degli input riconosciuti con l'id, dato che ogni volta che si aggiunge un prodotto poi bisogna ricreare una lo script java, mi chiedevo se esisteva un modo di pescare automaticamente il valore che si trova nel database corrispondente al prodotto, esempio
Database:
nome - value - prezzo - img_prod
carne - 1 - 12,00 - images/02.png



vorrei che da un select scegliendo "carne"
si popoli in automatico un input con id = prezzo1 (con il valore 12,00)
ed un altro input con id = images1 (con il valore imges/02.png)

Lo script che uso fa proprio questo ma bisogna prevedere tutto cosi

HTML:
function compilatutto01(value) {
 if (value == 'carne') {
  document.getElementById('prezzo1').value="12,00";
  document.getElementById('img_prod1').src="http://forum.mrwebmaster.it/images/prodotti/mini/02.png";
  document.getElementById('link1').href="http://forum.mrwebmaster.it/images/prodotti/02.jpg";
 }
 if (value == 'pesce') {
  document.getElementById('prezzo1').value="15,00";
  document.getElementById('img_prod1').src="http://forum.mrwebmaster.it/images/prodotti/mini/03.jpg";
  document.getElementById('link1').href="http://forum.mrwebmaster.it/images/prodotti/03.jpg";
 }

Quindi ogni volta che aggiungo un prodotto devo modificare la funzione, poi diventa complicato perchè se devo variare ad esempio prezzi o foto, devo sempre mettere mano sul codice.
Se non mi sono spiegato chiedi ancora ;)
 
una cosa del genere?

PHP:
            		<script>
<!-------------------Script che popola i  prezzo unitario Prodotto 1----------------------->
function compilatutto01(value) {
 if (value == 
 '
  <?php
  	$sql="SELECT * FROM prodotti;";
	$prodotti=MYSQL_QUERY($sql) or die (mysql_error()); 
	while($riga = mysql_fetch_array($prodotti)){ 
    $value=$riga['value']; 
    echo "$value"; }?>
 ') 
 {
  document.getElementById('prezzo1').value="
  <?php
  	$sql="SELECT * FROM prodotti WHERE value = $value;";
	$prodotti=MYSQL_QUERY($sql) or die (mysql_error()); 
	$prezzo=$riga['prezzo'];
    echo "$prezzo"; 
  ?>";
 }
 </script>

   <tr>
                <th scope="row" bgcolor="#E2F4FC"><a id="link1" href="" target="_blank"><img id="img_prod1"/><input type="text" name="prezzo1" id="prezzo1"/></a></th>
            <td bgcolor="#E2F4FC">
            <center> 
<select name="prodotto1" id="prodotto1" onmousemove="compilatutto01(value);mostra01( document.form_registrazione.prodotto1.options[document.form_registrazione.prodotto1.selectedIndex ].value );" 
            onclick="compilatutto01(value);mostra01( document.form_registrazione.prodotto1.options[document.form_registrazione.prodotto1.selectedIndex ].value );">
            <?php prodotti(); ?>
           </select>
            </center>
            </td>
 
Allora sto proseguendo con questa cosa e forse inizio a vedere un barlume, ho utilizzato questo Tutorial che serve per i menu correlati, allora mi sono chiesto se si potesse sfruttare il principio dei menu, invece di pescare da 3 tabelle pesca sempre dalla stessa, compilando i campi con prezzo ed immagine relativa ad un prodotto. Posto le modifiche

index.php:

PHP:
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// Select Province e Comuni dalla Regione. 
function selProvCom(idRegion) {
  // Seleziono province di questa regione. 
  $.get("select_abitativa.php", { regionid: idRegion, requestItems: 'province'}, 
  function(dataProvince){
    $("select[id='province']").empty();
    var options = '';
    var arrayProvince = dataProvince.split( '||');
    for (var i = 1; i < arrayProvince.length; i++) {
      var provincia = arrayProvince[i].split( /,/);
      options += '<option value="' + provincia[0] + '">' + provincia[1] + '</option>';
    }
    $("select[id='province']").html(options);
  });
  // Seleziono comuni di questa regione. 
  $.get("select_abitativa.php", { regionid: idRegion, requestItems: 'comuni'}, 
  function(dataComuni){
    $("select[id='city']").empty();
    var options = '';
    var arrayComuni = dataComuni.split( '||');
    for (var i = 1; i < arrayComuni.length; i++) {
      var comune = arrayComuni[i].split( /,/);
      options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    }
    $("select[id='city']").html(options);
  });
}
</script>
</head>
<body>
<p>
<label for="region">Regione:</label><br />
<select id="region" name="region" onChange="selProvCom(this.value);">
<?php
// Collegamento ad database. 
include("dbconfig.php");

// Query selezione tutte le regioni. 
$sql = "select * from prodotti order by prodotti"; 

// Eseguo la query. 
$result = mysql_query($sql, $conn); 
while($region = mysql_fetch_array($result)) {
?>
<option value="<?php echo $region['id']; ?>"><?php echo $region['prodotti']; ?></option>
<?php
}
?>
</select>
</p>
<p>
<label for="province">Provincia:</label><br />
<select id="province" name="province">
</select>
</p>
<p>
<label for="city">Città:</label><br />
<select id="city" name="city">
</select>
</p>
</body>

file select_abitativa.php

PHP:
<?php
// Seleziona Province e Comuni. 
include("dbconfig.php");

if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT * 
FROM prodotti 
WHERE id = '$regionID' 
ORDER BY prodotti
EOQ;
    $result = mysql_query($query, $conn);
    $returnProvince = '';
    while ($row = mysql_fetch_array($result)) {
      $returnProvince .= "||".$row['id'].",".$row['prezzo'];
    }
    print_r($returnProvince);
  } 
  else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT * 
FROM prodotti 
WHERE id = '$regionID' 
ORDER BY prodotti
EOQ;
    $result = mysql_query($query, $conn);
    $returnComuni = '';
    while ($row = mysql_fetch_array($result)) {
      $returnComuni .= "||".$row['id'].",".$row['img_prodotti'];
    }
    print_r($returnComuni);
  }
} 
?>

occorre anche il file jquery.js
cmq così facendo funziona, finalmente si popola sia il select provincia (con il prezzo) ed il select città (con immagine).
Ora sto tentando di cambiare la popolazione dei campi, vorrei mettere dei campi input invece che select, qualcuno mi può dare una mano? Credo che possa essere molto utile a chiunque, vi fornisco anche il database se volete fare delle prove:

Database

/*DROP TABLE IF EXISTS `prodotti`*/;
CREATE TABLE `prodotti` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`prodotti` varchar(255) DEFAULT NULL,
`value` varchar(255) DEFAULT NULL,
`prezzo` varchar(255) DEFAULT NULL,
`tipo` varchar(255) DEFAULT NULL,
`img_prodotti` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=latin1;

#
# Data for table "prodotti"
#

INSERT INTO `prodotti` VALUES (1,':: seleziona ::',NULL,NULL,NULL,NULL),(2,'Ovolini','Ovolini','0.35','0','images/00.png'),(3,'Mignon Rustici,Pizzette,Tramezzini','Mignon Rustici,Pizzette,Tramezzini','18.00','1','images/00.png'),(4,'Cornetti Salati Mignon','Cornetti Salati Mignon','0.90','0','images/00.png'),(5,'Sandwich Mignon','Sandwich Mignon','1.00','0','images/00.png'),(6,'Pan Brioche Classico','Pan Brioche Classico','25.00','0','images/00.png'),(7,'Pan Brioche di Pesce','Pan Brioche di Pesce','30.00','0','images/00.png'),(8,'Pizza Rossa/Bianca','Pizza Rossa/Bianca','13.00','1','images/00.png'),(9,'Mandorle Salate','Mandorle Salate','25.00','0','images/00.png'),(10,'Tartine','Tartine','20.00','1','images/00.png'),(11,'Suppli,Olive Ascolane,Arancini','Suppli,Olive Ascolane,Arancini','13.00','1','images/00.png'),(12,'Pasticceria da Thè','Pasticceria da Thè','18.00','1','images/00.png'),(13,'Torte Rustiche','Torte Rustiche','15.00','1','images/00.png'),(14,'Rusticoni','Rusticoni','18.00','1','images/00.png'),(15,'Panzerotti','Panzerotti','1.00','0','images/00.png'),(16,'Crostate','Crostate','13.00','1','images/00.png'),(17,'Cioccolatini','Cioccolatini','35.00','1','images/00.png'),(18,'Cornettone','Cornettone','14.00','1','images/00.png'),(19,'Insalate Varie','Insalate Varie','15.00','1','images/00.png'),(20,'Torte','Torte','18.00','1','images/00.png'),(21,'Torte Artistiche','Torte Artistiche','23.00','1','images/00.png'),(22,'Meringhe','Meringhe','25.00','1','images/00.png'),(23,'Marzapane','Marzapane','25.00','1','images/00.png'),(24,'Voulevant','Voulevant','18.00','1','images/00.png'),(25,'Arancini','Arancini','14.00','1','images/00.png'),(26,'Pizzette','Pizzette','18.00','1','images/00.png'),(27,'Rustici','Rustici','18.00','1','images/00.png'),(28,'Panini Affettati','Panini Affettati','0.80','0','images/00.png'),(29,'Pasta Sfoglia','Pasta Sfoglia','12.00','1','images/00.png'),(30,'Pasta Frolla','Pasta Frolla','12.00','1','images/00.png'),(31,'Pan Di Spagna','Pan Di Spagna','12.00','1','images/00.png'),(32,'Pandori','Pandori','12.00','0','images/00.png'),(33,'Panettoni','Panettoni','12.00','0','images/00.png'),(34,'Dolci Natalizi','Dolci Natalizi','25.00','1','images/00.png'),(35,'Torrone','Torrone','25.00','1','images/00.png'),(36,'Mignon Dolci','Mignon Dolci','18.00','1','images/00.png'),(37,'Paste Grandi','Paste Grandi','1.60','0','images/00.png'),(38,'Cornetti','Cornetti','1.00','0','images/00.png'),(39,'Cornetti Mignon','Cornetti Mignon','0.35','0','images/00.png'),(40,'Torta della Nonna','Torta della Nonna','14.00','1','images/00.png'),(41,'Panna','Panna','12.00','1','images/00.png');

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 
Ultima modifica di un moderatore:
ti ho commentato nel post quel "DROP TABLE IF EXISTS `prodotti`;" non si sa mai che qualcuno non si cancelli la tabella
detto questo ancora non credo di aver capito bene ma forse te la puoi cavare con qualcosa di piu semplice
prova questo esempio
PHP:
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script>
            function compila(dati) {    
                var dati = dati.split(";");                
                document.getElementById("prodotto").innerHTML = dati[0];
                document.getElementById("prezzo").innerHTML = dati[1];
                document.getElementById("immagine").innerHTML = dati[2];
            }
        </script>
    </head>
    <body>
        <p>Prodotto : <span id="prodotto"></span></p>
        <p>Immagine : <span id="immagine"></span></p>
        <p>Prezzo : <span id="prezzo"></span></p>

        <select name="prodotti" onchange="compila(this.options[this.selectedIndex].value)">
            <option value=""></option>
            <?php
            include_once 'test/connessione.php';
            $sql = "SELECT * FROM prodotti";
            $prodotti = mysql_query($sql) or die(mysql_error());
            while ($riga = mysql_fetch_array($prodotti)) {
                $dati = $riga['prodotti'] . ";" . $riga['prezzo'] . ";" . $riga['img_prodotti'];
                echo "<option value='$dati'>" . $riga['prodotti'] . "</option>";
            }
            ?>
        </select>
    </body>
</html>
ti basta modificare con il tuo file di connessione
 
E' proprio quello che mi serve, solo una cosa così facendo non genero dei valori che possono andare nul value di un campo input, mi spiego te hai usato per vedere il risultato
<span id="prodotto"></span></p>
ma se lo cambio e ci metto
<input id="prodotto" value=""/>
non generando una valuta non mi popola l'input, come potrei ovviare??? Grazie ancora ;)
 
preimposta il value : esempio
HTML:
<input type="text" name="prezzo" id="prezzo" value="0.00"/>
se presente nel database verrà svrascritto altrimenti rimane quello preimpostato (in teoria, altrimenti piccola modifica allo script)
 
Non cambia inserendo un valore, quindi credo che sia qui nello script che bisogna fare la variazione ho provato alcune modifiche ma infruttuose :S hai qualche idea
 
bisognerebbe sapere cosa contiene la variabile se null oppure niente cmq puoi provare cosi
riprendo il mio esempio
Codice:
   if(dati[1] != "") {
                    document.getElementById("prezzo").innerHTML = dati[1];
                }else{
                    document.getElementById("prezzo").innerHTML = "0.00";
                }
 

Discussioni simili