Foros del Web » Programando para Internet » PHP »

Problema con las comillas dentro de un echo de PHP

Estas en el tema de Problema con las comillas dentro de un echo de PHP en el foro de PHP en Foros del Web. Hola: Estoy intentando insertar el siguiente codigo en un echo de PHP: Código: <a href="#" onClick="afoto('imagen.jpg','Descripcion de la img');return false"> Lo he puesto de la ...
  #1 (permalink)  
Antiguo 14/08/2006, 11:44
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Problema con las comillas dentro de un echo de PHP

Hola:

Estoy intentando insertar el siguiente codigo en un echo de PHP:
Código:
<a href="#" onClick="afoto('imagen.jpg','Descripcion de la img');return false">
Lo he puesto de la siguiente forma en el echo:
Código PHP:
echo "<a href='#' onClick='afoto('../".$row[2]."','$row[1]');return false'>"
$row 1 y 2 son una cadena obtenida de una BBDD.

En el echo hay más codigo que he borrado porque no es necesario para solucionar este problema.

Muchas Gracias
  #2 (permalink)  
Antiguo 14/08/2006, 11:50
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Te sugiero que lo hagas de la siguiente manera como HTML combinado con php

<a href='#' onClick='afoto('../".<?$row[2]?>."',<?$row[1]?>);return false'>

me avisas si te funciona y seria bueno que postearas la funcion en javascript

Att. JavSoft
  #3 (permalink)  
Antiguo 14/08/2006, 11:51
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
perdon me falto algo el =

<a href='#' onClick='afoto('../".<?=$row[2]?>."',<?=$row[1]?>);return false'>
  #4 (permalink)  
Antiguo 14/08/2006, 11:52
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Muchas Gracias por tu contestación, aunque yo lo que buscaba exactamente era no tener que modificar el echo, ni tener que modificar mucho el codigo.
¿Sabes alguna forma de modificarlo para que funcione en el echo?

Gracias
  #5 (permalink)  
Antiguo 14/08/2006, 11:55
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
entonces simplemente quitale las comillas simples '$row[1]' dejalo asi $row[1] porque nunca se tiene que poner ' ' dentro de comillas " "
  #6 (permalink)  
Antiguo 14/08/2006, 12:05
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
lo he puesto de esta manera:

<a href='#' onClick='afoto(../".$row[2].",$row[1]);return false'>

y no funciona, supongo que será por que hay debería haber unas ".
Por cierto ¿como debería poner las ' dentro de las ""?
  #7 (permalink)  
Antiguo 14/08/2006, 12:11
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Mira las comillas "" se ponen cuando vas a poner texto... claro tambien puedes poner una variable y la reconocera, pero no es necesarioo.....
Las comillas simples '' no te reconocen las variables... osea si haces
$r="blabla";
print ' Esto es un texto $r';
la salida es :
Esto es un texto $r
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #8 (permalink)  
Antiguo 14/08/2006, 12:16
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
posteame funcion afotos() para verla
  #9 (permalink)  
Antiguo 14/08/2006, 12:25
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
afoto es un javascript:

Código:
//script por Tunait 
var ventana 
var cont=0 
var titulopordefecto = "Imagen Ampliada" //texto por defecto a mostrar en la barra de título en caso de omitir el argumento titulo 

function afoto(cual,titulo) 
{ 
if(cont==1){ventana.close();ventana=null} 
if(titulo==null){titulo=titulopordefecto} 
ventana=window.open('','ventana','resizable=yes,scrollbars=no') 
ventana.document.write('<html><head><title>' + titulo + '</title></head><body style="overflow:hidden" marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" scroll="no" onUnload="opener.cont=0"><img src="' + cual + '" onLoad="opener.redimensionar(this.width, this.height)">') 
ventana.document.close() 
cont++ 
} 
function redimensionar(ancho,alto) 
{ 
ventana.resizeTo(ancho+12,alto+50) 
ventana.moveTo((screen.width-ancho)/2,(screen.height-alto)/2) //centra la ventana. Eliminar si no se quiere centrar el popup 
}
  #10 (permalink)  
Antiguo 14/08/2006, 12:25
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
echo "<a href=# onClick='afoto('../".$row[2]."',$row[1]);return false'>";

lo que te friega es que tienes muchas comillas ' dentro del echo

te sugiero que lo hagas como te dije al principio sin usar el echo, OK

JavSoft
  #11 (permalink)  
Antiguo 14/08/2006, 12:29
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
echo "<a href='#' onClick='afoto('../".$row[2]."','$row[1]');return false'>";

si la imagen se encuentra dentro del mismo php hazlo asi:

echo "<a href=# onClick=afoto($row[2],$row[1]);return false>";

si esta en una carpeta hazlo asi:

echo "<a href=# onClick=afoto(imagenes/$row[2],$row[1]);return false>";

ha ver si te funciona cualquiera de las dos
  #12 (permalink)  
Antiguo 14/08/2006, 12:35
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
pero dejame probarlo OK

Att. JavSoft
  #13 (permalink)  
Antiguo 14/08/2006, 12:52
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
lo he puesto de la forma:

