[PHP] form dinamico

eraclio666

Nuovo Utente
8 Mag 2015
28
0
1
barletta
Salve a tutti,
sto realizzando un magazzino di articoli in php/html
in un form ho una select con l'elenco dei prodotti (letti dal DB) e in base alla selezione fatta voglio fare uscire le giacenze.

mi aiutate con questo codice??? vorrei evitare il javascript

non ricordo come inserire il codice nel forum perdonatemi
******************************************************************************
<form action="richieste.php" method="post">
<table class="f1" border="1">
<tr>
<td>
ARTICOLO
</td>
<td>
<select name="articolo" id='articolo' onChange="">
<? echo $query="Select id,nome from articoli";
$res=mysql_query($query) or die(mysql_error());
while($p=mysql_fetch_array($res)){ ?>
<option value='<? echo $p[id]; ?>'><? echo $p[nome] ?></option>
<? } ?>
</select>
</td>
<td>
<img src="img/piu.png" width="30px" height="30px">
</td>
</tr>
<tr>
<td>
QUANTITA'
</td>
<td>
<input type="text" name="quantita">
</td>
<td>

\ <? echo $p['id'];
echo $qgiacenza="select giacenza from articoli where id=\" $p[id] \"";
$resgiacenza=mysql_query($qgiacenza) or die(mysql_error());
while($g=mysql_fetch_array($resgiacenza));
echo $g;
?>
</td>
</tr>
</table>
</form>

************************************************
 
Alla selezione
PHP:
<select name="articolo" id="articolo" onChange="this.form.submit()">
inviato il form recuperi l'id
PHP:
$id = $_POST['articolo'];

Se vuoi fare il controllo se esiste
PHP:
if(isset($_POST['articolo'])){
    $id = $_POST['articolo'];
}else{
    echo "ID non selezionato";
}
 
Domani proverò e vi farò saper anche se una mezza soluzione l'avevo trovata


Inviato dal mio iPhone utilizzando Tapatalk
 
Prova anche questo. Puoi vedere qui il funzionamento (molto stilizzato)

PHP:
<?php

include('conn.php');


//************stringa di connessione al DB*************

$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();
}
echo '<h1><u><center>MAGAZZINO</center></u></h1>';
if (!$result = $connessione->query("SELECT * FROM PRODOTTI")) {
    echo "Errore della query: " . $connessione->error . ".";
} else {
    // conteggio dei record
    echo '<form action="contrprod.php" method="get">';
    if($result->num_rows > 0) {
       echo '<select name="prodotto">';
       echo '<option value="  ">Seleziona un prodotto</option>';
       while($row = $result->fetch_array(MYSQLI_ASSOC)) {
              $prodotto = $row['PRODOTTO'];
            
              echo '<option value="'.$prodotto.'">'.$prodotto.'</option>';
              //echo "$id $prodotto $giacenza<br>";
        }
        echo '</select>';
          echo '<br><br><input type="submit" name="invia" value="Invia i dati">';

        echo '</form>';
    }
}

// liberazione delle risorse occupate dal risultato
$result->close();
?>

e contrprod.php


PHP:
<?php
$prodotto = $_GET['prodotto'];

echo '<h1><u><center>MAGAZZINO</center></u></h1>';

include('conn.php');

//************stringa di connessione al DB*************
$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();


if (!$result = $connessione->query("SELECT * FROM PRODOTTI where PRODOTTO='$prodotto'")) {
    echo "Errore della query: " . $connessione->error . ".";
} else {
    // conteggio dei record
    if($result->num_rows > 0) {
       while($row = $result->fetch_array(MYSQLI_ASSOC)) {
              $giacenza = $row['GIACENZA'];
       }
    }
}

// liberazione delle risorse occupate dal risultato
$result->close();

echo '<br><br><br>Prodotto: '.$prodotto;
echo '<br>Giacenza: '.$giacenza;
?>

Ovviamente conn.php contiene tutte le variabili di connessione
PS Ti sconsiglio di usare le vecchie e ormai deprecate mysql


Zorro
 
Prova anche questo. Puoi vedere qui il funzionamento (molto stilizzato)

PHP:
<?php

include('conn.php');


//************stringa di connessione al DB*************

$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();
}
echo '<h1><u><center>MAGAZZINO</center></u></h1>';
if (!$result = $connessione->query("SELECT * FROM PRODOTTI")) {
    echo "Errore della query: " . $connessione->error . ".";
} else {
    // conteggio dei record
    echo '<form action="contrprod.php" method="get">';
    if($result->num_rows > 0) {
       echo '<select name="prodotto">';
       echo '<option value="  ">Seleziona un prodotto</option>';
       while($row = $result->fetch_array(MYSQLI_ASSOC)) {
              $prodotto = $row['PRODOTTO'];
           
              echo '<option value="'.$prodotto.'">'.$prodotto.'</option>';
              //echo "$id $prodotto $giacenza<br>";
        }
        echo '</select>';
          echo '<br><br><input type="submit" name="invia" value="Invia i dati">';

        echo '</form>';
    }
}

