Foros del Web » Programando para Internet » PHP »

Dudas sobre el uso del switch

Estas en el tema de Dudas sobre el uso del switch en el foro de PHP en Foros del Web. Buenas...! Mi consulta es si se pueden definir variables y funciones antes de usar el comando switch?? el codigo funciona bien para una sola categoria ...
  #1 (permalink)  
Antiguo 20/07/2005, 09:42
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
Dudas sobre el uso del switch

Buenas...!

Mi consulta es si se pueden definir variables y funciones antes de usar el comando switch??

el codigo funciona bien para una sola categoria pero cuando uso el switch tiene problemas...

si alguien tiene alguna informacion sobre el tema le estaría muy agradecido...

saludos


este es un resumen de mi codigo

<?
include('lib_carrito.php');
$categoria = $_SESSION["ocarrito"]->tipo_categoria;

function leer ($fichero)
{
$texto = file($fichero);
$tam = sizeof($texto);
for ($n=0; $n<$tam;$n++)
{
$todo=$todo.$texto[$n];
}
return $todo;
}

include('conexion_base.php');

$nomarch="datos.rtf";
$pre=time();
$fsalida="../../tmp/".$pre.$nomarch;

switch($category) {
case asociacion: asociacion();
break;
case sociedad: sociedad();
break;
case profesional: profesional();
break;
}

function asociacion() {
"aca selecciono datos de una tabla"
}

function sociedad() {
"aca selecciono datos de una tabla"
}

function profesional() {
"aca inserto datos de una tabla"
}

?>
  #2 (permalink)  
Antiguo 20/07/2005, 10:28
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
No veo que hacas un define de asociacion, sociedad y profesional, por lo que :
switch($category) {
case asociacion: asociacion();
break;
case sociedad: sociedad();
break;
case profesional: profesional();
break;
}
No esta bien, sería:
switch($category) {
case 'asociacion': asociacion();
break;
case 'sociedad': sociedad();
break;
case 'profesional': profesional();
break;
}

En caso de que si estes poniedo estas constantes, postea el codigo entero
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 20/07/2005, 11:08
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
Gracias Nicolás por responder... mira la variable $category puede tener esos 3 valores (asociacion, sociedad y profesional) probé poniendo 'asociacion' y me pasa lo mismo...

este script de php lo que hace es seleccionar los datos en una base de datos de acuerdo a la categoria seleccionado en un formulario anterior, y reemplaza las variables en una plantilla rtf, que tengo armada (en realidad son 3, una por cada categoria)

si no uso el switch ni la funcion asociada, me genera el rtf con las variables reemplazadas (QUE ES LO QUE BUSCO!), ahora si uso el switch me abre un rtf en blanco...

este es el codigo completo

<?
include('lib_carrito.php');
$category = $_SESSION["ocarrito"]->tipo_categoria;

function leer ($fichero)
{
$texto = file($fichero);
$tam = sizeof($texto);
for ($n=0; $n<$tam;$n++)
{
$todo=$todo.$texto[$n];
}
return $todo;
}

include('conexion_base.php');

$nomarch="datos.rtf";
$pre=time();
$fsalida="../../tmp/".$pre.$nomarch;

switch($category) {
case asociacion: asociacion();
break;
case sociedad: sociedad();
break;
case profesional: profesional();
break;
}

function asociacion() {
$persona = mysql_query("SELECT nombre, apellido FROM Personas WHERE id_persona=$id_persona");
$reg = mysql_fetch_array($persona);

$cliente = mysql_query("SELECT razon_social,fecha_creacion FROM Clientes WHERE id_cliente=$id_cliente");
$reg3 = mysql_fetch_array($cliente);

$rtf=leer("RTF/".$category.".rtf");

$salida=ereg_replace("&NOMBRE;",$reg['nombre'],$salida);
$salida=ereg_replace("&APELLIDO;",$reg['apellido'],$salida);
$salida=ereg_replace("&ASOCIACION;",$reg3['razon_social'],$salida);
$salida=ereg_replace"&FECHA_CREACION;",$reg3'fecha _creacion'],$salida);

}