Código:
<a href=# onClick=afoto($row[2],$row[1]);return false>
y me sale el error:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
  #14 (permalink)  
Antiguo 14/08/2006, 12:55
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
pasame el .sql de la base y los ficheros que ocupas el .php etc, ....
  #15 (permalink)  
Antiguo 14/08/2006, 12:57
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
pasame el .sql y el .php que ocupas para probarlo a este correo [email protected]
  #16 (permalink)  
Antiguo 14/08/2006, 12:57
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
[email protected]
  #17 (permalink)  
Antiguo 14/08/2006, 12:59
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
el php es el siguiente:

Código PHP:
<?
//Si no hay Accion vemos el contenido de la Base de Datos
if (!isset($accion)){

    echo 
"";

}

//Si la Accion es Ampliar
elseif($accion==ampliar){

  
//Creamos la sentencia SQL y la ejecutamos
  
$result=mysql_db_query("$db","SELECT * FROM alojamientos WHERE id='$id'");
  
$row=mysql_fetch_row($result);

            switch (
$row[1]) {
            case 
1:
                   
$comarca="Arlanza";
                   break;
            case 
2:
                  
$comarca="La Bureba, Desfiladeros del Ebro, Valles de Oca y Tir&oacute;n";
                   break;
                                       default:
                   
$comarca="Comarca NO seleccionada";
          }
          
            echo
"<p align='right' class='titulos2'>$comarca</p>";

          
          switch (
$row[4]) {
            case 
1:
                   
$tipocasa="Casa Rural de Alquiler (CRA)";
                   break;
            case 
2:
                  
$tipocasa="Casa Rural de Alojamiento Compartido (CRAC)";
                   break;
            case 
3:
                   
$tipocasa="Centro de Turismo Rural (CTR)";
                   break;
            case 
4:
                   
$tipocasa="Posada (PO)";
                   break;
            default:
                   
$tipocasa="Tipo de Casa NO seleccionada";
          }
    
    if(
$columna['miniatura']==""){
      
$imagen='imagenes/alojamientos/sinimagen.gif';
    }else{
      
$imagen="../".$columna['miniatura'];
    }
    
    if(
$row[5]==""){
      
$web="";
    }
    elseif( 
substr$row[5], 0) !== "http" ) {
      
$web "http://" $row[5];
    }
    else{
      
$web=$row[5];
    }

    echo 
"<table width='480' border='0' align='center' cellpadding='0' cellspacing='0'>
            <tr>
              <td width='6' height='5'><img src='imagenes/alojamientos/sup_izq.gif' width='6' height='5' /></td>
              <td height='5' colspan='3' background='imagenes/alojamientos/sup.gif'></td>
              <td width='6' height='5'><img src='imagenes/alojamientos/sup_der.gif' width='6' height='5' /></td>
            </tr>
            <tr>
              <td width='6' rowspan='19' background='imagenes/alojamientos/izq.gif'></td>
              <td height='40' colspan='3' bgcolor='#CCCCCC'><div align='center'><span class='titulos1'>$row[2]</span><br />
                  <span class='titulos3'>($row[10] - $comarca)</span></div></td>
              <td width='6' rowspan='19' background='imagenes/alojamientos/der.gif'></td>
            </tr>
            <tr>
              <td width='180' height='120' rowspan='18' valign='top' bgcolor='#FFFFFF'><div align='center'><table width='100%' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td height='7'></td>
  </tr>
  <tr>
    <td><div align='center'>"
;
    
      
//Creamos la Galería de Imágenes
    
$resultaimg=mysql_db_query("$db","SELECT * FROM galeria WHERE idalojamiento='$id' ORDER BY id");
    while (
$img=mysql_fetch_array($resultaimg))
    {

    echo 
"<div align='center'>  <a href=# onClick=afoto($img['imagen'],$img[1]);return false>  <img src='../".$img['miniatura']."' border='1' alt='$img[1]' style='border-color:#9C301A' ></a></div>
            <table width='100%' height='10' border='0' cellpadding='0' cellspacing='0'>
              <tr>
                <td></td>
              </tr>
              <tr>
                <td class='copyright'><div align='center'><em>$img[2]</em></div></td>
              </tr>
              <tr>
                <td height='15'></td>
              </tr>
            </table>"
;
  }     
    
mysql_free_result($resultaimg);
    
    echo
"</div></td>
  </tr>
  <tr>
    <td height='7'></td>
  </tr>
