Joomla.it Forum
Non solo Joomla... => Sviluppo => : donato.chpp 29 May 2009, 00:35:31
-
ciao, come ho già scritto in un altro post sto cercando di sviluppare un componente per fare un preventivo online.
Il problema è questo, la mia tabella preventivo contiene tre campi varchar, nel primo campo inserisco il nome dell'articolo, nel secondo campo la dimensione dell'articolo e nel terzo campo il colore. Il back-end per inserire gli articoli l'ho creato, mentre nel front-end vorrei che ci fossero tre campi object di selezione, dove l'utente sceglie il nome dell'articolo, e nella seconda object ha la possibilità di scegliere solo tra le possibili dimensioni per l'articolo scelto, e cosi anche nella terza... spero di essermi spiagato abbastanza bene, qualcuno potrebbe darmi qualche dritta???? per ogni scelta andrebbe fatto un controller diverso :-[ ??? grazie mille!!!!!
-
Ciao, in poche parole vuoi creare delle così dette select dipendenti. Per fare ciò devi usare javascript, in modo che quando selezioni una object della prima select, in automatico ti visualizza la seconda select collegata all'oggetto della prima. Se vuoi un esempio, in virtuemart, nella parte di registrazione utente, ce n'è una, che quando selezioni una nazione di visualizza solo le città riferite a quello stato.
-
teakor grazie per la risposta, è esattamente quello che cerco, ora do un'occhiata al componente per cercare di capire.... grazie ancora, buona serata
-
rieccomi già teakor, ho un po di difficoltà a capire dal componente, sto continuando a vederlo, però dai file perchè ho anche qualche problema nell'installazione, hai qualche altra dritta??? te ne sarei grato, grazie ;D
-
Per quanto riguarda l'installazione segui le istruzioni che ti da. Se non erro dovrebbe tirarti fuori degli errori perchè non ti decomprime alcuni zip, che dovrebbero essere admin_file e front_file se non vado errato. Una volta che ti ha installato il componente e rimane in attesa della tua scelta, cioè se installarlo con o senza file di prova, decomprimi sul tuo pc i relativi file e caricali nelle apposite cartelle via ftp. Comunque prova a cercare qualcosa qui sul forum se c'è una guida per l'installazione del componente oppure cercalo sulla comunità italiana di virtuemart.
Una volta fatto tutto devi andare, lato frontend nella pagina di registrazione nuovo utente, e fai visualizza sorgente. Da lì vedi il codice javascript che devi usare. Se guardi dentro i sorgenti in php, ti perdi solamente.
-
grazie teakor, molto gentile ;)
-
scusa teakor mi sta facendo un po ammattire :-\
io da administrator metto gli articoli, da front-end devo visualizzare i tre object e consentire la scelta. come potrei fare, prima leggo tutti i dati del database con php e poi li visualizzo tramite object con js????
-
Piò meno.
Questo è il link ad demo on line di virutemart.
http://demo.vmitalia.net/vm11/index.php?option=com_virtuemart&page=shop.registration&Itemid=2&vmcchk=1&Itemid=2
Visualizza il codice sorgente di questa pagina e cerca al suo interno "Nazione" da nazione in poi ti viene mostrato come realizzare quello che chiedi.
-
ottimo grazie teakor, nel frattempo stavo provando a farlo tramite php con get, in questo modo
<form action="index.php" method="get" name="sendForm">
<select name="articolo">
<option value="articolo"></option>
<?php
if(count($this->rows) == 0) {
echo JText::_('Nessuna selezione possibile');
} else {
foreach($this->rows as $r) {
?>
<?php
echo "<option value=\"". $r->articolo ."\">". $r->articolo."</option>"; ?>
<?php
}
}
?>
</select>
<select name="dimensione">
<option value=""></option>
<?php
if(count($this->rows) == 0) {
echo JText::_('Nessuna selezione possibile');
} else {
foreach($this->rows as $r) {
?>
<?php
$tipo = $_GET['articolo'];
if($r->volantinaggio == $tipo)
echo "<option value=\"". $r->dimensione ."\">". $r->dimensione."</option>"; ?>
<?php
}
}
?>
</select>
</form>
nel database ho id-articolo-dimensione-colore
quando lo installo e da admin inserisco i valori nel front end mi fa vedere solamente la prima object e la seconta la fa vedere ma vuota..
si può fare anche in questo modo???
dove sbaglio??? grazie ancora per la disponibilita!!
-
nono in PHP lo devi fare refreshando la pagina.
Ti conviene farlo in JS:
onChange='var x=document.getElementById("formid").value; document.getElementById(x).style.display= "inline"; if ( x == "artid" ) { document.getElementById("catid").style.display= "none";} if ( x == "catid" ) { document.getElementById("artid").style.display= "none";}'
[spartano]
-
ok odino, mi sto cominciando a raccapezzare ;D
se la mia tabella del componente ha articolo-dimensione-colore... come faccio con il js a recuperare questi dati dal template se la mia view.html.php ha
$this->assignRef('rows', $events);
gia potrei chiamare i dati da rows???
grazie per la pazienza :o
cioè per spiegarmi meglio, prima di poter visualizzare i dati con js li dovrei recuperare con il php???
-
assegni una classe corrispondente all'id
-
non mi fucilare ;D
in che senso???
e completamente sbagliato fare in questo modo?
<?php
$k = 0;
$n=count($this->rows);
for($i=0 ; $i < $n; $i++) {
$row =& $this->rows[$i];
?>
<div class="preventivo">
<script language="javascript" type="text/javascript">
var x.document.getElementById("rows").value;
document.write(x.citta);
</script>
<?php } ?>
senza calcolare il document.write che l'ho messo solo per verificare se mi stampava qualcosa, ma ovviamente niente...
sono fuori strada???? ???
-
______ ______ ______ _____
| | | | |
| Prod | Color| Dimen| ID |
|______|______|______|_____|
______ ______ ______ _____
| | | | |
| Scopa| Blu | 30cm | 1 |
|______|______|______|_____|
______ ______ ______ _____
| | | | |
| Colla| Verde| 10cm | 2 |
|______|______|______|_____|
assegni, dato che devi richiamare il tutto via JS, al div che conterrà le righe del record "scopa", l'id 1 come classe.
Esempio:
<div class="itemId_1">
...scopa...
</div>
<div class="itemId_2">
...colla...
</div>
-
ho fatto una prova in questo modo:
<div class="id_1" id="id_1">
<?php
$k = 0;
$n=count($this->rows);
for($i=0 ; $i < $n; $i++) {
$row =& $this->rows[$i];
?>
<script type="text/javascript">
x = document.getElementById("id_1").articolo;
document.write(x);
</script>
<?php
}
?>
</div>
però mi scrive undefined nel front end dove vorrei visualizzarlo... questa è una prova che sto facendo per capire come prelevare e scrivere i dati poi pensero alla object. prima non mi criveva nulla ora almeno undefined esce :D
grazie ancora odino
-
ragazzi un aiuto???? please ;)
non riesco a capire come far leggere a js i dati che poi devo far vedere come option select.
tra l'altro se inserisco diversi articoli con lo stesso nome (ma dimensioine diversa) me li fa vedere ripetuti, invece io vorrei me li facesse vedere una sola volta, come se facessi una select da database
grazie
-
Posta il codice java che hai creato.
-
innanzitutto grazie per la risposta teakor ;D
so che il codice è completamente sbagliato, però ho cominciato a vedere da poco js
ti posto tutto il codice della form
<form action="index.php" method="post" name="provaForm">
<select name="articolo">
<option value=""></option>
<?php
if(count($this->rows) == 0) {
echo JText::_('Nessun Nome');
} else {
foreach($this->rows as $r) {
?>
<script type="text/javascript">
document.write("<?php echo '<option value=\''. $r->articolo .'\'>'. $r->articolo.'</option>'; ?>");
</script>
<?php
}
}
?>
</select>
-
document.write("<?php echo '<option value=\''. $r->articolo .'\'>'. $r->articolo.'</option>'; ?>");
prova a cambiarlo in:
document.write("<option value='<?php echo $r->articolo;?>'><?php echo $r->articolo;?></option>");code]
-
ottimo teakor, funziona perfettamente, però io vorrei anche che due articoli uguali me li facesse vedere una sola volta.ad es:
articolo dimensione colore
bicchiere x blu
bicchiere y verde
bicchiere z nero
carta l bianco
la prima option mi dovrebbe far vedero solo bicchiere e carta, la seconda a seconda della scelta mi dovrebbe far vedere o x,y,z(nel caso in cui venga scelto bicchiere) o l(nel caso in cui venga scelta carta...
come potrei fare???andrebbe inserita una funzione nel models??? grazie ancora :-\
-
nessuna dritta???? :'(
sto cercando di fare diversi tentativi e guardare diverse guide, però sono un po in panne
-
Sempre con jovascript. A seconda di quello che scegli nella prima select attivi o disattivi la select secondaria di riferimento.
-
io ho difficolta proprio nel fare quello cioe devo farlo con le if ma il valore di js lo leggo con
document.write("<?php echo $r->articolo; ?>"); ???
pui le due select le metto in un unico form? e scrivo per la prima scelta:
<select name="citta">
dovrei usare onchange? perchè quando seleziono e come se non selezionassi nulla...
teakor non voglio la pappa pronta, perchè sto facendo da solo diversi tentativi e leggendo svariate guide è solo che sono ancora in difficoltà, grazie mille per l'aiuto
;)
-
si onChange