Filtrare voci elenco/menu

Salve a tutti ragazzi! questo è il mio primo messaggio, spero che riusciate a darmi un mano su un problemino.

Dunque, ho un form per inserire dei dati nel database titolo codice ecc.. e poi due elenchi/menu, nel primo mi stampa l'id menu e il secondo l'id del sottomenu.

In che modo potrei fare per ottenere cliccando per esempio 'bottoni' nel primo elenco, automaticamente nell'elenco di sottocategoria mi escano solo le voci del menù 'bottoni' ?

questa è la parte di codice interessata:

//elenco menu della categoria 
<select name="id_menu" id="id_menu"> 
                <option value="">seleziona categoria</option> 
                <?php 
do {   
?> 
                <option value="<?php echo $row_rs_menu['id']?>"><?php echo $row_rs_menu['nome_menu']?></option> 
                <?php 
} while ($row_rs_menu = mysql_fetch_assoc($rs_menu)); 
  $rows = mysql_num_rows($rs_menu); 
  if($rows > 0) { 
      mysql_data_seek($rs_menu, 0); 
      $row_rs_menu = mysql_fetch_assoc($rs_menu); 
  } 
?> 
              </select> 
            </label></td> 
          </tr> 
          <tr valign="baseline"> 
            <td align="right" nowrap="nowrap" class="testoCATEGORIA">Sottomenu:</td> 
            <td><label> 
              <select name="id_sottomenu" id="id_sottomenu"> 
                <option value="">seleziona sottomenu</option> 
                <?php 
do {   
?> 


//elenco menu della sottocategoria 
<option value="<?php echo $row_rs_sottomenu['id_menu']?>"><?php echo $row_rs_sottomenu['sottomenu']?></option> 
                <?php 
} while ($row_rs_sottomenu = mysql_fetch_assoc($rs_sottomenu)); 
  $rows = mysql_num_rows($rs_sottomenu); 
  if($rows > 0) { 
      mysql_data_seek($rs_sottomenu, 0); 
      $row_rs_sottomenu = mysql_fetch_assoc($rs_sottomenu); 
  } 
?>
inviato 6 anni fa
cloude
X 0 X

Perchè usi il do while e non il while?

Per fare una correlazione fra i due menu a tendina o usi javascript o usi ajax.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

grazie per la risposta Mario, dunque devo confessare che il codice l'ha formulato dreamweaver stesso, il metodo che dici tu è complicato da spiegare?

risposto 6 anni fa
cloude
X 0 X

Un po', in rete esistono delle guide apposite per fare questo.

Scegli prima se usare ajax o javascript.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Vorrei una cosa non molto complessa da sviluppare, in realtà mi sarei accontentato anche di fare uscire nel secondo menù a tendina una cosa di questo tipo, giusto per non fare uscire tutte le sottocategorie all'apertura del menù a tendina, anche se il metodo è un pò grezzo:

scelgo categoria: bottoni

sottocategoria: bottoni >> argentati

sottocategoria: bottoni >> dorati

risposto 6 anni fa
cloude
X 0 X

Il metodo che proponi va bene se la scelta non è ampia, non è difficile da fare, devi solo modulare il tuo output dal codice che ci hai fornito.

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X

ho provato a fare una cosa tipo così, ma la categoria principale è sempre solo la prima, così:

bottoni >>> argentati

bottoni >>> dorati

bottoni >>> madreperla (in questo ad esempio dovrebbe uscire fibbie >>> madreperla  cioè la seconda categoria)

?>
<option value="<?php echo $row_rs_sottomenu['id']?>"><?php echo $row_rs_menu['nome_menu']?> >>> <?php echo $row_rs_sottomenu['sottomenu']?></option>
                  <?php
} while ($row_rs_sottomenu = mysql_fetch_assoc($rs_sottomenu));
  $rows = mysql_num_rows($rs_sottomenu);
  if($rows > 0) {
      mysql_data_seek($rs_sottomenu, 0);
     $row_rs_sottomenu = mysql_fetch_assoc($rs_sottomenu);
  }
?>
risposto 6 anni fa
cloude
X 0 X

Devi fare due cicli annidati.

Non usare il do-while usa altri cicli o solo while o solo for.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

grazie per l'aiuto, però non ho idea di come fare  ;D

risposto 6 anni fa
cloude
X 0 X

E' una cosa che se ne è già discussa.

Dipende da come estrai i dati dal tuo database.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

il codice di estrazione dei dati dal database è il seguente, che come dicevo in precedenza viene formulato con dreamweaver:

<?php require_once('Connections/conn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO prodotti (id, id_menu, id_sottomenu, codice, foto) VALUES (%s, %s,%s, %s, %s)",
                       GetSQLValueString($_POST['id'], "int"),
                       GetSQLValueString($_POST['id_menu'], "text"),
                       GetSQLValueString($_POST['id_sottomenu'], "text"),
                       GetSQLValueString($_POST['codice'], "text"),
                  GetSQLValueString($_FILES['foto']['name'], "text"));

  mysql_select_db($database_conn, $conn);
  $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());


// UPLOAD DEL FILE

