Foros del Web » Programando para Internet » PHP »

Las comillas me vuelven loco

Estas en el tema de Las comillas me vuelven loco en el foro de PHP en Foros del Web. El error de la pagina esta en esta linea: Código PHP: <? while( $post = mysql_fetch_assoc ( $cont_post )){ echo  '<li><a href="noticia.php?id= . $post[\'titulo\'] . "> . $post[\'titulo\'] . </a></li>'  }; mysql_close ()  ?>  </ul></div> ...
  #1 (permalink)  
Antiguo 16/06/2009, 21:42
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Desacuerdo Las comillas me vuelven loco

El error de la pagina esta en esta linea:

Código PHP:
<?while($post=mysql_fetch_assoc($cont_post)){ echo '<li><a href="noticia.php?id= . $post[\'titulo\'] . "> . $post[\'titulo\'] . </a></li>' };mysql_close() ?> </ul></div>
porque ya probe con borrarlo y asi si anda la pagina, nose que es lo que esta mal, ya probe de varias formas con comillas simples dobles simplesdobles nose que hacer ya.
Estoy extremadamente nervioso, me ayudan?
  #2 (permalink)  
Antiguo 16/06/2009, 22:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

Cita:
<?while($post=mysql_fetch_assoc($cont_post)){ echo '<li><a href="noticia.php?id= . $post[\'titulo\'] . "> . $post[\'titulo\'] . </a></li>' };mysql_close() ?>
Vaya que te vuelven loco las comillas, porque abres, no cierras, concatenas, escapas, sigues concatenando etc. aunque, lo que tienes entre comillas no debe ser causante del error, el error es que tienes <?while donde deberia de ir <?php while

Arregla eso y despues sigues peleando con las comillas.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 16/06/2009, 23:22
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Las comillas me vuelven loco

las comillas simples ' ' no se escapan con \ solo las comillas dobles \"\"
como dice triby hechale una ojeada a tu codigo y a tu while

Código php:
Ver original
  1. <?php
  2. while($post=mysql_fetch_assoc($cont_post))
  3. {
  4. echo "<li><a href=\"noticia.php?id=$_POST['titulo']\"> $_POST['titulo']</a></li>";
  5. }
  6. ?>

prueba eso, ademas arregle problemas de ; que estan mal puestas y los post[] son $_POST[]
digo si vamos a copiar codigo hagamoslo bien al menos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #4 (permalink)  
Antiguo 17/06/2009, 00:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

Algunas observaciones, para que valenti77 no se confunda mas:

Las comillas simples se escapan cuando las insertas en cadenas delimitadas por comillas simples, no asi cuando estan delimitadas por comillas dobles; mismo caso (a la inversa) de las comillas dobles.

Lo ideal, cuando incluyes elementos de una matriz (principalmente asociativa) dentro de una cadena es encerrarlas entre llaves: "{$_POST['indice']}", esto ayuda a evitar muchos dolores de cabeza, como los que has tenido.

Ejemplos:
Código php:
Ver original
  1. $cad1 = 'Esta cadena esta entre comillas \'simples\' y las "dobles" no se escapan';
  2. $cad2 = "Esta cadena esta entre comillas \"dobles\" y las 'simples' no se escapan";
  3. $cad3 = 'Esta cadena concatena ' . $cad1 . ' otra cadena';
  4. $cad4 = "Entre comillas dobles, las variables $cad2 no necesitan ser concatenadas";
  5. $cad5 = "Esta cadena contiene elemento de matriz {$_POST['titulo']} sin problemas";
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 17/06/2009, 10:15
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

Gracias por su ayuda, ahora si entendi lo de las comillas, antes escapaba todas las que tenia jaja...
Acabo de arreglar todo lo que me dijeron, pero sigue dandome errores, nose que pasa, linea quedo tal cual me la arreglaron anteriormente.
  #6 (permalink)  
Antiguo 17/06/2009, 10:53
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Las comillas me vuelven loco

que error te muestra?
__________________
Quitenme la vida pero no la bebida.
  #7 (permalink)  
Antiguo 17/06/2009, 11:04
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

Ninguno, toda la pagina en blanco.

De casualidad Fui a esta pagina: http://validator.w3.org/ para ver si estaba todo bien en el html, olvidandome que tenia el bloque php, y me mostro el error 505 Internal server error

No se si influye que anteriormente en la misma pagina, tenga hecha esta consulta:

