Foros del Web » Programando para Internet » PHP »

Select con 2 atributos name

Estas en el tema de Select con 2 atributos name en el foro de PHP en Foros del Web. Estoy haciendo el siguiente formulario para un motor de busqueda: Código PHP: <form name="formulario2" action="?" method="get" onSubmit='return validar2(this)'> <strong> <?php  echo  $lang [ 'SEARCH_TITLE' ];  ?> </strong><br> <input type="hidden" name="cityid" value=" <?php  echo  ...
  #1 (permalink)  
Antiguo 21/09/2009, 13:41
 
Fecha de Ingreso: mayo-2003
Mensajes: 92
Antigüedad: 20 años, 11 meses
Puntos: 0
Select con 2 atributos name

Estoy haciendo el siguiente formulario para un motor de busqueda:

Código PHP:
<form name="formulario2" action="?" method="get" onSubmit='return validar2(this)'>

<strong><?php echo $lang['SEARCH_TITLE']; ?></strong><br>

<input type="hidden" name="cityid" value="<?php echo $xcityid?>">
<input type="hidden" name="lang" value="<?php echo $xlang?>">
<input onKeyUp="formulario2.search.value=formulario2.search.value.toLowerCase()" name="search" type="text" value="<?php echo $_GET['search']; ?>" size="37" maxlength="50">


<select>
<option value="0" <?php if(!$_GET['subcatid']) echo "selected"?>><?php echo $lang['ALL_CATEGORIES']; ?></option>
<?php

$sql 
"SELECT catid, catname
        FROM $t_cats
        ORDER BY catname"
;
$res mysql_query($sql);

while (
$row=mysql_fetch_array($res))
{

            echo 
"<option value=\"$row[catid]\"";
            if (
$_GET['catid'] == $row['catid'])
            {
                echo 
" selected"
                
$cat $row['catname']; 
            }
            echo 
">$row[catname]</option>";



    
$sql "SELECT subcatid, subcatname
            FROM $t_subcats
            WHERE catid = $row[catid]
            ORDER BY subcatname"
;

    
$ress mysql_query($sql);

    if (
mysql_num_rows($ress))
    {

        while (
$s mysql_fetch_array($ress))
        {
            echo 
"<option value=\"$s[subcatid]\"";
            if (
$_GET['subcatid'] == $s['subcatid'])
            {
                echo 
" selected"
                
$subcat $s['subcatname'];
            }
            echo 
">&middot; $s[subcatname]&nbsp;</option>";
        }

    }
}

?>
</select>

<input type="hidden" name="view" value="ads">

<input type="submit" value="<?php echo $lang['SEARCH']; ?>" name="Buscar">
          
          <br>
<?php echo $lang['ADS_WITH_IMAGES']; ?>: <input name="images_only" type="checkbox" value="1" <?php if ($_GET['images_only']==1){echo 'checked';}?>>
&nbsp;&nbsp;
<?php echo $lang['GLOBAL_SEARCHS']; ?>: <input name="global" type="checkbox" value="yes" <?php if ($_GET['global']=="yes"){echo 'checked';}?>>

</form>

El problema es que necesito asignar "catid" o "subcatid" al name del select ya que este contiene tanto las categorías como las subcategorias ,.. llevo dias y he probado de todo ,.. agradecería alguna ayuda
  #2 (permalink)  
Antiguo 21/09/2009, 14:47
 
Fecha de Ingreso: enero-2006
Ubicación: Lima
Mensajes: 20
Antigüedad: 18 años, 3 meses
Puntos: 2
Respuesta: Select con 2 atributos name

un select solo puede dar como valor 1 item y por tu script veo q la cat y sub lo estas mostrando idependiente mente y asi nunca podras obtener los 2 datos juntos
te doi una idea con optgroup


<select name="categoria" id="categoria" style="width:200px">
<option value="" selected="selected">-----Seleccione------</option>
<?
$sql_categoria=mysql_query("select * from categorias order by categoria asc");
while ($cat=mysql_fetch_array($sql_categoria))
{
?>
<optgroup label="<?=utf8_encode($cat["categoria"])?>">
<?
$sql_subcategoria=mysql_query("select * from subcategorias where categoria='$cat[0]'order by subcategoria asc");
while ($subcat=mysql_fetch_array($sql_subcategoria))
{
?>
<option value="<?=$cat[0]?>|<?=$subcat[0]?>"><?=utf8_encode($subcat["subcategoria"])?></option>
<?
}
?>
</optgroup>
<?
}
?>
</select>

ahora al enviar el formulario $_POST[categoria] le tendrias q pasar un explode("|",$_post[categoria]).

espero q esto te ayude
  #3 (permalink)  
Antiguo 22/09/2009, 00:36
 
