Foros del Web » Programando para Internet » PHP »

consulta de aplicación de un if.

Estas en el tema de consulta de aplicación de un if. en el foro de PHP en Foros del Web. buenas compañeros, este código es para que me ponga un "." en vez de comas al final del listado, pero no consigo hacerlo, a ver ...
  #1 (permalink)  
Antiguo 15/03/2007, 08:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
consulta de aplicación de un if.

buenas compañeros, este código es para que me ponga un "." en vez de comas al final del listado, pero no consigo hacerlo, a ver si me podeis hechar un cable.
nota: no pongo la consulta porque no creo que sea necesaria. y me funciona todo bien, menos imprimir el punto.

va:

creo el bucle para que me recorra los resultados.
Código PHP:
$result2=mysql_query($sSQL2);
while (
$row=mysql_fetch_array($result2)) 
le digo que me imprima el resultado
Código PHP:
{echo $row['descriptor']; 
aquí va el if, mi intención era decilre:
si la variable es diferente de nada imprime una ","
Código PHP:
if($row['descriptor']!='')
         {echo 
",";} 
y por último, sino imprime un "."
Código PHP:
else {echo ".";}


pero en vez de imprimirme el punto me imprime una coma.

el código completo es:

Código PHP:
while ($row=mysql_fetch_array($result2))
{echo 
$row['descriptor'];
    if(
$row['descriptor']!='')
         {echo 
",";}    
    else {echo 
".";}
}
echo 
"</td></tr></table><br><hr>";}
?> 

gracias

oskar calvo.
  #2 (permalink)  
Antiguo 15/03/2007, 09:13
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Re: consulta de aplicación de un if.

creo que podria ser asi..

