Come posso impostare a grandi linee questa tabella?

simo10piu

Nuovo Utente
4 Mag 2009
24
0
0
Ciao a tutti, volevo chiedere qualche consiglio per eseguire questo:

Una lista di articoli, si scelgono quelli da ordinare, si indicano le quantità, si clicca su stampa. A questo punto, si arriva ad una pagina (impostata solo per la stampa), dove verranno visualizzati/impaginati solo gli articoli che sono stati selezionati nella checkbox, con a fianco le quantità. Stavo pensando anche di eliminare le checkbox se è possibile effettuare un controllo del tipo: se sono state inserite quantità visualizza l'articolo....
Voi come la organizzereste la cosa?
Io non ho molte conoscenze di php, ma mi piace molto imparare.

Per ora quello che ho scritto è:

<table>
<tr>
<td>cod. 99290034 &nbsp; &nbsp;</td><td>Per tempera &nbsp; &nbsp; &nbsp;</td>
<td><input type="checkbox" name="scatola[]">&nbsp; &nbsp; &nbsp;
<input type="text" name="quantita1" maxlength="7" size="7" onClick="this.select();" value="Quante?"></td>
</tr>
<tr>
<td>cod. 99290032 &nbsp; &nbsp;</td><td> Piccola Collage &nbsp; &nbsp; &nbsp;</td>
<td><input type="checkbox" name="scatola[]" value="no">&nbsp; &nbsp; &nbsp;
<input type="text" name="quantita2" maxlength="7" size="7" onClick="this.select();" value="Quante?"></td>
</tr>
<tr>
<td>cod. 99290061 &nbsp; &nbsp;</td> <td>Standard media robusta &nbsp; &nbsp; &nbsp;</td>
<td><input type="checkbox" name="scatola[]" value="no">&nbsp; &nbsp; &nbsp;
<input type="text" name="quantita3" maxlength="7" size="7" onClick="this.select();" value="Quante?"></td>
</tr>
ecc......

Solo che cosi facendo non credo mi passi il codice articolo....avrei bisogno che nell'altra pagina venga visualizzato il codice articolo e la quantità da ordinare....

Consigli?

Grazie ciao
 
ciao
io proverei in questo modo, anche se non so da dove proviene il codice e la descizione (da un db?)
in questo modo non devi usare le checkbox.
eventualmente metti anche un controllo js sulla pagina dell'elenco per vedere se la quantità è un numero

pagina visualizzazione
PHP:
<?php
if(isset($_POST['ORDINA'])){
	$ordinato=array();
	unset($_POST['ORDINA']);
	$ordinato=$_POST;
	foreach($ordinato['quantita'] as $chiave => $valore){
		if($valore !="Quante?"){
			//più un controllo che $valore sia un numero maggiore di zero
			echo "codice $chiave : quantità $valore <br>";
		}
	}
}
?>
pagina elenco prodotti
HTML:
<form action="#" method="post">
<table>
<tr>
<td>cod. 99290034 &nbsp; &nbsp;</td><td>Per tempera &nbsp; &nbsp; &nbsp;</td>
<td>
<input type="text" name="quantita[99290034]" maxlength="7" size="7" onClick="this.select();" value="Quante?"></td>
</tr>
<tr>
<td>cod. 99290032 &nbsp; &nbsp;</td><td>Piccola Collage &nbsp; &nbsp; &nbsp;</td>
<td>
<input type="text" name="quantita[99290032]" maxlength="7" size="7" onClick="this.select();" value="Quante?"></td>
</tr>
<!-- eccetera............ -->
<tr>
<td>&nbsp; &nbsp;</td><td>&nbsp; &nbsp; &nbsp;</td>
<td><input name="ORDINA" type="submit" id="invia" value="ordina"></td>
</tr>
</table>
</form>
 
grazie mille borgo per la risposta!
Io sono proprio principiante ma nell'attesa, mi sono scervellato ed avevo pensato e scritto una cosa così:

<?php

$quantarray= array();

if (isset($_POST["quantita"])){
$quantarray = $_POST["quantita"];

$checkboxArray = array();

if (isset($_POST["scatola"])){
$checkboxArray = $_POST["scatola"];

foreach ($checkboxArray as $check_box_value) {
echo "$check_box_value\n";
echo "$quantarray";
}

}
?>

Sottolineo che nell'elenco prodotti nel form ho messo al value del text la scritta : quantita[].
E nella checkbox, ho dato come value, il codice dell'articolo.
Il mio intento era praticamente quello di creare un array sia per il codioce articolo tramite checkbox e sia per le quantità.
Poi richiamarle nell'altra pagina con 2 foreach (ehm credo...se è possibile) o con uno solo...
Ah, ovvio alla mia idea manca quel qualcosa che controlla e non mostra codici di articoli senza quantità.....

Che ne dici???? Era almeno un idea fattibile? Giusto per la soddisfazione :cool:
Io intanto provo il tuo script e vediamo.
Ciao grazie tante
 
ciao
tu giustamente trasmetti col post i due array, ma nel ciclo
PHP:
<?php
//....
foreach ($checkboxArray as $check_box_value) {
	echo "$check_box_value\n";
	echo "$quantarray"; 
}
//....
?>
tu cicli l'array $checkboxArray e non l'array $quantarray, così ad occhio e croce, l'uotput dovrebbe essere
solo dato dai valori delle chek (codice articolo) e l'echo "$quantarray" non ti da nulla (forse la scritta array)

p.s.
quando scrivi del codice, racchiudili tra i tag che servono # o <> o php
 
Ciao Borgo ancora grazie per la risposta.
Ho provato scervellandomi un metodo mio :) ed ho provato il tuo metodo (che funziona perfettamente!) l'unica è che in entrambi i casi mi vengono elencati nache i prodotti che non sono da ordinare, io vorrei che quelli con il no o con lo 0 o senza un numero cmq, non vengano nemmeno messi nella lista....è possibile fare una roba così?