$idir = "image_files/"; // Path To Images Directory 
$tdir = "image_files/thumbs/"; // Path To Thumbnails Directory 
$twidth = "120"; // Maximum Width For Thumbnail Images 
$theight = "125"; // Maximum Height For Thumbnail Images 

$url = $_FILES['foto']['name']; // Set $url To Equal The Filename For Later Use 
if ($_FILES['foto']['type'] == "image/jpg" || $_FILES['foto']['type'] == "image/jpeg" || $_FILES['foto']['type'] == "image/pjpeg") { 
$file_ext = strrchr($_FILES['foto']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php 
$copy = copy($_FILES['foto']['tmp_name'], "$idir" . $_FILES['foto']['name']); // Move Image From Temporary Location To Permanent Location 
if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location 
print '. <font color="#FFFFFF">';// Was Able To Successfully Upload Image 
$simg = imagecreatefromjpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From 
$currwidth = imagesx($simg); // Current Image Width 
$currheight = imagesy($simg); // Current Image Height 
if ($currheight > $currwidth) { // If Height Is Greater Than Width 
$zoom = $twidth / $currheight; // Length Ratio For Width 
$newheight = $theight; // Height Is Equal To Max Height 
$newwidth = $currwidth * $zoom; // Creates The New Width 
} else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height) 
$zoom = $twidth / $currwidth; // Length Ratio For Height 
$newwidth = $twidth; // Width Is Equal To Max Width 
$newheight = $currheight * $zoom; // Creates The New Height 
} 
$dimg = imagecreate($newwidth, $newheight); // Make New Image For Thumbnail 
imagetruecolortopalette($simg, false, 256); // Create New Color Pallete 
$palsize = ImageColorsTotal($simg); 
for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image 
$colors = ImageColorsForIndex($simg, $i); // Number Of Colors Used 
ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use 
} 
imagecopyresized($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It) 
imagejpeg($dimg, "$tdir" . $url); // Saving The Image 
imagedestroy($simg); // Destroying The Temporary Image 
imagedestroy($dimg); // Destroying The Other Temporary Image 
print 'Prodotto inserito con SUCCESSO <font color="#FFFFFF">'; // Resize successful 
} else { 
print '<font color="#FFFFFF">Errore riprova ad inserire il prodotto</font>'; // Error Message If Upload Failed 
} 
} else { 
print '<font color="#FFFFFF">ERRORE puoi inserire solo file che hanno questa estensione (.jpg or .jpeg. la tua è '; // Error Message If Filetype Is Wrong 
print $file_ext; // Show The Invalid File's Extention 
print '.</font>'; 
} 
} 

mysql_select_db($database_conn, $conn);
$query_rs_menu = "SELECT * FROM menu ORDER BY nome_menu ASC";
$rs_menu = mysql_query($query_rs_menu, $conn) or die(mysql_error());
$row_rs_menu = mysql_fetch_assoc($rs_menu);
$totalRows_rs_menu = mysql_num_rows($rs_menu);
$query_rs_menu = "SELECT * FROM menu";
$rs_menu = mysql_query($query_rs_menu, $conn) or die(mysql_error());
$row_rs_menu = mysql_fetch_assoc($rs_menu);
$totalRows_rs_menu = mysql_num_rows($rs_menu);

mysql_select_db($database_conn, $conn);
$query_rs_sottomenu = "SELECT * FROM sottomenu ORDER BY sottomenu ASC";
$rs_sottomenu = mysql_query($query_rs_sottomenu, $conn) or die(mysql_error());
$row_rs_sottomenu = mysql_fetch_assoc($rs_sottomenu);
$totalRows_rs_sottomenu = mysql_num_rows($rs_sottomenu);
$query_rs_menu = "SELECT * FROM menu ORDER BY nome_menu ASC";
$rs_menu = mysql_query($query_rs_menu, $conn) or die(mysql_error());
?>
risposto 6 anni fa
cloude
X 0 X
formulato con dreamweaver:

Mi è indifferente. Un programma viene pensato e costruito da un cervello, non da un computer o un software.

Ora fa una ricerca nel forum per vedere le varie soluzioni adottate da vari utenti per fare una cosa analoga.

Io al posto tuo fare una query con un join per estrarre i vari dati in modo aggregato.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Sottolineavo il fatto che era formulato da dreamweaver per specificare che ho effettuato quasi tutti i passaggi con le funzioni del programma a parte qualche piccola cosa, e non so come intervenire direttamente sul codice. Comunque grazie ancora per le risposte  :)

risposto 6 anni fa
cloude
X 0 X

Un po', in rete esistono delle guide apposite per fare questo.

Scegli prima se usare ajax o javascript.

Ciao MarioS potresti suggerirmi qualche guida online per ottenere questa cosa? grazie!

risposto 6 anni fa
cloude
X 0 X

Non ti saprei dare una guida specifica...

Io al posto tuo farei il tutto con ajax e uno script in php.

Guide di ajax in rete se ne trovano parecchie, anche di ben fatte.

Qui in phpnews puoi leggere questa:

http://www.phpnews.it/articoli/ajax-in-pratica/

Poi sta anche nella tua fantasia o nella fantasia del programmatore ad implementare l'algoritmo giusto che risponde alle proprie esigenze  :)

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda