Foros del Web » Programando para Internet » PHP »

Constantes guardadas en mysql

Estas en el tema de Constantes guardadas en mysql en el foro de PHP en Foros del Web. Hola a Todos! Tengo un problemilla con el output de unas constantes: La constantes esyan definidas en un .php de este modo: Código PHP: <?php  ...
  #1 (permalink)  
Antiguo 20/06/2005, 11:38
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Constantes guardadas en mysql

Hola a Todos!

Tengo un problemilla con el output de unas constantes:

La constantes esyan definidas en un .php de este modo:

Código PHP:
<?php 
define
('_L','Lunes'); 
define('_M','Martes'); 
define('_X','Miércoles'); 
define('_J','Jueves'); 
define('_V','Viernes'); 
define('_S','Sábado'); 
define('_D','domingo'); 
?>
y lo que quero hacer es almacenar en la base de datos valores del tipo "_L", "_M" y así sucesivamente para que cuando muestre el contenido de la tabla se vea "Lunes", "Martes" etc.

También si es posible tendría que poder almacenar 2 valores en una misma casilla (del tipo "_L / _M") y que el output fuera "Lunes / Martes".

Estoy volviéndome loco con esto, quizás no pueda hacerse de este modo, en tal caso, agradecería vuestras sugerencias.

Un Saludo!
  #2 (permalink)  
Antiguo 20/06/2005, 16:55
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Alguna idea??
  #3 (permalink)  
Antiguo 21/06/2005, 01:16
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
buenas q tal... mira te digo la verdad no entiendo por es este pedido, pero tengo 2 ideas de como arreglar tu problema... la primera es en vez de usar constantes definas lo mismo pero con variables aca tenes un ejemplo...
Código PHP:
<?php

$_L 
'Lunes';
$_M 'Martes';
$_X 'Miércoles';
$_J 'Jueves';
$_V 'Viernes';
$_S 'Sábado';
$_D 'Domingo';

$dias "_L";
$day "_D";

echo $
$dias."<br>".$$day;

?>
anteponiendole dos $$ a una variable llama a otra variable llamada como el contenido de la variable (espero q se entienda ) esto yo lo conozco Variables de Variables, no estoy seguro si le llaman asi pero asi lo conozco yo...
bueno la segunda solucion puede ser remplazando string devuelto por mysql, por ejemplo con ereg_replace() aqui te dejo un ejemplo...
Código PHP:
<?php

define
('_L','Lunes');
define('_M','Martes');
define('_X','Miércoles');
define('_J','Jueves');
define('_V','Viernes');
define('_S','Sábado');
define('_D','domingo');

$dias "_L";
$day "_S";

echo 
ereg_replace("_L",_L,$dias)."<br>";

echo 
ereg_replace("_S",_S,$day)."<br>";

?>
este tiene una desventaja muy grande q es que cada resultado devuelto por mysql tendria que ser pasado por 7 remplazos para avarcar todos los dias, lo cual es inesesariamente complicado para lograr lo que tu quieres.... espero q te alla ayudado en algo esto, o por lo menos que te allas enfocado en el camino correcto... saludos
  #4 (permalink)  
Antiguo 21/06/2005, 02:51
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por sintesk7
lo que quero hacer es almacenar en la base de datos valores del tipo "_L", "_M" y así sucesivamente para que cuando muestre el contenido de la tabla se vea "Lunes", "Martes" etc.
Pero qué problemas tienes???... Debería ser algo como:
Código PHP:
$query"INSERT INTO tabla VALUES('"._L." / "._D."')"
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 21/06/2005, 10:18
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
jam1138 creo que la idea de el, era guardalos de la forma corta y cuando MySql le devuelve el resultado corto se conviertan de la forma larga, porq sino como tu dices "¿Cual es el problema?"...
  #6 (permalink)  
Antiguo 21/06/2005, 13:06
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Muchas gracias!

Ya lo tengo medio encaminado
  #7 (permalink)  
Antiguo 21/06/2005, 23:50
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por DarioDario
jam1138 creo que la idea de el, era guardalos de la forma corta y cuando MySql le devuelve el resultado corto se conviertan de la forma larga
Pués releyendo.. creo que tienes razón... , tendría más sentido...

Pués lo dicho... remplazar parte de la cadena... . Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 22/06/2005, 04:39
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Hola a todos,

he intententado poner a punto la cuetión que tenía, pero me encuentro con un problemilla.

este es el código:

Código PHP:
<?php require_once('../../Connections/portalma.php'); ?>
<?php
$maxRows_Recordset1 
10;
$pageNum_Recordset1 0;
if (isset(
$_GET['pageNum_Recordset1'])) {
  
$pageNum_Recordset1 $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;

mysql_select_db($database_portalma$portalma);
$query_Recordset1 "SELECT * FROM pueblos";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$portalma) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);

if (isset(
$_GET['totalRows_Recordset1'])) {
  
$totalRows_Recordset1 $_GET['totalRows_Recordset1'];
} else {
  
$all_Recordset1 mysql_query($query_Recordset1);
  
$totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>



<?php 

$_L 
'Lunes'
$_M 'Martes'
$_X 'Miércoles'
$_J 'Jueves'
$_V 'Viernes'
$_S 'Sábado'
$_D 'Domingo'




$dias $row_Recordset1['mercados']; 



?>




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php do { ?>
<table width="200" border="0">
  <tr>
    <td><?php echo $row_Recordset1['titulo']; ?></td>
    <td><?php echo $$dias?></td>
  </tr>
</table>
<?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>
lo que pasa es que en la columna donde me debería mostrar el correspondiente día de la semana, solo me sale repetido el primer valor de la tabla (sábado).

Estoy convencido de que el error está en:

Código PHP:
$dias $row_Recordset1['mercados']; 
ya que creo que debería asignar el valor de $dias a modo de bucle, pero no sé como hacerlo.

Una ayudita, please

Muchas gracias,
Un Saludo
  #9 (permalink)  
Antiguo 22/06/2005, 07:35
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
es posible asignarlo de sete modo?
  #10 (permalink)  
Antiguo 22/06/2005, 08:05
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Buenas, creo que el problema viene porq tu a $dias le asignas solo un valor (osea un solo dia) y cuando entra al bucle para mostrar los datos dias contiene un solo un dia tendria que sacar esta linea
Código PHP:
$dias $row_Recordset1['mercados']; 
y dentro del bucle tendrias que remplazar $$dias por
Código PHP:
<?php echo ${$row_Recordset['mercados']}; ?>
aqui te pongo la correcion ya echa del codigo, no estoy seguro sobre esto porque no tengo como comprobarlo pero a simple vista creo que este era el error...
Código PHP:
<?php require_once('../../Connections/portalma.php'); ?> 
<?php 
$maxRows_Recordset1 
10
$pageNum_Recordset1 0
if (isset(
$_GET['pageNum_Recordset1'])) { 
  
$pageNum_Recordset1 $_GET['pageNum_Recordset1']; 

$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1

mysql_select_db($database_portalma$portalma); 
$query_Recordset1 "SELECT * FROM pueblos"
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1); 
$Recordset1 mysql_query($query_limit_Recordset1$portalma) or die(mysql_error()); 
$row_Recordset1 mysql_fetch_assoc($Recordset1); 

if (isset(
$_GET['totalRows_Recordset1'])) { 
  
$totalRows_Recordset1 $_GET['totalRows_Recordset1']; 
} else { 
  
$all_Recordset1 mysql_query($query_Recordset1); 
  
$totalRows_Recordset1 mysql_num_rows($all_Recordset1); 

$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1
?> 



<?php 

$_L 
'Lunes'
$_M 'Martes'
$_X 'Miércoles'
$_J 'Jueves'
$_V 'Viernes'
$_S 'Sábado'
$_D 'Domingo'

?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title>Documento sin t&iacute;tulo</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<?php do { ?> 
<table width="200" border="0"> 
  <tr> 
    <td><?php echo $row_Recordset1['titulo']; ?></td> 
    <td><?php echo ${$row_Recordset1['mercados']}; ?></td> 
  </tr> 
</table> 
<?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?> 
</body> 
</html> 
<?php 
mysql_free_result
($Recordset1); 
?>
Bueno, creo que este era el error... cualquier duda avisa y si funciona tambien avisa asi este thread sirve a los demas.... saludos
  #11 (permalink)  
Antiguo 23/06/2005, 18:16
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
hola!

De este modo me funciona correctamente siempre y cuando solo coloque un "dia" en la casilla de la base de datos.

Es decir, si coloco _S el output es "sábado".

Pero, ¿hay alguna manera de que pueda colocar 2 valores en la casilla?

es decir, colocar _L _M y que la respuesta fuese "Lunes Martes"

Un Saludo, y gracias
  #12 (permalink)  
Antiguo 23/06/2005, 20:30
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
Bueno para cuando tenes 2 constantes juntas esa forma no sirve, la unica que te queda es una función para poder lograrlo. Aqui te dejo el script con la función ya realizada. El unico detalle que falta es que cuando las constantes estan guardadas sin ninguna separación el script te devolvera algo asi "LunesJueVes", este es un problema que dejare a tu imaginación. Por lo pronto aqui te dejo el script con la funcion (supestamente) ya funcionando...
Código PHP:
<?php require_once('../../Connections/portalma.php'); ?>
<?php
$maxRows_Recordset1 
10;
$pageNum_Recordset1 0;
if (isset(
$_GET['pageNum_Recordset1'])) {
  
$pageNum_Recordset1 $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;

mysql_select_db($database_portalma$portalma);
$query_Recordset1 "SELECT * FROM pueblos";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$portalma) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);

if (isset(
$_GET['totalRows_Recordset1'])) {
  
$totalRows_Recordset1 $_GET['totalRows_Recordset1'];
} else {
  
$all_Recordset1 mysql_query($query_Recordset1);
  
$totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;

/* Funcion para remplasar las constantes guardadas
   -----------------------------------------------
   Defino 2 arrays para la funcion
*/

$_dias_small = array ("_L","_M","_X","_J","_V","_S","_D");
$_dias_long = array ("Lunes","Martes","Miercoles","Jueves","Viernes","Sabado","Domingo");

function 
dias(&$remplasar)
{
        global 
$_dias_small$_dias_long;

        for(
$i 0$i count($_dias_small); $i++)
        {
                
$remplasar ereg_replace($_dias_small[$i],$_dias_long[$i],$remplasar);
        }

        return 
$remplasar;
}

/*----------  FIN FUNCION DIAS  --------------------*/

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php do { ?>
<table width="200" border="0">
  <tr>
    <td><?php echo $row_Recordset1['titulo']; ?></td>
    <td><?php echo dias{$row_Recordset1['mercados']}; ?></td>
  </tr>
</table>
<?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>
Saludos espero que te sirva...
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 03:07.