function sociedad() {
$persona = mysql_query("SELECT nombre, apellido FROM Personas WHERE id_persona=$id_persona");
$reg = mysql_fetch_array($persona);

$cliente = mysql_query("SELECT razon_social, ciudad FROM Clientes WHERE id_cliente=$id_cliente");
$reg3 = mysql_fetch_array($cliente);

$rtf=leer("RTF/".$category.".rtf");

$salida=ereg_replace("&NOMBRE;",$reg['nombre'],$salida);
$salida=ereg_replace("&APELLIDO;",$reg['apellido'],$salida);
$salida=ereg_replace("&RAZON_SOCIAL;",$reg3['razon_social'],$salida);
$salida=ereg_replace("&CIUDAD;",$reg3['ciudad'],$salida);
}

function profesional() {
$persona = mysql_query("SELECT nombre, apellido FROM Personas WHERE id_persona=$id_persona");
$reg = mysql_fetch_array($persona);

$cliente = mysql_query("SELECT ciudad_inscripcion, num_inscripcion FROM Clientes WHERE id_cliente=$id_cliente");
$reg3 = mysql_fetch_array($cliente);

$rtf=leer("RTF/".$category.".rtf");

$salida=ereg_replace("&NOMBRE;",$reg['nombre'],$salida);
$salida=ereg_replace("&APELLIDO;",$reg['apellido'],$salida);
$salida=ereg_replace("&CIUDAD_INSCRIPCION;",$reg3['ciudad_inscripcion'],$salida);
$salida=ereg_replace("&NUMERO_INSCRIPCION;",$reg3['num_inscripcion'],$salida);

}

$punt=fopen($fsalida,"w");
fputs($punt,$salida);
fclose($punt);

$tagsalida="<a href='$fsalida'>Descargar rtf</a>";
echo "<p>$tagsalida</p>";

?>
  #4 (permalink)  
Antiguo 20/07/2005, 12:22
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Te aconsejo dos cosas. Una es leer un poco sobre el uso de cosas, como por ejemplo contantes (que es lo que te respondi antes...estas comparando en el case con una constante, eso no esta bien por lo que mostras).
La otra es sobre como usar una funcion, estas usando valores como $id_persona sin estar declarados, y no tenes un return o no lo veo....
El problema no esta en el switch, sino en muchas cosas, como las que te nombre arriba.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 20/07/2005, 12:57
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
las variables me llegan todas, tanto id_persona como id_cliente, en cuanto a funcionamiento creo haber aclarado que funciona perfectamente sin usar el switch, es decir si hago el codigo que esta mas abajo, eligiendo la categoria "asociacion" en un formulario anterior, me funca.

Aparte la estructura del switch la tengo armada en otra página de la misma manera, pero sin tener datos antes del switch y también funciona correctamente...

si alguien tiene alguna idea de que puede estar pasando se lo agradecería mucho...!

codigo sin el switch, eligiendo categoria asociacion previamente...

<?
include('lib_carrito.php');
$category = $_SESSION["ocarrito"]->tipo_categoria;

function leer ($fichero)
{
$texto = file($fichero);
$tam = sizeof($texto);
for ($n=0; $n<$tam;$n++)
{
$todo=$todo.$texto[$n];
}
return $todo;
}

include('conexion_base.php');

$nomarch="datos.rtf";
$pre=time();
$fsalida="../../tmp/".$pre.$nomarch;

# funcion asociacion
$persona = mysql_query("SELECT nombre, apellido FROM Personas WHERE id_persona=$id_persona");
$reg = mysql_fetch_array($persona);

$cliente = mysql_query("SELECT razon_social,fecha_creacion FROM Clientes WHERE id_cliente=$id_cliente");
$reg3 = mysql_fetch_array($cliente);

$rtf=leer("RTF/".$category.".rtf");

$salida=ereg_replace("&NOMBRE;",$reg['nombre'],$salida);
$salida=ereg_replace("&APELLIDO;",$reg['apellido'],$salida);
$salida=ereg_replace("&ASOCIACION;",$reg3['razon_social'],$salida);
$salida=ereg_replace("&FECHA_CREACION;",$reg3['fecha_creacion'],$salida);
$punt=fopen($fsalida,"w");
fputs($punt,$salida);
fclose($punt);

$tagsalida="<a href='$fsalida'>Descargar rtf</a>";
echo "<p>$tagsalida</p>";

?>
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 15:31.