Código PHP:
<? $db=conectar();
$consultar="select id,titulo,subtitulo,contenido,autor,fecha from noticias ORDER BY id DESC";
$cont_post=mysql_query($consultar)or die("error en query:".mysql_error());
$post=mysql_fetch_assoc($cont_post)?>
<div id="principal"><div id="fecha"><span id="izq"><div class="dia">28</div></span><span id="der"></span></div>
<p><h1><? echo $post['titulo'];?></h1></p><h2><?echo $post['subtitulo'];?></h2><?echo $post['contenido'];?>
y despues si viene lo que les mostre anteriormente, sera que estoy haciendo demas el array? Es decir, esto:

$post=mysql_fetch_assoc($cont_post)


ya que lo tengo dos veces en el mismo doc, ahi, y adentro de un while.
  #8 (permalink)  
Antiguo 17/06/2009, 13:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

Veo que tienes algunos "errores recursivos", por llamarlos de alguna manera.

Sugerencias:
1- El uso de short tags es una practica que te va a causar problemas porque no todos los servidores tienen habilitada esa opcion. No uses <? sino <?php asi, completo, para evitarte mas problemas.
2- Notas algun error en la siguiente linea?
<?echo $post['subtitulo'];
3- No intentes validar codigo que no funciona, solo te hara perder tiempo, primero soluciona los errores de programacion y despues los de diseño.
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 17/06/2009, 13:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 409
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Respuesta: Las comillas me vuelven loco

Cita:
Iniciado por valenti77 Ver Mensaje
El error de la pagina esta en esta linea:

Código PHP:
<?while($post=mysql_fetch_assoc($cont_post)){ echo '<li><a href="noticia.php?id= . $post[\'titulo\'] . "> . $post[\'titulo\'] . </a></li>' };mysql_close() ?> </ul></div>
porque ya probe con borrarlo y asi si anda la pagina, nose que es lo que esta mal, ya probe de varias formas con comillas simples dobles simplesdobles nose que hacer ya.
Estoy extremadamente nervioso, me ayudan?
Mira, un consejo adicional : Apenas empieces a utilizar el CS4 te va a agradar esto, quizas lo mejor : la separacion de comillas dobles y simples es excepcionalmente buenísima !
  #10 (permalink)  
Antiguo 17/06/2009, 17:32
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

Cita:
Iniciado por Triby Ver Mensaje
Veo que tienes algunos "errores recursivos", por llamarlos de alguna manera.

Sugerencias:
1- El uso de short tags es una practica que te va a causar problemas porque no todos los servidores tienen habilitada esa opcion. No uses <? sino <?php asi, completo, para evitarte mas problemas.
2- Notas algun error en la siguiente linea?
<?echo $post['subtitulo'];
3- No intentes validar codigo que no funciona, solo te hara perder tiempo, primero soluciona los errores de programacion y despues los de diseño.
Mis respuestas:
1- Lo voy a corregir eso de los short tags.

2- en esa linea, no creo que haya errores, es decir, no es la tipica variable $_POST que se usa en php, sino que es un nombre cualquiera que yo le puse al array, nose a que otro error te referis, el espacio entre <? y echo, o el uso del short tag? o a poner el array entre llaves?

3- El codigo funciona, empezo a dejar de hacerlo cuando quise pasar variables por URL, es decir cuando el link <a></a> adentro de el elemento de la lista desordenada.

No entendi lo de errores "recursivos", no implemente eso en ningun lado, yo los llamaria errores de NOVATO jajaja

implemente todas sus sugerencias, pero nada, sigue fallando esa linea

Última edición por valenti77; 17/06/2009 a las 17:44
  #11 (permalink)  
Antiguo 17/06/2009, 17:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Las comillas me vuelven loco

jaja siendo así de todos modos falta el 'php' y cerrarlo:

Código PHP:
<?php echo $post['subtitulo']; ?>
  #12 (permalink)  
Antiguo 17/06/2009, 18:03
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

Gracias horape por tu ayuda, pero lamentablemente estaba cerrado, en esa parte no tengo problemas ya que si quito esta linea:

Código PHP:
<?php while($mat=mysql_fetch_assoc($cont_post)){ echo "<li><a href=\"noticia.php?id=$mat['titulo']\">$mat['titulo']</a></li>";}mysql_close(); ?>
Lo demas funciona perfecto, me muestra el subtitulo, etc. Tambien habia logrado que en una lista me muestre los ultimos titulos, que es lo que estoy tratando de hacer con esa linea, pero siendo solo texto, no links.

