PHP - Tomar el valor completo de un listbox

 
Vista:

Tomar el valor completo de un listbox

Publicado por didi (13 intervenciones) el 08/11/2007 15:15:00
Holas!!!

Tengo el siguiente problema:

Cuando tomo los valores que están en los listbox para realizar la consulta a la base de datos sucede que, si el valor es compuesto ejemplo: un país: PUERTO RICO, sólo me está tomando la palabra PUERTO... obviamente que al buscar en la base de datos no va a encontrar ningún país llamado PUERTO. En caso contrario si elijo VENEZUELA no hay ningún problema sí me realiza la búsqueda correcta. No sé que puede estar pasando.

Mi código es este:

<?php
$link= mysql_connect ('localhost','root','');
if (!$link){
die ("Error al tratar de conectar ".mysql_error());
}
$db_sel=mysql_select_db('db_LG',$link);
if (!$db_sel){
die("No se pudo seleccionar la base de datos: ".mysql_error());
}
//Partes del Query de búsqueda se arman según las opciones seleccionadas
$sql="select ID_LEAD,CORPORATE_ID_EMPLOYEE,SLOGAN,REGISTRATION_DATE,LAST_UPDATE,CUSTOMER,EMPLOYEE,EMPLOYEE_AREA,RESPONSIBLE,RESPONSIBLE_AREA,STATUS,DETAILS,VALUE,SIO,COMMENTS,COUNTRY,LEAD_FROM from tbl_lead where ";
$sql_country="COUNTRY = '{$_POST['slc_country']}'";
$sql_customer="CUSTOMER = '{$_POST['slc_customer']}'";
$sql_employee="CORPORATE_ID_EMPLOYEE = '{$_POST['slc_employee']}'";
$sql_employee_area= "EMPLOYEE_AREA='{$_POST['slc_employee_area']}'";
$sql_responsible = "RESPONSIBLE = '{$_POST['slc_responsible']}'";
$sql_responsible_area = "RESPONSIBLE_AREA = '{$_POST['slc_responsible_area']}'";


$sql_status=@$_POST["slc_status"];
$sql_status2="";
//recorremos el array de cervezas seleccionadas. No olvidarse q la primera posición de un array es la 0
for ($i=0;$i<count($sql_status);$i++)
{
if ($sql_status[$i]!="ALL")
{
$sql_status2= $sql_status2."'".$sql_status[$i]."'".",";
}
}


if (trim(substr($sql_status2, -1))==",") {

$resta=strlen($sql_status2)-1;
$sql_status2=substr($sql_status2,0,$resta);
}

$sql_status3 = " STATUS in (".$sql_status2.")";

//Matriz con los querys
$querys[0] = $sql_country;
$querys[1] = $sql_customer;
$querys[2] = $sql_employee;
$querys[3] = $sql_employee_area;
$querys[4] = $sql_responsible;
$querys[5] = $sql_responsible_area;


//La matriz que contiene los valores para asignarlos al query
$valores[0] = $_POST['slc_country'];
$valores[1] = $_POST['slc_customer'];
$valores[2] = $_POST['slc_employee'];
$valores[3] = $_POST['slc_employee_area'];
$valores[4] = $_POST['slc_responsible'];
$valores[5] = $_POST['slc_responsible_area'];

//Se inicializan los índices
$i=0;
$j=0;

for ($i=0;$i<5;$i++){
if ($valores[$j]!="ALL") {
$sql = $sql . $querys[$i] . " AND ";
}
$j++;
}
if ($sql_status2!="") {
$sql=trim($sql).$sql_status3;
}

$sql = trim($sql) ." COUNTRY<>''";

$query_all= $sql." order by COUNTRY";
$resultado_all=mysql_query($query_all,$link);
$total_all=mysql_num_rows($resultado_all);
echo $query_all;
//exit;
?>

Por favor les agradecería muchísimo me ayudaran.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tomar el valor completo de un listbox

Publicado por Diego Romero (1450 intervenciones) el 08/11/2007 16:10:23
Reemplaza el espacio en blanco por guión bajo cuando lo imprimes en el listbox, luego en el script que recibe ese valor reemplaza el guión bajo por espacio para hacer la consulta a la base de datos.

Aunque la solución definitiva sería usar los códigos ISO de países en vez de sus nombres textuales (los códigos ISO son iguales a los dominios de primer nivel de la ICANN, para Puerto Rico es "pr"). Eso lo tendrías que haber provisto durante el diseño de la base de datos. Yo habría puesto dos campos, uno para el código ISO y otro para el nombre canónico del país: codigopais="pr", nombre="Puerto Rico", y durante las consultas filtrar por codigopais.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tomar el valor completo de un listbox

Publicado por Didi (13 intervenciones) el 08/11/2007 21:31:21
Ok Diego pero como hago ese reemplazo de espacio por guión me puedes dar un ejemplo?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tomar el valor completo de un listbox

Publicado por Diego Romero (1450 intervenciones) el 09/11/2007 01:53:10
Pues con str_replace();

$cadena = str_replace(" ","_",$cadena);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar