Foros del Web » Programando para Internet » PHP »

Controlar valor de un Select

Estas en el tema de Controlar valor de un Select en el foro de PHP en Foros del Web. Que tal, tengo este select: SELECT nombre, cargo from proveedores Cómo hago para controlar que si el resultado de cargo es vacío, tome por defecto ...
  #1 (permalink)  
Antiguo 16/08/2005, 11:41
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Controlar valor de un Select

Que tal, tengo este select:

SELECT nombre, cargo from proveedores

Cómo hago para controlar que si el resultado de cargo es vacío, tome por defecto un valor como "Administrador"



Gracias de antemano
  #2 (permalink)  
Antiguo 16/08/2005, 11:55
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Prueba con esto (version: mysql 4.0.3 o superior):

select nombre, if (CHAR_LENGTH(cargo)>0,cargo,'Administrador') from proveedores;
  #3 (permalink)  
Antiguo 16/08/2005, 11:57
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
Creo que es esto lo que queres....

Código PHP:
<?php
$sql 
"SELECT nombre, cargo FROM proveedores"
$res mysql_query($sql) or die (mysql_error()); 
while(list(
$nombre,$cargo) = mysql_fetch_array($res)){ 
         if(
$cargo == ""){
                
$cargo "Administrador";
         }
}
?>
Bueno, espero que sea eso lo que quieres ... saludos...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #4 (permalink)  
Antiguo 16/08/2005, 12:05
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Cita:
Iniciado por claudiovega
Prueba con esto (version: mysql 4.0.3 o superior):

select nombre, if (CHAR_LENGTH(cargo)>0,cargo,'Administrador') from proveedores;

Gracias pero no me funciona.

Otra forma ??? combinando con php ha de ser...
  #5 (permalink)  
Antiguo 16/08/2005, 12:15
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
De verdad Gracias....................mejor dejo de preguntar en Genérico y les muestro el codigo:

Código PHP:
$sql "SELECT representative, job_position, provider_name from proveedores";

$equivalencias[0][0]="#*nombre*#";
$equivalencias[0][1]="representative";
$equivalencias[1][0]="#*encabezado*#";
$equivalencias[1][1]="job_position";
$equivalencias[2][0]="#*hospital*#";
$equivalencias[2][1]="provider_name"
Lo que necesito controlar es que si representative está vacío, el valor de lo que recoge el arreglo $equivalencias[0][1]="representative"; sea un valor por defecto, por ejemplo Administrador


Gracias de nuevo.
  #6 (permalink)  
Antiguo 16/08/2005, 12:18
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading............


puedes usar la funcion empty($cadena) te devolverà un valor boleano de VERDAD O FALSEDAD al igual que la funcion $cadena==null ... implementarlo como tu script lo requiera.



connection closed.
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 16/08/2005, 12:52
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
A mi me funciona perfecto el codigo que te indiqué mas arriba, probaste asi:

select if (CHAR_LENGTH(representative)>0,representative,'Adm inistrador'), job_position, provider_name from proveedores;
  #8 (permalink)  
Antiguo 17/08/2005, 09:50
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Gracias Claudio, Me sale este error en la Línea 32:

Undefined property: representative in c:\easyphp1-8\www\rtf\plantilla.php on line 32

En realidad es un Notice: El script funciona, pero no muestra el Mensaje (Ese espacio sale vacío)


Código PHP:
 
mysql_select_db
("base_de_datos");
$result =mysql_query($sql); 
While(
$row=mysql_fetch_object($result)){
     
$despues=$cuerpo;
     foreach (
$matequivalencias as $dato) {
$datosql=$row->$dato[1]; //ESTA ES LA LINEA 32 DONDE RECORRE EL ARREGLO (CREO)
$datosqlstripslashes ($datosql);
$datortf=$dato[0];
$despues=str_replace($datortf,$datosql,$despues);
    }
    
fputs($punt,$despues);
     
$saltopag="\par \page \par";
    
fputs($punt,$saltopag);
}
fputs($punt,"}");
fclose ($punt);
return 
$fsalida;
}
$plantilla "carta1.rtf";
$sql "select if (CHAR_LENGTH(representative)>0,representative,'Administrador'), job_position, provider_name from proveedores where ID ='2'";
$equivalencias[0][0]="#*nombre*#";
$equivalencias[0][1]="representative";
$equivalencias[1][0]="#*encabezado*#";
$equivalencias[1][1]="job_position";
$equivalencias[2][0]="#*hospital*#";
$equivalencias[2][1]="provider_name"
$salida rtf($sql$plantilla"carta.rtf"$equivalencias);
$salida ="<A href='$salida'>Obtener RTF</a>";
echo 
"<p>$salida</p>";
?> 

Última edición por DUDO_DE_ADRIANA; 17/08/2005 a las 16:38
  #9 (permalink)  
Antiguo 17/08/2005, 16:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Acabo de intentar con el epty y tampoco, será por lo que se están asignando los valores a un arreglo.
  #10 (permalink)  
Antiguo 17/08/2005, 16:50
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Prueba esto:

$sql = "select if (CHAR_LENGTH(representative)>0,representative,'Adm inistrador') as representative, job_position, provider_name from proveedores where ID ='2'";

Creo que el problema es que queda el campo con un nombre raro, un alias, en el lugar del que necesitas, que es representative, por eso digo que el alias sea representative.
  #11 (permalink)  
Antiguo 17/08/2005, 16:55
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
De verdad que no se nada !!!!!!!!!!!!!!!!!!!!!!

Eso era !!!!!!!!!

Gracias Claudio.
  #12 (permalink)  
Antiguo 17/08/2005, 16:56
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Otra pero de pura Curiosidad..........En Mysql se puede pedir la fecha en un Select y "Pasarla" como con estos datos ???
  #13 (permalink)  
Antiguo 18/08/2005, 09:24
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Te refieres a la fecha actual? sería: select now() as fecha from tabla;
  #14 (permalink)  
Antiguo 18/08/2005, 14:38
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola Muchas gracias, funciona a la perfección, con

now() la fecha sale: 2005-08-18 15:32:53

Con curdate(): 2005-08-18

Y como la necesito:

MM-DD-YYYY

Pero no logro como sacarla así, estaba reviusando este link:

http://dev.mysql.com/doc/mysql/en/da...functions.html

Alguna Idea ?
  #15 (permalink)  
Antiguo 18/08/2005, 14:55
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
usar la funciones month(), year(), day()

select (month(curdate()) & '- '& day(curdate()) & '- '& year(curdate())) as mifecha from tabla;

Aunque creo que hay un getdate que se puede "personalizar".
  #16 (permalink)  
Antiguo 18/08/2005, 16:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Los datos para campos DATE forzosamente deben de ser YYYY-MM-DD y así tiene que ser para poder ocupar las funciones SQL para el manejo de fechas (el enlace que dejas) es por mucho recomendable usar este formato.

Si tu problema solo es a la hora de mostrar la fecha (cosa que no entendí) haz uso de la función DATE_FORMAT(), cuyo uso viene especificado en el mismo enlace que dejas.

Ejemplo:
Código:
SELECT DATE_FORMAT(campo_date, "%m-%d-%Y") AS mifecha FROM tabla
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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.
Respuesta




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