Fecha de Ingreso: mayo-2003
Mensajes: 92
Antigüedad: 20 años, 11 meses
Puntos: 0
Quizas me exprese mal (cansancio) ... perdon


No necesito los 2 valores,... y de hecho el valor pasa bien tanto con las cats como con las subcats

El tema es que una vez pasa el valor este se recoge según sea el name del elemento select si es catid pues todos los valores tanto las cats como las subcats son catid y viceversa

Necesito algo para determinar que el valor que pasa es catid o es subcatid ya que quiero que las cats se puedan seleccionar y ademas con optgroup no podria, osea solo podria realizar busquedas en las subcats,... de hecho con optgroup lo tengo ahora funcionando correctamente lo que pasa es que quiero que se pueda seleccionar la cat para realizar una búsqueda mas amplia

He probado realmente con todo lo que se isset, empty if, aunque no me gusta probé a manejar 2 formularios en capas con un onClick diferente en cada option pero onlick no chuta en ie


... en fin sigo con el temita y gracias

Solucionado... !

Me diste la idea con explode


Le añado delante del valor catid|o| o bien subcatid|o| ,... despues he metido un pagina intermedia que procesa este variable con explode y defino la url final


Formulario:

Código PHP:
<form name="formulario2" action="procesa_search.php" method="get" onSubmit='return validar2(this)'>

<strong><?php echo $lang['SEARCH_TITLE']; ?></strong><br>

<input type="hidden" name="cityid" value="<?php echo $xcityid?>">
<input type="hidden" name="lang" value="<?php echo $xlang?>">
<input name="search" type="text" value="<?php echo $_GET['search']; ?>" size="37" maxlength="50">


<select name="nombre">
<option value="catid|o|0" <?php if(!$_GET['subcatid'] or !$_GET['catid']) echo "selected"?>><?php echo $lang['ALL_CATEGORIES']; ?></option>
<?php

$sql 
"SELECT catid, catname
        FROM $t_cats
        ORDER BY catname"
;
$res mysql_query($sql);

while (
$row=mysql_fetch_array($res))
{

            echo 
"<option value=\"catid|o|$row[catid]\"";
            
            if (
$_GET['catid'] == $row['catid'])
            {
                echo 
" selected"
                
$cat $row['catname']; 
            }
            echo 
">$row[catname]</option>";



    
$sql "SELECT subcatid, subcatname
            FROM $t_subcats
            WHERE catid = $row[catid]
            ORDER BY subcatname"
;

    
$ress mysql_query($sql);

    if (
mysql_num_rows($ress))
    {

        while (
$s mysql_fetch_array($ress))
        {
            echo 
"<option value=\"subcatid|o|$s[subcatid]\"";
            if (
$_GET['subcatid'] == $s['subcatid'])
            {
                echo 
" selected"
                
$subcat $s['subcatname'];
            }
            echo 
">&middot; $s[subcatname]&nbsp;</option>";
        }

    }
}

?>
</select>

<input type="hidden" name="view" value="ads">

<input type="submit" value="<?php echo $lang['SEARCH']; ?>" name="Buscar">
          
          <br>
<?php echo $lang['ADS_WITH_IMAGES']; ?>: <input name="images_only" type="checkbox" value="1" <?php if ($_GET['images_only']==1){echo 'checked';}?>>
&nbsp;&nbsp;
<?php echo $lang['GLOBAL_SEARCHS']; ?>: <input name="global" type="checkbox" value="yes" <?php if ($_GET['global']=="yes"){echo 'checked';}?>>

</form>

Pagina procesa_search.php

Código PHP:
<?php


$cadena_nombre 
$_GET['nombre'];
$salida explode("|o|"$cadena_nombre);

$nombre $salida[0];
$valor $salida[1];

if (
$_GET['images_only']==1){
header("Location: http://www.MIURL.com/?cityid=$xcityid&search=$_GET[search]&$nombre=$valor&view=ads&Buscar=Buscar&images_only=1");
}

if (
$_GET['global']=="yes"){
header("Location: http://www.MIURL.com/?cityid=$xcityid&search=$_GET[search]&$nombre=$valor&view=ads&Buscar=Buscar&global=yes");

}

if (
$_GET['images_only']==&& $_GET['global']=="yes"){
header("Location: http://www.MIURL.com/?cityid=$xcityid&search=$_GET[search]&$nombre=$valor&view=ads&Buscar=Buscar&images_only=1&global=yes");

}

if (!
$_GET['images_only'] && !$_GET['global']){
header("Location: http://www.MIURL.com/?cityid=$xcityid&search=$_GET[search]&$nombre=$valor&view=ads&Buscar=Buscar");

}

?>

Muchas gracias punknomas

Última edición por GatorV; 22/09/2009 a las 10:00
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:46.