</table></div></td>
              <td height='40' bgcolor='#FFFFFF' class='textos'> <img src='imagenes/alojamientos/casa.gif' alt='Tipo de Casa Rural' width='16' height='13' /> $tipocasa</td>
              <td width='5' rowspan='18' bgcolor='#FFFFFF' class='textos'>&nbsp;</td>
            </tr>
            <tr>
              <td height='25' valign='middle' bgcolor='#FFFFFF' class='textos'><strong>Plazas:</strong> $row[13]</td>
              </tr>
            <tr>
              <td height='25' valign='middle' bgcolor='#FFFFFF' class='textos'><strong>Habitanciones:</strong> $row[12]</td>
              </tr>
            <tr>
              <td height='15' valign='middle' bgcolor='#FFFFFF' class='textos'>&nbsp;</td>
              </tr>
            
            
            <tr>
              <td height='40' valign='middle' bgcolor='#FFFFFF' class='textos'><strong>Direcci&oacute;n: </strong>$row[3]</td>
              </tr>
            <tr>
              <td height='25' valign='middle' bgcolor='#FFFFFF' class='textos'><strong>Localidad:</strong> $row[10]</td>
              </tr>
            <tr>
              <td height='15' valign='middle' bgcolor='#FFFFFF' class='textos'>&nbsp;</td>
              </tr>
            <tr>
              <td height='40' bgcolor='#FFFFFF' class='textos'><strong>Tel&eacute;fono:</strong> $row[7]</td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><strong>Fax:</strong> $row[8]</td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><a href='mailto:$row[6]' class='textos'><img src='imagenes/alojamientos/email.gif' alt='Email de Contacto' width='13' height='9' border='0' /> <strong>Email:</strong> $row[6]</a></td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><a href='$web' target='_blank' class='textos'><strong>Web: </strong>$web</a></td>
              </tr>
            <tr>
              <td height='15' bgcolor='#FFFFFF' class='textos'>&nbsp;</td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><strong>Descripci&oacute;n:</strong></td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><div align='justify'>$row[9]</a></div></td>
              </tr>
            <tr>
              <td height='15' bgcolor='#FFFFFF' class='textos'>&nbsp;</td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><strong>Tarifas:</strong></td>
              </tr>
            <tr>
              <td height='25' bgcolor='#FFFFFF' class='textos'><div align='justify'>$row[11]</a></div></td>
              </tr>
            <tr>
              <td height='5' bgcolor='#FFFFFF' class='textos'></td>
              </tr>
            
            <tr>
              <td width='6' height='5'><img src='imagenes/alojamientos/inf_izq.gif' width='6' height='5' /></td>
              <td height='5' colspan='3' background='imagenes/alojamientos/inf.gif'></td>
              <td width='6' height='5'><img src='imagenes/alojamientos/inf_der.gif' width='6' height='5' /></td>
            </tr>
          </table>"
;
}
?>
  #18 (permalink)  
Antiguo 14/08/2006, 13:01
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
pero aqui donde esta el enlace que dices
  #19 (permalink)  
Antiguo 14/08/2006, 13:02
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
el fallo esta en la opcion ampliar

Hay una BBDD con dos tablas.
Una llamada alojamiento con los campos:
id, comarca, nombre, ...

Y Otra llamada galeria, con los campos:
id, titulo, piedefoto, imagen, miniatura, idalojamiento
  #20 (permalink)  
Antiguo 14/08/2006, 13:10
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
esa variable $accion se refiere a un boton submit?

si es asi porque mejor no lo haces asi

if(!isset($_POST["aqui nombre del boton"]))
{


}else if(isset($_POST["aqui nombre del boton"]))
  #21 (permalink)  
Antiguo 14/08/2006, 13:12
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
muestrame un screeshots de tu formulario
  #22 (permalink)  
Antiguo 14/08/2006, 13:15
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
la variable acción viene de una variable de la dirección:

ejemplo
http://www.paginaweb.com/pagina.php?...=ampliar&id=58
  #23 (permalink)  
Antiguo 14/08/2006, 13:19
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
ok usas el metodo GET entonces pero que no entra al if

pero como no va a entrar al

else if($accion==ampliar)

si es asi

else if($accion == "ampliar")
  #24 (permalink)  
Antiguo 14/08/2006, 13:20
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
si es una cadena tiene que ser asi
  #25 (permalink)  
Antiguo 14/08/2006, 13:35
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
oye que paso con el codigo!!!!
  #26 (permalink)  
Antiguo 14/08/2006, 13:44
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
el entrar en el ampliar no hay problema, lo del codigo PHP lo he puesto antes.
  #27 (permalink)  
Antiguo 14/08/2006, 17:02
Avatar de jdelozar  
Fecha de Ingreso: agosto-2006
Ubicación: Madrid
Mensajes: 32
Antigüedad: 11 años, 4 meses
Puntos: 0
Desde mi punto de vista en el primer mensaje
Código PHP:
echo "<a href='#' onClick='afoto('../".$row[2]."','$row[1]');return false'>"
lo tenías correcto, aunque sería más lógico ponerlo así
Código PHP:
echo "<a href='#' onClick='afoto('../$row[2]','$row[1]');return false'>"
Me dá la impresión de que la descripción va a contener comillas simples y es lo que te causa el problema.
Prueba esto:
Código PHP:
echo "<a href='#' onClick='afoto('../$row[2]','".str_replace("'",'"',$row[1])."');return false'>"
__________________
Un saludo:
Juan
  #28 (permalink)  
Antiguo 14/08/2006, 17:36
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Todo solucionado con el siguiente codigo:

Código:
<a href='#' onClick=".'"'."afoto('".$img['imagen']."','$img[1]');return false".'"'.">
Muchas Gracias a Todos por vuestra 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 12:06.