Poi una domanda, nel tuo metodo c'è una variabile $chiave, è una variabile globale che sta per quello contenuto nelle quadre dell'array?

Questo poi è il mio metodo, certo il tuo è molto semplice godendo della tua esperienza :) ma anche il mio funziona! :):):)

Pagina prodotti (3 esempi):

<table>
<tr>
<td>cod. 99290034 &nbsp; &nbsp;</td><td>Per tempera &nbsp; &nbsp; &nbsp;</td>
<td>
<input type="text" name="codice1" maxlength="7" size="7" onClick="this.select();" value="no"></td>
</tr>
<tr>
<td>cod. 99290032 &nbsp; &nbsp;</td><td>Piccola collage &nbsp; &nbsp; &nbsp;</td>
<td>
<input type="text" name="codice2" maxlength="7" size="7" onClick="this.select();" value="no"></td>
</tr>
<tr>
<td>cod. 99290061 &nbsp; &nbsp;</td><td>Standard media robusta &nbsp; &nbsp; &nbsp;</td>
<td>
<input type="text" name="codice3" maxlength="7" size="7" onClick="this.select();" value="no"></td>
</tr>
</table>
Pagina ordine finale:

codice che prende i dati
<?php
$quantita1=$_POST["codice1"];
$quantita2=$_POST["codice2"];
$quantita3=$_POST["codice3"];
?>

tabella già impostata
<table>
<tr>
<td><b><span class="descrizionetabella">Codice Articolo</span></b></td><td><b><span class="descrizionetabella">Quantit&agrave; </span></b></td>
</tr>
<tr>
<td>cod. 99290034 &nbsp; &nbsp;</td><td><?php echo "$quantita1";?></td>
</tr>
<tr>
<td>cod. 99290032 &nbsp; &nbsp;</td><td><?php echo "$quantita2";?></td>
</tr>
<tr>
<td>cod. 99290061 &nbsp; &nbsp;</td><td><?php echo "$quantita3";?></td>
<td>
</tr>
</table>

Me lo sono inventato io con quel poco di conoscenza che ho, non sarà magari il massimo....devo studiarmi bene i cicli tipo foreach....

Mancherebbe solo quel controllino li

Ciao grazie
 
ciao
certo che il tuo metodo funzia, ma ha il difetto che se aggiungi/rimuovi un articolo devi aggiungere/rimuovere i $_POST,
inoltre se sono tanti fai uno script lungo una bibbia.
comunque per stampare solo gli articoli con le quantità e eliminare quelli senza, puoi modificare

PHP:
<?php 
if(isset($_POST['ORDINA'])){ 
    $ordinato=array(); 
    unset($_POST['ORDINA']); 
    $ordinato=$_POST; 
    foreach($ordinato['quantita'] as $chiave => $valore){ 
        //forzi il valore a intero (oppure lo forzi a float se ti servono i decimali)
		$valore= (int)$valore+0;
		//se in valore hai Quante? o una stringa alfabetica (int)$valore è = a 0
		//riulta un numero > di 0 solo se è un numero
		if($valore <=0){ 
            unset($ordinato['quantita'][$chiave]);//elimino dalla lista
        }else{
			echo "codice $chiave : quantità $valore <br>"; 
		}
    } 
} 
?>

sensa contare se un giorno tu volessi ricavare gli articoli da un db.
cerca di sfruttare la "dinamicità" di php anche se lo stai imparando.


per rispondere alla tua domanda.
$ chiave non è una variabile globale, ma la chiave dell'array associativo che ho costruito dando negli input il valore

valore=quantita[99290034] ecc...

nel costrutto foreach si puo leggere di un array sia la chiave che il valore che solo il valore.
in pratica da queel'input ho trasformato il post in un array bidimensionale, facendo così è come avessi scritto (es) mettendo o no le quantità
PHP:
$ordinato['quantita'][99290034]=37;
$ordinato['quantita'][99290036]=82;
$ordinato['quantita'][99290999]='Quante?';
//ecc...eccc...

col ciclo foreach poi interrogo la chiave e il valore ottenedo l'abbinamento tra codice e quantità
 
Ultima modifica:
...spettacolo borgo grande. Ma tu come sai queste cose? Cioè a me da fastidio che leggo il ciclo foreach, e non ci capisco un granchè, mi piace sì ottenere il risultato ma ancor di più vorrei capire quello che faccio.
Tu hai studiato a scuola?

Io ho da poco scoperto questa mia passione per la programmazione per il web ed un pochino alla volta sto imparando faccio qualche passo...

Ciao grazie mille per l'aiuto.
 
cavol......ma il amnuale è in inglese....e tu come lo sai l'inglese!!! :):):):) Scherzo. QUindi sei un autodidatta ed hai fatto tutto da te, complimenti! Pian piano arrivo anchio nè :):):) Grazie mille Borgo per l'aiuto.
 

Discussioni simili