Cuando quise poner un link pasando el ID de la noticia, a otro php para que se pueda leer (porque son noticias viejas, en el index e ve solo la ultima, de ahi puedes ir hacia las ultimas 5), ahi e me complico todo.

PD: Cambie el nombre de el array ($post) por $mat, para evitar confusiones.
  #13 (permalink)  
Antiguo 17/06/2009, 23:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

A ver, el error es igual al primero que te mencione, pero ahora con otra palabra:

<?echo debe ser <?php echo, notas la falta de espacio entre <? y echo? No se suponia que cambiarias todos los <? por <?php ?

Edito:

Si todavia tienes errores, muestra el codigo actual, porque no podemos saber lo que ya cambiaste y lo que no.
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 18/06/2009, 14:10
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

Primero que nada muchas gracias por su apoyo, paso a mostrarles como quedo el codigo entero:

Código PHP:
<?php function conectar()
{
$base_de_datos "base";
$db_usuario "usuario";
$db_password "pass";

if (!(
$link mysql_connect("host"$db_usuario$db_password)))
{
echo 
"Error conectando a la base de datos.";
exit();
}
if (!
mysql_select_db($base_de_datos$link))
{
echo 
"Error seleccionando la base de datos.";
exit();
}
return 
$link;
}
$db=conectar();
$consultar="select id,titulo,subtitulo,contenido,autor,fecha from noticias ORDER BY id DESC";
$cont_post=mysql_query($consultar)or die("error en query:".mysql_error());
$mat=mysql_fetch_assoc($cont_post);
?>

<?php echo $mat['titulo']; ?></h1></p><h2><?php echo $mat['subtitulo']; ?></h2><?php echo $mat['contenido']; ?>

<div id="footer"><div id="footerizq"><ul><?php while($mat=mysql_fetch_assoc($cont_post)){ echo "<li><a href=\"noticia.php?id=$mat['titulo']\">$mat['titulo']</a></li>";}mysql_close(); ?> </ul></div>
Eso es todo lo que tengo, y lo que falla, es la ultima parte.
  #15 (permalink)  
Antiguo 18/06/2009, 14:34
 
Fecha de Ingreso: junio-2009
Ubicación: Monterrey
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Las comillas me vuelven loco

Hola, que tal

Me parece que te falta cerrar un div, intenta utilizar tabulaciones, te ayudan a localizar esos errores ^^
  #16 (permalink)  
Antiguo 18/06/2009, 18:12
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

gracias por tu apoyo, pero el div esta cerrado, porque falta la continuacion de toda la pagina, esto es solo una parte,

saludos!
  #17 (permalink)  
Antiguo 18/06/2009, 18:34
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

Cita:
Iniciado por valenti77
Eso es todo lo que tengo, y lo que falla, es la ultima parte.
Y es necesario que adivinemos la parte que falla o nos vas a decir cual es el error?
__________________
- León, Guanajuato
- GV-Foto
  #18 (permalink)  
Antiguo 18/06/2009, 21:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Las comillas me vuelven loco

Cita:
Las comillas me vuelven loco
No hay porque volverse loco, solo aprender a usarlas.

COMO: usar las comillas bien
  #19 (permalink)  
Antiguo 18/06/2009, 22:27
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
De acuerdo Respuesta: Las comillas me vuelven loco

Cita:
Iniciado por Triby Ver Mensaje
Y es necesario que adivinemos la parte que falla o nos vas a decir cual es el error?
bueno perdón, les digo solamente para que no pierdan tiempo buscando, ya que si saco esa parte, la pagina funciona de maravillas.
Saludos!
  #20 (permalink)  
Antiguo 18/06/2009, 23:06
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Las comillas me vuelven loco

:/ y quedamos iguales digo yo, si esta no es la parte completa y si la pones y falla comprueba que no hayan datos duplicados, por que asi al vistaso no le veo error al codigo, pero puede que haya claramente consultas aparte que se llamen iguales o bien algun dato que no corresponda, y como no vemos todo el codigo es dificil saber
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #21 (permalink)  
Antiguo 18/06/2009, 23:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