Código PHP:
while ($row=mysql_fetch_array($result2)) 
{echo 
$row['descriptor']; 
$variable=$row['descriptor'];
if (isset(
$variable)){
         {echo 
".";}     
    else {echo 
",";} 

echo 
"</td></tr></table><br><hr>";} 
__________________
sEIK! -Chile-
Analista Programador.
  #3 (permalink)  
Antiguo 15/03/2007, 09:36
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Gracias seik!, pero no funciona, me dice que me sobra una llave, y cuando la quito me imprime ahora puntos.

te comento, la variable la saco de una consulta de una bbdd.

ponto todo por si acaso es importante.

Código PHP:
$sSQL="SELECT principal.id_plantilla, principal.titulo, localizacion.hijo, principal.fecha_inicio, principal.fecha_fin, principal.descripcion FROM principal, localizacion WHERE principal.id_localizacion = localizacion.id_localizacion order by principal.id_plantilla";
$result=mysql_query($sSQL);
while (
$row=mysql_fetch_array($result)){
echo 
"<table border=2> <tr><td>";
echo 
$row['id_plantilla'];
echo 
"</td><td><td></td><td></td></tr>";
echo 
"<tr><td>titulo</td><td>";
echo 
$row['titulo'];
echo 
"</td><td>localización:</td><td>";
echo 
$row['hijo'];
echo 
"</td></tr><tr><td>fecha de inicio</td><td>";
echo 
$row['fecha_inicio']; 
echo 
"</td><td>Fecha fin:</td><td>";
echo 
$row['fecha_fin'];
echo 
"</tr><tr><td>Descripcion:</td><td>";
echo 
$row['descripcion'];
$dato=$row['id_plantilla'];
echo 
"</td></tr><tr><td>Descriptores:</td><td>";
$sSQL2="SELECT descriptor.descriptor FROM descriptor, tabla_puente_descriptor, principal WHERE principal.id_plantilla = tabla_puente_descriptor.id_plantilla AND descriptor.id_descrip = tabla_puente_descriptor.id_descrip  and principal.id_plantilla like '$dato' order by principal.id_plantilla";
$result2=mysql_query($sSQL2);
while (
$row=mysql_fetch_array($result2)) 
{echo 
$row['descriptor']; 
$variable=$row['descriptor'];
if (isset(
$variable)){
         echo 
".";}     
    else {echo 
",";} 

echo 
"</td></tr></table><br><hr>";} 

Un saludo y gracias, a ver si lo sacamos, porque la verdad es que es una tontería.

oskar
  #4 (permalink)  
Antiguo 15/03/2007, 09:39
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Re: consulta de aplicación de un if.

prueba esto
Código PHP:
while ($row=mysql_fetch_array($result2))  
{echo 
$row['descriptor'];  
$variable=$row['descriptor']; 
if (isset(
$variable))   //le sake una llave k sobraba 
         
{echo ".";}      
    else {echo 
",";}  
}  
echo 
"</td></tr></table><br><hr>";} 
__________________
sEIK! -Chile-
Analista Programador.
  #5 (permalink)  
Antiguo 15/03/2007, 09:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

buenas Seik, sigue imprimiendome "." y no la "," no se que puede estar mal.

yo estoy mirnado en el manual de php y no entiendo porque la solucción de isset no funiona, ni la mia, que al final de cuentas hacen lo mismo.

tu le preguntas si la variable tiene algo. y yo le digo que me mire si hay algo dentro de la variable.

a ver si alguien más del foro nos puede ayudar.

un saludo

oskar calvo
  #6 (permalink)  
Antiguo 15/03/2007, 09:51
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
De acuerdo Re: consulta de aplicación de un if.

pero cambia el punto por la coma... tal vez esta mal el orden pero esta evaluando la condicon k le dimos...
creo :D

intentalo y veamos k pasa...
__________________
sEIK! -Chile-
Analista Programador.
  #7 (permalink)  
Antiguo 15/03/2007, 09:54
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

por que mejor antes de imprimir con ECHO no almacenas en una varible, reeplazas el ultimo caracter por "." y lo imprimes.
  #8 (permalink)  
Antiguo 15/03/2007, 09:55
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

lo he hecho, y cuando pongo la coma donde el punto y el punto donde la coma me imprime todo puntos.

a ver recapitulemos.

sabemos que reconoce la sentencia de que si la variable esta definida imprime algo.

esto nos sale bien.

el problema es que no interpresta bien el else que dice que para el resto de casos imprima la otra opción.

y la verdad no entiendo porque ocurre esto.

un saludo y a ver si lo sacamos de una vez.

oskar
  #9 (permalink)  
Antiguo 15/03/2007, 09:59
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Pregunta Re: consulta de aplicación de un if.

imprime todo lo que trae tu consulta y ve si existe algun dato k no este definido... talvez esta haciendo bien... y efectivamente trae solo variables definidad...

y cuentas que sucedio

estas seguro k deberian salir los dos resultados?
__________________
sEIK! -Chile-
Analista Programador.
  #10 (permalink)  
Antiguo 15/03/2007, 10:00
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Cita:
Iniciado por seyacat Ver Mensaje
por que mejor antes de imprimir con ECHO no almacenas en una varible, reeplazas el ultimo caracter por "." y lo imprimes.
hola seyacat, el problema es que saco una cadena de datos, y no se como decirle que me convierta la última "," en un punto.

podrías explicarmelo por favor.

gracias

oskar
  #11 (permalink)  
Antiguo 15/03/2007, 10:00
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: consulta de aplicación de un if.

Oskar pueba esto:
Código PHP:
while ($row=mysql_fetch_array($result2)){
  
$descrip .= $row['descriptor'] . ', ';
}
echo 
substr($descrip,0,-2) . '.'

Salu2
__________________

  #12 (permalink)  
Antiguo 15/03/2007, 10:02
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Re: consulta de aplicación de un if.

haber calvo... denuevo

que kieres hacer y por que...

solo quieres remplazar un carcter de un string? explicate un poko
que sea simple por favor
__________________
sEIK! -Chile-
Analista Programador.
  #13 (permalink)  
Antiguo 15/03/2007, 10:08
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Gerson, no funciona, me recoge todas las variables, al final si efectivamente me imprime la coma.


Seik, te explico, la consulta me recupera una lista de campos de una tabla secundaria.


cuando hago la consulta en el campo descriptores quiero que me salga:

descriptor_a, descriptor_b, descriptor_c, y al final en vez de una coma que parezca un punto.

un saludo.

oskar
  #14 (permalink)  
Antiguo 15/03/2007, 10:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Cita:
Iniciado por gerson Ver Mensaje
Oskar pueba esto:
Código PHP:
while ($row=mysql_fetch_array($result2)){
  
$descrip .= $row['descriptor'] . ', ';
}
echo 
substr($descrip,0,-2) . '.'

Salu2

para que me salga algo he tenido que modificar el codigo de esta manera, porque me decía que la variable descript no estaba definida.

Código PHP:
while ($row=mysql_fetch_array($result2)){
     echo 
$row['descriptor'] . ',';
  }
  
$descrip $row['descriptor'];
echo 
substr($descrip,0,-3) . '.'
lo malo es que esto me imprime la coma, y luego el punto.

date cuenta de que no es un string lo que saco, sino que recorro una tabla, y voy sacando los resultados de la columna descrip.

un saludo

oskar
  #15 (permalink)  
Antiguo 15/03/2007, 10:14
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: consulta de aplicación de un if.

te explico porque no pone el punto.

no lo pone porque simplemente $row['descriptor'] nunca esta vacio hasta que sale del while, durante el proceso del while $row['descriptor'] siempre tiene un valor porque el while va recorreindo los registros que haya y cuando llega al end of file simplemente se sale y no llega al else, en todo caso lo que tienes que hacer no es imprimir dentro del while, mas bien, crea una variable a la cual vas concatenando y cuando salga del while le concatenas el punto y lo imprimes.

prueba con esto
Código PHP:
$desc="";
while (
$row=mysql_fetch_array($result2))
{
$desc.= $row['descriptor'].",";
}
echo 
$desc.="."
espero y te sirva

saludos

pd. ya tenias algo parecido y no lo vi y tienes razon imprime una coma y luego el punto ahora sigo pensando y a ver si funciona con algun otro bucle como el do while
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 15/03/2007 a las 10:19
  #16 (permalink)  
Antiguo 15/03/2007, 10:16
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Re: consulta de aplicación de un if.

sip, me parece lo mas certero
__________________
sEIK! -Chile-
Analista Programador.
  #17 (permalink)  
Antiguo 15/03/2007, 10:19
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: consulta de aplicación de un if.

Código PHP:
$descrip '';
while (
$row=mysql_fetch_array($result2)){
  
$descrip .= $row['descriptor'] . ', ';
}
echo 
substr($descrip,0,-2) . '.'
Entonces seria asi....
__________________

  #18 (permalink)  
Antiguo 15/03/2007, 10:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Hola eits,

tienes razón, pero en ese caso el problema que tengo es que me da el siguiente resultado.


descriptor_c,descriptor_b,descriptor_a,.

esto se debe a que la "," esta dentro del while, por lo que me sale la , y luego el punto "."


si cambio de un while a un for y hago que me recorra el bucle tendría el mismo problema?



un saludo

oskar
  #19 (permalink)  
Antiguo 15/03/2007, 10:25
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Re: consulta de aplicación de un if.

fuera del while ya que te queda siempre con , mejor en vez de esto

Código:
echo substr($descrip,0,-2) . '.';
hace esto

Código:
$descrip_filtrado=str_replace(",", ".", "$descrip");
ahi deberia remplazar la ultima , por un .


Saludos,
__________________
sEIK! -Chile-
Analista Programador.
  #20 (permalink)  
Antiguo 15/03/2007, 10:27
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: consulta de aplicación de un if.

lo que se me ocurre por ahora para evitar la coma al final seria esto:
Código PHP:
$desc="";
while (
$row=mysql_fetch_array($result2))
{
$desc.= $row['descriptor'].",";
}
$desc=$substr($desc,0,strlen($desc) - 1);
echo 
$desc.="."
pero se que se puede mejorar, pero es lo mas rapido que se me ocurre
saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #21 (permalink)  
Antiguo 15/03/2007, 10:35
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Cita:
Iniciado por gerson Ver Mensaje
Código PHP:
$descrip '';
while (
$row=mysql_fetch_array($result2)){
  
$descrip .= $row['descriptor'] . ', ';
}
echo 
substr($descrip,0,-2) . '.'
Entonces seria asi....

en este caso, lo que me hace es que me coge el resultado anterior y me lo suma al siguiente, de tal forma que en el último resultado tengo un conjunto de resutlaods igual a todos los impresos anteriormente.

un saludo

oskar
  #22 (permalink)  
Antiguo 15/03/2007, 10:40
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

Cita:
Iniciado por eits Ver Mensaje
lo que se me ocurre por ahora para evitar la coma al final seria esto:
Código PHP:
$desc="";
while (
$row=mysql_fetch_array($result2))
{
$desc.= $row['descriptor'].",";
}
$desc=$substr($desc,0,strlen($desc) - 1);
echo 
$desc.="."
pero se que se puede mejorar, pero es lo mas rapido que se me ocurre
saludos

esta linea me esta dando error:

Código PHP:
$desc=$substr($desc,0,strlen($desc) - 1); 
Cita:
Notice: Undefined variable: substr in c:\easyphp1-8\www\daniel\listadocorto.php on line 37

Fatal error: Call to undefined function: () in c:\easyphp1-8\www\daniel\listadocorto.php on line 37
y si meto dentro de la llave se estropea todo.

oskar
  #23 (permalink)  
Antiguo 15/03/2007, 10:40
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: consulta de aplicación de un if.

Cita:
Iniciado por oskar_calvo Ver Mensaje
Hola eits,
si cambio de un while a un for y hago que me recorra el bucle tendría el mismo problema?
no tendrías problemas, pero antes que nada el resultado del mysql tendrias que pasarlo a un arreglo y luego recuperar la longitud del arreglo para poder hacer el recorrido hasta la longitud devuelta menos uno para que puedas agregarle el punto al último registro y q no te salga la coma.

se que no soy muy bueno para explicar, y por eso espero no confundirte.

saludos.

pd. ese es mi problema por el cual no puedo dar clases
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #24 (permalink)  
Antiguo 15/03/2007, 10:42
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: consulta de aplicación de un if.

perdon es que se quedo el signo '$' y no va

es así

$desc=substr($desc,0,strlen($desc) - 1);
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #25 (permalink)  
Antiguo 16/03/2007, 03:01
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: consulta de aplicación de un if.

muchas gracias eits, ya funciona.


si pudieses explicar un poco por encima el código te lo agradecería, asi sabría mejor como va.

Un saludo

oskar
  #26 (permalink)  
Antiguo 16/03/2007, 10:41
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: consulta de aplicación de un if.

te explico rapidamente, cuando utilizas un while para construir un arreglo se ejecutará todo lo que esta dentro de este mientras no se cumpla la condicion

while ($row=mysql_fetch_array($result2)) en este caso mientras no se alcance el fin de linea(end of file), por lo tanto, cada vez que entra al while $descrip .= $row['descriptor'] siempre tendrá un valor a menos que en la tabla el campo descriptor este vacio, si embargo, tu preguntabas si estaba declarada
$variable=$row['descriptor'];
if (isset($variable))
y en este caso siempre que entra al while es verdadero, por eso te dije que en vez de imprimir en pantalla lo capturaras dentro de una variable y es asi como quedo
Código PHP:
$desc="";//se inicializa la variable para asegurarse que no tenga nada antes de comenzar
while ($row=mysql_fetch_array($result2))//mientras no sea fin de linea ejecuta el while
{
$desc.= $row['descriptor'].",";//se agrega a la variable antes declarada
}
//se elimina el ultimo caracter en este caso la "," (coma)
//strlen($desc)-1= devuelve la longitud de la cadena que se encuentra en $desc pero con un menos
//substr = extrae la cadena de $desc desde la posicion 0 (cero) hasta donde se indique strlen($desc)-1
$desc=substr($desc,0,strlen($desc) - 1);
//se imprime $desc y se le agrega el .
echo $desc.=".";
//NOTA: el "."(punto) sirve para concatenar, tambien se puede usar la ","(coma) 
espero que con esto t quede mas claro.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
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:41.