Foros del Web » Programando para Internet » PHP »

javascript dentro de un echo php

Estas en el tema de javascript dentro de un echo php en el foro de PHP en Foros del Web. Hola querida comunidad, lo veo mas orientado a php que javascript puesto que estoy preguntando por echo y no por el script de javascript, ya ...
  #1 (permalink)  
Antiguo 09/12/2008, 06:54
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
javascript dentro de un echo php

Hola querida comunidad, lo veo mas orientado a php que javascript puesto que estoy preguntando por echo y no por el script de javascript, ya que este me funciona, pero no al introducirlo dentro del hecho, de ahí que haya posteado en este foro.

Tengo lo siguiente:

Código PHP:
<script language=javascript
function 
cambiar(esto)
{
    
vista=document.getElementById(esto).style.display;
    if (
vista=='none')
        
vista='block';
    else
        
vista='none';

    
document.getElementById(esto).style.display vista;
}

</script>
...
while($row=mysql_fetch_array($result))
{
echo '
<a href="#" onclick="cambiar('.$row[fecha].'); return false;">'.$row[fecha].'</a>
<div id="'.$row[fecha].'" style="display: none;">
Capa1</div>
';

La cuestión es que me funciona, me muestra los enlaces con las fechas, pero al pulsar sobre ellos no me ejecuta el javascript, tengo varios posibles errores pensados que no se como resolverlos, ya que me dan error si es que son así:

1. La función javascript hay que meterla dentro del hecho (me da el error de ' ' en vista 'none'.
2. No he puesto bien por algún lado el row[fecha].


Saludos y gracias por sus respuestas.
  #2 (permalink)  
Antiguo 09/12/2008, 07:01
Avatar de nicomed  
Fecha de Ingreso: mayo-2008
Ubicación: Uruguay
Mensajes: 158
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: javascript dentro de un echo php

Preuba asi echo "codigo JS"; usa comillas dobles, puede ser eso.

saludos
  #3 (permalink)  
Antiguo 09/12/2008, 07:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: javascript dentro de un echo php

Reemplaza:

Código HTML:
<script language=javascript> 
Por:
Código HTML:
<script type="text/javascript"> 
Y no uses $row[fecha], usa: $row['fecha']
  #4 (permalink)  
Antiguo 09/12/2008, 07:09
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
Respuesta: javascript dentro de un echo php

Gracias a ambos, respecto a nicomed, lo de comillas dobles... no funciona, puesto que hay código php donde esta la capa1 y da error.

Respecto a Ronruby lo he probado y no funciona :S


Aun así gracias por sus aportes. Si alguien sabe algo mas estaría agradecido :)


Edito... supongo que el error esta en la capa y no en el script, puesto que la fecha me enlaza a midireccion# que es lo que tiene que hacer, pero no se me muestra la capa.
  #5 (permalink)  
Antiguo 09/12/2008, 07:11
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 17 años, 5 meses
Puntos: 59
Respuesta: javascript dentro de un echo php

Hola karlic0s, mira esta forma de hacerlo, seguro te va a ser muy útil y no te enredas con comillas dobles o simples.

Si alguién sabe el nombre de esa forma de hacerlo que lo postee, yo lo se hacer pero no como se llama.

Código PHP:
<?php while($row=mysql_fetch_array($result)): ?>

<a href="#" onclick="cambiar(<?php $row[fecha?>); return false;"><?php $row[fecha?></a>
<div id=" <?php $row[fecha?>" style="display: none;">
Capa1</div>

<?php endwhile; ?>
Así mezclas lo menos posible el PHP y el HTML, y el código queda mucho mas legible.

Aclaro: No se si funciona o no el Js, solo te muestro la forma de escribir el código de manera legible y libre de confusiones, de Js no se mucho...

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #6 (permalink)  
Antiguo 09/12/2008, 07:12
Avatar de nicomed  
Fecha de Ingreso: mayo-2008
Ubicación: Uruguay
Mensajes: 158
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: javascript dentro de un echo php

Como te dice lucasan debes hacerlo.

Saludos
  #7 (permalink)  
Antiguo 09/12/2008, 07:22
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
Respuesta: javascript dentro de un echo php

Gracias por sus aportes...

while($row=mysql_fetch_array($result))
{
echo '
<a href="#" onclick="cambiar(<?php $row[fecha] ?>); return false;"><?php $row[fecha] ?></a>
<div id=" <?php $row[fecha] ?>" style="display: none;">
Capa1</div>

<?php endwhile; ?>
';

Así no da error, pero ni si quiera me salen las fechas para enlazarlas, antes, me salian las fechas para enlazarlas, pero no me mostraba la capa.

Saludos y gracias.
  #8 (permalink)  
Antiguo 09/12/2008, 08:16
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
Respuesta: javascript dentro de un echo php

He encontrado el problema, pero ahora falta la solución...

Es importante que todo esto ha de estar dentro del echo ' ';

Así es como ha de ser:
Código PHP:
<a href="#" onclick="cambiar('esto'); return false;">Link</a>
<
div id="esto" style="display: none;">capa1</div
Así es como lo he hecho:
Código PHP:
<a href="#" onclick="cambiar('.$row[fecha].'); return false;">'.$row[fecha].'</a>
<
div id="'.$row[fecha].'" style="display: none;"
Y así es como se compila:

Código PHP:
<a href="#" onclick="cambiar(fecha); return false;">fecha</a>
<
div id="'fecha" style="display: none;"
En <a href="#" onclick="cambiar(fecha); me faltarian las comillas simples tal que así: <a href="#" onclick="cambiar('fecha'); puesto que las comillas de '.$row[fecha].' son para mostrar la variable y no para hacer el script.
El problema es que si lo hago asi: <a href="#" onclick="cambiar(''.$row[fecha].''); lógicamente me da error por estar dentro de un echo.

Saludos
  #9 (permalink)  
Antiguo 09/12/2008, 08:42
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 17 años, 5 meses
Puntos: 59
Respuesta: javascript dentro de un echo php

Si tan siquiera hubieras intentado como te dije, no tendrías ese problema; así te evitas enredarte con comillas.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #10 (permalink)  
Antiguo 09/12/2008, 08:52
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
Respuesta: javascript dentro de un echo php

Cita:
Iniciado por lucasan Ver Mensaje
Si tan siquiera hubieras intentado como te dije, no tendrías ese problema; así te evitas enredarte con comillas.
Si lo intenté pudes mirar este permalink de dos post mas arriba http://www.forosdelweb.com/f18/javas...8/#post2697766 pero no salía ni el link de referencia de las fechas.
  #11 (permalink)  
Antiguo 09/12/2008, 08:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: javascript dentro de un echo php

Lee: http://www.forosdelweb.com/f18/como-...s-bien-588701/

Saludos.
  #12 (permalink)  
Antiguo 09/12/2008, 09:15
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
Respuesta: javascript dentro de un echo php

Ahora si, no habia leido antes ese post GatorV! me lo ha resuelto todo, para alguien que busque lo mismo...

<a href="#" onclick="cambiar(\'' . $row[fecha] . '\'); return false;">'.$row[fecha].'</a>
<div id="'.$row[fecha].'" style="display: none;">capa1</div>


Mil gracias a los demas por su preocupacion y ayuda :)
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:12.