Cita:
Iniciado por valenti77
bueno perdón, les digo solamente para que no pierdan tiempo buscando, ya que si saco esa parte, la pagina funciona de maravillas.
Saludos!
No bueno, yo solo digo, para que no pierdas tiempo esperando una respuesta que no llegara, que si nos dices exactamente cual es el error o en que esta "fallando la ultima parte" tal vez podamos darnos una idea de la posible solucion.

P.D. Aunque pensandolo bien, si sacas esa parte y funciona de maravillas... Amigo, solo quitala y asunto arreglado!!!
__________________
- León, Guanajuato
- GV-Foto
  #22 (permalink)  
Antiguo 19/06/2009, 05:56
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Las comillas me vuelven loco

hacelo sin comillas de esta forma...

<?
//if ($Emp_cta_deudores_ante != $Emp_cta_deudores) {
?>
<tr >
<td width="16%" valign="top" style=" height:25px;"><div class="Estilo2"><?=$row[Emp_cta_deudores]?></div></td>
<td width="40%" valign="top" style=" height:25px;"><div class="Estilo2" align="left" ><?=$row[Cta_detalle]?></div></td>
<td width="5%" valign="top" style=" height:25px;"><div class="Estilo2"></div></td>
<td width="8%" valign="top" style=" height:25px;"><div class="Estilo2" align="left" ></div></td>
<td width="16%" valign="top" style=" height:25px;">
<div class="Estilo2">
<? echo number_format($subtotal_debe,2,",","."); ?>
</div>
</td>

<td width="15%" valign="top" style=" height:25px;">
<div class="Estilo2">
<? echo number_format($haber,2,",","."); ?>
</div>
</td>
</tr>
<?
//$subtotal_debe = 0;
//$subtotal_haber = 0;
//}
?>
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #23 (permalink)  
Antiguo 19/06/2009, 12:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

aldo1982, creo que no leiste todo el tema, le hemos estado recomendando a valenti77 no usar short tags <? ni <?= porque algunos servidores no tienen habilitada esa opcion y, definitivamente, no formara parte de PHP 6.

Tambien estamos tratando de explicarle la forma correcta de usar las comillas.
__________________
- León, Guanajuato
- GV-Foto
  #24 (permalink)  
Antiguo 19/06/2009, 13:00
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

gracias a todos por su colaboración, les cuento que ya di con la solución, y el código quedó asi:

Código PHP:
<?php function conectar()
{
$base_de_datos "";
$db_usuario "";
$db_password "";

if (!(
$link mysql_connect("localhost"$db_usuario$db_password)))
{
echo 
"Error conectando a la base de datos.";
exit();
}
if (!
mysql_select_db($base_de_datos$link))
{
echo 
"Error seleccionando la base de datos.";
exit();
}
return 
$link;
}
$db=conectar();
$consultar="select id,titulo,subtitulo,contenido FROM noticias ORDER BY id DESC";
$cont_post=mysql_query($consultar)or die("error en query:".mysql_error());
$mat=mysql_fetch_assoc($cont_post);

?>

<p><h1><?php echo $mat['titulo']; ?></h1></p><h2><?php echo $mat['subtitulo']; ?></h2><?php echo $mat['contenido']; ?>
<div id="footer"><div id="footerizq"><ul><?php while ($mat=mysql_fetch_assoc($cont_post) ){
?><li><a href="ver.php?id=<?php echo $mat['id']; ?>"><?php echo $mat['titulo'?></a></li><?php }; mysql_close(); ?></ul></div>
Borre todo el código y lo empezé a escribir de nuevo por partes, y asi llegué a lo que quería, creo que e lproblema estaba en imprimir el array con todo el texto en conjunto, así es válido, y funciona, gracias por su apoyo!, saludos!
  #25 (permalink)  
Antiguo 19/06/2009, 13:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Las comillas me vuelven loco

Y sin embargo, se puede... pero para eso, necesitas leer bien las sugerencias que se te dan, en el mensaje #4 te dije como... en fin... you're on the right way now.
__________________
- León, Guanajuato
- GV-Foto
  #26 (permalink)  
Antiguo 19/06/2009, 19:16
Avatar de valenti77  
Fecha de Ingreso: julio-2008
Ubicación: Berisso, Buenos Aires
Mensajes: 244
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Las comillas me vuelven loco

Gracias triby, ya habia probado con las llaves como me decis en el mensaje 4, pero tampoco funcionaba, gracias por tu asesoramiento!
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 01:46.