Back to top

Autore Topic: Modulo di ricerca - Form senza textbox, solo select concatenate  (Letto 5267 volte)

Offline Kaiban

  • Nuovo arrivato
  • *
  • Post: 2
    • Mostra profilo
Salve! Sto cercando di creare un modulo di ricerca partendo da quello di virtuemart(mod_virtuemart_search.php) in cui, al posto di inserire il testo da cercare, la scelta sia condizionata da due menù a tendina concatenati. I menù sono popolati tramite php che si va a cercare due tabelle nella root del database di joomla.
Ho creato il modulo ma se lo attivo, mi scompare tutta la home e appare solo un menù a tendina vuoto.
Il modulo è composto dai seguenti file:
-mod_virtuemart_search3.php
Codice: [Seleziona]
<?php
include_once 'select.class.php';
$opt = new SelectList();
if( !
defined'_VALID_MOS' ) && !defined'_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
if( 
file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}

global 
$VM_LANG$mm_action_url$sess;

?>


<form action="<?php $sess->purl$mm_action_url."index.php?page=shop.browse" ?>" id="myform" method="post">
Seleziona una marca:<br />
<select id="marche">
<?php echo $opt->ShowMarca(); ?>
</select>
<br /><br />

Seleziona un modello:<br />
<select id="modelli">
<option>Scegli...</option>
</select>
<br /><br />
<p><label for="keyword"><?php echo $VM_LANG->_('PHPSHOP_SEARCH_LBL'?></label></p>
<p>
<input name="keyword" type="hidden" title="<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE'?>" value=$res id="keyword"  />
<input class="button" type="submit" name="Search" value="<?php echo $VM_LANG->_('PHPSHOP_SEARCH_TITLE'?>" />
</p>

</div>
</form>


mod_virtuemart_search3.xml
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install SYSTEM "http://www.joomla.org/xml/dtd/1.5/module-install.dtd">
<install type="module" version="1.5.0">
<name>VirtueMart Search3</name>
<description>Shows the product search field</description>
<files>
<filename module="mod_virtuemart_search3">mod_virtuemart_search3.php</filename>
<filename>db_config.php</filename>
        <filename>select.class.php</filename>
<filename>select.php</filename>


</files>
<params>
<param name="moduleclass_sfx" type="text" default=""
label="Module Class Suffix"
description="A suffix to be applied to the css class of the module (table.moduletable), this allows individual module styling" />
<param name="class_sfx" type="text" default=""
label="Menu Class Suffix"
description="A suffix to be applied to the css class of the menu items" />
</params>
</install>



select.class.php

Codice: [Seleziona]
<?php

class SelectList
{

protected $conn;

public function __construct()
{
$this->DbConnect();
}

protected function DbConnect()
{
include "db_config.php";

$this->conn mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
mysql_select_db($db,$this->conn) OR die("Impossibile selezionare il database $db");

return TRUE;
}

public function ShowMarche()
{
$sql "SELECT * FROM marche";
$res mysql_query($sql,$this->conn);
$marche '<option value="0">scegli...</option>';

while($row mysql_fetch_array($res))
{
$marche .= '<option value="' $row['id_marca'] . '">' utf8_encode($row['nome_marca']) . '</option>';
}

return $marche;
}

public function ShowModelli()
{
$sql "SELECT * FROM modelli WHERE id_reg=$_POST[id_reg]";
$res mysql_query($sql,$this->conn);
$modelli '<option value="0">scegli...</option>';

while($row mysql_fetch_array($res))
{
$modelli .= '<option value="' $row['id_modello'] . '">' utf8_encode($row['nome_modelli']) . '</option>';
}

return $modelli;
}

}

?>



select.php
Codice: [Seleziona]
<?php

include_once 'select.class.php';
$opt = new SelectList();

if(isset(
$_POST['id_marca']))
{
echo $opt->ShowModelli();
die;
}

?>



Manca il db_config.php ma ci sono solo i parametri di connessione.
Ho aggiunto al file index.php nella cartella ../templates/miotemplate/ sia la libreria di jQuery che lo script seguente, tutto fra i tag HEAD
Codice: [Seleziona]
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){

var scegli = '<option value="0">Scegli...</option>';
var attendere = '<option value="0">Attendere...</option>';

$("select#modelli").html(scegli);
$("select#modelli").attr("disabled", "disabled");



$("select#marche").change(function(){
var marca = $("select#marche option:selected").attr('value');
$("select#modelli").html(attendere);
$("select#modelli").attr("disabled", "disabled");

$.post("select.php", {id_marca:marca}, function(data){
$("select#modelli").removeAttr("disabled");
$("select#modelli").html(data);
});
});


});

</script>


Qualcuno mi può dare una mano?

mau_develop

  • Visitatore
Re:Modulo di ricerca - Form senza textbox, solo select concatenate
« Risposta #1 il: 14 Nov 2010, 20:40:31 »
sai che non capisco cosa tu stia facendo e come... sicuramente stai mischiando un po' di concetti.

M.


Offline Kaiban

  • Nuovo arrivato
  • *
  • Post: 2
    • Mostra profilo
Re:Modulo di ricerca - Form senza textbox, solo select concatenate
« Risposta #2 il: 14 Nov 2010, 21:44:41 »
L'ho scritto sopra cosa sto cercando di fare.. Vorrei creare un modulo per la ricerca condizionata come ad esempio questo sito http://www.ricambituning.it/

due dropdown list i cui valori sono caricati dinamicamente in base alla scelta della prima tendina. Ho modificato il modulo di ricerca dei prodotti di virtuemart per passargli, al posto dell'imput da tastiera, i valori del menù a tendina.

Conosci altri metodi per riempire dinamicamente una droplist senza ricaricare la pagina?
Si possono scrivere moduli in asp?

mau_develop

  • Visitatore
Re:Modulo di ricerca - Form senza textbox, solo select concatenate
« Risposta #3 il: 14 Nov 2010, 21:55:10 »
bah... con jquery o mootools già presente in joomla.

http://docs.joomla.org/Ajax_using_MooTools

comunque non puoi farecome stavi facendo, joomla è implementato con pattern mvc e quello devi seguire.

asp non lo puoi proprio usare.

M.

 



Web Design Bolzano Kreatif