Foros del Web » Programando para Internet » PHP »

problema al concatenar

Estas en el tema de problema al concatenar en el foro de PHP en Foros del Web. Hola, que tal? Estoy concatenando varias cosas en este codigo: Código PHP: <?php     $consulta = "consulta" ;      $consulta =  mysql_query ( $consulta , $con1 ...
  #1 (permalink)  
Antiguo 26/09/2011, 19:04
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 8 meses
Puntos: 8
problema al concatenar

Hola, que tal?

Estoy concatenando varias cosas en este codigo:

Código PHP:
<?php
    $consulta
="consulta";
    
$consultamysql_query($consulta,$con1);
    
$i=1;
    while(
$rt=mysql_fetch_array($consulta)){
        
$clientes[$i]="<a href='clientes.php?id=".$rt['usuario_id']."'>".$rt['nombre']." ".$rt['apellido']."</a>";
        
$i=$i+1;
    }
    
$contar_clientes=count($clientes);
    if(
$contar_clientes==0){
        
$notificacion="";
    }elseif(
$contar_clientes==1){
        
$notificacion=$clientes[1]." ha comentado en la foto <a href='foto.php?id=".$foto_id."' >".$titulo."</a>.";
    }elseif(
$contar_clientes==2){
        
$notificacion=$clientes[1]." y ".$clientes[2]." han comentado en la foto <a href='foto.php?id=".$foto_id."'>".$titulo."</a>.";
    }elseif(
$contar_clientes>=3){
        for(
$j=1;$j=($contar_clientes-2);$j++){
            
$notificacion=$notificacion.$clientes[$j].", ";
        }
        
$notificacion=$notificacion.$clientes[$contar_clientes-1]." y ".$clientes[$contar_clientes]." han comentado en la foto <a href='foto.php?id=".$foto_id."'>".$titulo."</a>.";
    }
?>
Cuando mando el script me sale este error:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'clientes.php?id=6'>Sergio Corcuera ha comentado en la foto

Pero no logro identificar mi error, me parece que el codigo esta bien...

La "consulta" esta correcta, ya la probe en mi sql. $foto_id y $titulo existen, ya los probe tambien.

Alguna idea?
  #2 (permalink)  
Antiguo 26/09/2011, 19:09
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: problema al concatenar

el problema lo tienes en la consuulta podrías indicarnos cual es tu consulta?? porque el error te lo dice bien claro que estas agregando un texto que no es de la sintaxis de mysql
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 26/09/2011, 19:15
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: problema al concatenar

Esta es mi consulta:

select clientes.cliente_id, nombre, apellido, fecha from notificaciones, clientes where (clientes.cliente_id=notificaciones.cliente_id) and (fecha>'$rs[fecha]') and (tipo=1) and (tipo_id=$foto_id) order by nombre asc
  #4 (permalink)  
Antiguo 26/09/2011, 20:50
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: problema al concatenar

pues el poblema que puede estar pasando es que el $foto_id puede estar conteniendo la cadena de texto que te indica el error que no espera, verfica que te traiga lo que tu desees, de todas maneras hasle un echo a tu consulta a ver cuales son los valores de tus variables, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 26/09/2011, 23:18
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: problema al concatenar

Encontre que el error estaba en una parte que no habia puesto para que vean, es en el update del final.

Código PHP:
<?php
    $consulta
="consulta";
    
$consultamysql_query($consulta,$con1);
    
$i=1;
    while(
$rt=mysql_fetch_array($consulta)){
        
$clientes[$i]="<a href='clientes.php?id=".$rt['usuario_id']."'>".$rt['nombre']." ".$rt['apellido']."</a>";
        
$i=$i+1;
    }
    
$contar_clientes=count($clientes);
    if(
$contar_clientes==0){
        
$notificacion="";
    }elseif(
$contar_clientes==1){
        
$notificacion=$clientes[1]." ha comentado en la foto <a href='foto.php?id=".$foto_id."' >".$titulo."</a>.";
    }elseif(
$contar_clientes==2){
        
$notificacion=$clientes[1]." y ".$clientes[2]." han comentado en la foto <a href='foto.php?id=".$foto_id."'>".$titulo."</a>.";
    }elseif(
$contar_clientes>=3){
        for(
$j=1;$j=($contar_clientes-2);$j++){
            
$notificacion=$notificacion.$clientes[$j].", ";
        }
        
$notificacion=$notificacion.$clientes[$contar_clientes-1]." y ".$clientes[$contar_clientes]." han comentado en la foto <a href='foto.php?id=".$foto_id."'>".$titulo."</a>.";
    }
    
$update_notificacion="UPDATE notificaciones SET notificacion='$notificacion' where notificacion_id='$notificacion_id'";
    if (!
mysql_query($update_notificacion,$con1))
      {
      die(
'Error: ' mysql_error());
      }
?>
El problema esta con el $notificacion ya que por alguna extraña razon, la cadena que contiene $notificacion hace alguna interferencia con el update, puede que sea por las comillas, pero nose como corregirlo.

Alguna idea?
  #6 (permalink)  
Antiguo 27/09/2011, 00:07
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: problema al concatenar

Antes de incluir cualquier cadena en una consulta, no olvides que por seguridad y prevencion de errores, debes pasarla por mysql_real_escape_string()... porque?, tan sencillo que si tienes una comilla simple o doble y no la escapas, habra posibilidad de inyeccion SQL y, en el mejor de los casos, el error que tienes ahora.

Por otra parte, la concatenacion es bastante sencilla, la verdad me parece muy complicado usar tanto punto cuando PHP te da la opcion de incluir e interpretar variables en cadenas delimitadas por comillas dobles.

Ejemplo:
Código PHP:
Ver original
  1. // Concatenando
  2. $texto = "Esto es un texto " . $var1 . " que contiene " . $var2 . " variables y un " . $var3['titulo'] . " elemento de array asociativo.";
  3.  
  4. // Incluyendo las variables directamente
  5. $texto = "Esto es un texto $var1 que contiene $var2 variables y un {$var3['titulo']} elemento de array asociativo.";

Siempre que incluyas algun elemento de array en una cadena, encierralo entre llaves y aplica las comillas sencillas cuando el indice sea alfanumerico (no numerico ni variable).

Y bueno, al parecer, el rendimiento de PHP es muy rapido cuando procesa cadenas encerradas entre comillas simples, pero se hace un poco mas lento cuando realizas concatenaciones y, todavia mas lento cuando las concatenaciones son de cadenas entre comillas dobles, lo cual no tiene mucho sentido.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 27/09/2011 a las 18:01 Razón: Error de concatenacion! :borracho:
  #7 (permalink)  
Antiguo 27/09/2011, 17:30
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: problema al concatenar

Muchas gracias por la ayuda! Ahora todo esta funcionando sin errores!

Etiquetas: concatenar, mysql, sql, usuarios
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 00:19.