// liberazione delle risorse occupate dal risultato
$result->close();
?>

e contrprod.php


PHP:
<?php
$prodotto = $_GET['prodotto'];

echo '<h1><u><center>MAGAZZINO</center></u></h1>';

include('conn.php');

//************stringa di connessione al DB*************
$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();


if (!$result = $connessione->query("SELECT * FROM PRODOTTI where PRODOTTO='$prodotto'")) {
    echo "Errore della query: " . $connessione->error . ".";
} else {
    // conteggio dei record
    if($result->num_rows > 0) {
       while($row = $result->fetch_array(MYSQLI_ASSOC)) {
              $giacenza = $row['GIACENZA'];
       }
    }
}

// liberazione delle risorse occupate dal risultato
$result->close();

echo '<br><br><br>Prodotto: '.$prodotto;
echo '<br>Giacenza: '.$giacenza;
?>

Ovviamente conn.php contiene tutte le variabili di connessione
PS Ti sconsiglio di usare le vecchie e ormai deprecate mysql


Zorro



ciao zorro, il tuo codice è chiaro ma fa il conteggio delle giacenze dopo aver premuto il submit
invece a me serve che quando seleziona la select mi dia le giacenze di quel prodotto in maniera automatica
 
ho risolto con questo codice

<?
<form action="richieste.php" method="post">
<table class="f1" border="1">
<tr>
<td>
ARTICOLO
</td>
<td>
<select name="articolo" id='articolo' onChange="giacenze(this)" >
<? echo $query="Select id,nome from articoli";
$res=mysql_query($query) or die(mysql_error());
while($p=mysql_fetch_array($res)){ ?>
<option value='<? echo $p[id]; ?>'><? echo $p[nome] ?></option>
<? } ?>
</select>
</td>
<td>
<img src="img/piu.png" width="30px" height="30px">
</td>
</tr>
<tr>
<td>
QUANTITA'
</td>
<td>
<input type="text" name="quantita">
</td>
<td><font size="-2">
<script>
//window.location="richieste.php?var=1";
function giacenze(selectObject){
var value = selectObject.value;

window.location="richieste.php?var="+value;
}</script>
di <? //echo $_GET['var'];
$qgiacenza="select giacenza from articoli where id=\" $_GET[var] \"";
$resgiacenza=mysql_query($qgiacenza) or die(mysql_error());
$g=mysql_fetch_array($resgiacenza);
echo $g[giacenza];
?></font>
</td>
</tr>
</table>
</form>

?>
 
ora il problema che mi è rimasto da risolvere è che quando ricarico la pagina non mi rimane selezionata la scelta e che la prima voce della select non me la calcola e quindi non mi restituisce la giacenza
 
Ciao,
avevo interpretato male. Comunque, per memorizzare in modo permanente la scelta dell'utente, e quindi evitare di perderla al ricaricamento della pagina, devi usare le sessioni
 
  • Like
Reactions: eraclio666
RISOLTO

PHP:
<form action="richieste.php" method="post">
            <table class="f1" border="1">
                <tr>
                    <td>
                        ARTICOLO
                    </td>
                    <td>
                        <select name="articolo" id='articolo' onChange="giacenze(this)" >
                        <?  echo $_SESSION['index'];$query="Select id,nome from articoli";
                            $res=mysql_query($query) or die(mysql_error());
                            while($p=mysql_fetch_array($res)){ ?>
                                <option value='<? echo $p[id]; ?>' <? if($_GET['var']== $p[id]) echo 'selected'; ?> ><? echo $p[nome]  ?></option>
                        <? }  ?>
                        </select>
                    </td>
                    <td>  
                        <img src="img/piu.png" width="30px" height="30px">
                    </td>
                </tr>
                <tr>
                    <td>
                        QUANTITA'
                    </td>
                    <td>
                        <input type="text" name="quantita">      
                    </td>
                    <td><font size="-2">
                    <script>
                        //window.location="richieste.php?var=1";
                        function giacenze(selectObject){
                            var value = selectObject.value;
                          
                            window.location="richieste.php?var="+value;
                        }</script>
                        di  <?     //echo $_GET['var'];
                                //$_SESSION['index']=$_GET['var'];
                                $qgiacenza="select giacenza from articoli where id=\" $_GET[var] \"";
                                $resgiacenza=mysql_query($qgiacenza) or die(mysql_error());
                                $g=mysql_fetch_array($resgiacenza);
                                echo $g[giacenza];                        
                        ?></font>
                    </td>
                </tr>
            </table>
        </form>


SENZA LA SESSIONE, mi dava un problema sul caricamento della pagina perchè mi selezionava l'elemento precedentemente selezionato
 
Ultima modifica di un moderatore:

Discussioni simili