[AYUDA] Como se concatenan saltos de linea en el codigo de PHP .= o &&

Iniciado por Graphixx, 1 Septiembre 2014, 16:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Graphixx

Eso mismo si tengo una linea de codigo PHP muy larga y la quiero partir en varias lineas, hice asi:
Código (sql) [Seleccionar]

# escribimos la sentencia MySQL
$sentencia="UPDATE ".$tabla." set nombres='$nombres',apellidos='$apellidos',direccion='$direccion',ciudad='$ciudad',pais='$pais',nacionalidad='$nacionalidad',";
$sentencia.="cedula='$cedula',tel_movil='$tel_movil',tel_casa='$tel_casa',tel_oficina='$tel_oficina',email='$email',red_email='$red_email',fecha_nac='$fecha_nac',";
$sentencia.="peso='$peso',altura='$altura',rh='$rh',organos='$organos',sangre='$sangre',religion='$religion',alcohol='$alcohol',tabaco='$tabaco',seguro='$seguro',";
$sentencia.="nom_company='$nom_company',num_poliza='$num_poliza',tel_company='$tel_company',num_seg_social='$num_seg_social',historial_clinico='$historial_clinico' where qr='".$qr."'";


conocen mas formas de partir el codigo ?
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

Markul

Puedes continuar el codigo en la siguiente linea sin problemas,no es necesario partir la consulta de ese modo,si no me equivoco,de cualquier forma para hacer lo que intentas prueba asi:
Código (php) [Seleccionar]

    # escribimos la sentencia MySQL
    $sentencia="UPDATE ".$tabla." set nombres='$nombres',apellidos='$apellidos',direccion='$direccion',pais='$pais',nacionalidad='$nacionalidad',";
    $sentencia=$sentencia ."cedula='$cedula',celular='$celular',telefono='$telefono',tel_oficina='$tel_oficina',email='$email',red_email='$red_email',fecha_nac='$fecha_nac',";
    $sentencia=$sentencia ."peso='$peso',rh='$rh',organos='$organos',sangre='$sangre',religion='$religion',alcohol='$alcohol',tabaco='$tabaco',seguro='$seguro',";
    $sentencia= $sentencia ."nom_company='$nom_company',num_poliza='$num_poliza',tel_company='$tel_company',num_seg_social='$num_seg_social',hist_clinico='$hist_clinico' where qr=".$qr;

MinusFour

#2
Prueba:

Código (php) [Seleccionar]

$sentencia = <<<END
UPDATE "$tabla" set nombres='$nombres',apellidos='$apellidos',direccion='$direccion',pais='$pais',nacionalidad='$nacionalidad',
cedula='$cedula',celular='$celular',telefono='$telefono',tel_oficina='$tel_oficina',email='$email',red_email='$red_email',fecha_nac='$fecha_nac',
peso='$peso',rh='$rh',organos='$organos',sangre='$sangre',religion='$religion',alcohol='$alcohol',tabaco='$tabaco',seguro='$seguro',
nom_company='$nom_company',num_poliza='$num_poliza',tel_company='$tel_company',num_seg_social='$num_seg_social',hist_clinico='$hist_clinico' where qr=$qr
END;

$sentencia = str_replace(PHP_EOL, '', $sentencia);


Nota: Estás sacrificando eficiencia por legibilidad.

Lo correcto sería configurar tu editor de texto para las oraciones largas.


Shell Root

@Graphixx y printeaste la cadena y la ejecutaste en el motor de base de datos?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Graphixx

Cita de: Shell Root en  1 Septiembre 2014, 17:13 PM
@Graphixx y printeaste la cadena y la ejecutaste en el motor de base de datos?

La consulta me funciona tal y como esta (ya la actualice)... lo que queria era saber que otras formas de partir codigo existen, estuve leyendo en foros y decian que con && pero con "&&" no me funciono.
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

WHK

Como es eso de partirlo? lo que debes hacer es acostumbrarte a identar los códigos estén en el legunaje que estén:

Código (php) [Seleccionar]
<?php
/* escribimos la sentencia MySQL */
$sentencia '
UPDATE '
.$tabla.
SET 
nombres = "'
.$nombres.'",
apellidos = "'
.$apellidos.'",
direccion = "'
.$direccion.'",
ciudad = "'
.$ciudad.'",
pais = "'
.$pais.'",
nacionalidad = "'
.$nacionalidad.'",
cedula = "'
.$cedula.'",
tel_movil = "'
.$tel_movil.'",
tel_casa = "'
.$tel_casa.'",
tel_oficina = "'
.$tel_oficina.'",
email = "'
.$email.'",
red_email = "'
.$red_email.'",
fecha_nac = "'
.$fecha_nac.'",
peso = "'
.$peso.'",
altura = "'
.$altura.'",
rh = "'
.$rh.'",
organos = "'
.$organos.'",
sangre = "'
.$sangre.'",
religion = "'
.$religion.'",
alcohol = "'
.$alcohol.'",
tabaco = "'
.$tabaco.'",
seguro = "'
.$seguro.'",
nom_company = "'
.$nom_company.'",
num_poliza = "'
.$num_poliza.'",
tel_company = "'
.$tel_company.'",
num_seg_social = "'
.$num_seg_social.'",
historial_clinico = "'
.$historial_clinico.'"
WHERE qr = "'
.$qr.'"
'
;


Recuerda escapar cada variable con mysqli_escape_string() para prevenir las inyecciones sql y usar el objeto DateTime() para validar fechas y exportar con el formato sql ( $ob->format('Y-m-d') ).

Mira, acá hay una consulta sql que hice hace tiempo y a pesar del tamaño que tiene mantengo la identación y no necesito partirla o separarla (auqnue esta consulta ya no lo uso porque estaba muy pesada, ahora uso tablas para caché desnormalizadas):

Código (php) [Seleccionar]
<?php

$busqueda 
$this->mysqli->query('
SELECT 
usuarios.id,
usuarios.apellidos,
usuarios.nombres,

COUNT(DISTINCT especialidades_areas.id) as cantidad_especialidades,
COUNT(DISTINCT centros_medicos.id) as cantidad_centros_medicos,
COUNT(DISTINCT profesionales_titulos.id) as cantidad_titulos,

IF(usuarios.hash_foto IS NOT NULL, 0, 1) as tiene_foto,
IF(COUNT(DISTINCT especialidades_areas.id) = 0, 0, 1) as tiene_especialidades,
IF(COUNT(DISTINCT centros_medicos.id) = 0, 0, 1) as tiene_centros_medicos,
IF(COUNT(DISTINCT profesionales_titulos.id) = 0, 0, 1) as tiene_titulos

FROM usuarios

INNER JOIN usuarios_roles_relacion ON (usuarios_roles_relacion.usuario_id = usuarios.id)
INNER JOIN usuarios_roles ON (usuarios_roles.id = usuarios_roles_relacion.usuarios_rol_id)

LEFT JOIN especialidades_areas_relacion_profesionales ON (especialidades_areas_relacion_profesionales.usuario_id = usuarios.id)
LEFT JOIN especialidades_areas ON (especialidades_areas.id = especialidades_areas_relacion_profesionales.especialidades_area_id)
LEFT JOIN usuarios_relacion_centro_medico ON (
usuarios_relacion_centro_medico.usuario_id = usuarios.id AND 
usuarios_relacion_centro_medico.usuarios_rol_id = (
SELECT id
FROM usuarios_roles
WHERE namespace = "profesional"
LIMIT 1
)
)
LEFT JOIN centros_medicos ON (centros_medicos.id = usuarios_relacion_centro_medico.centro_medico_id)
LEFT JOIN centros_medicos_tipos ON (centros_medicos_tipos.id = centros_medicos.centros_medicos_tipo_id)
LEFT JOIN profesionales_titulos ON (profesionales_titulos.usuario_id = usuarios.id)

WHERE 
usuarios_roles.namespace = "profesional" AND
usuarios.esta_acreditado_superintendencia = 1 AND
CONCAT_WS(
" ", 

usuarios.apellidos, 
usuarios.nombres, 
usuarios.apellidos,

profesionales_titulos.texto,

centros_medicos_tipos.nombre,
centros_medicos.nombre,

especialidades_areas.nombre,

centros_medicos_tipos.nombre,
centros_medicos.nombre,

profesionales_titulos.texto,

usuarios.apellidos, 
usuarios.nombres, 
usuarios.apellidos,

" "
) LIKE "%pedro%"

GROUP BY usuarios.id

ORDER BY 
tiene_foto,
usuarios.apellidos,
usuarios.nombres
'
);

Graphixx

WHK ,
que diferencia hay entre importar la variable asi:
Código (php) [Seleccionar]
nombres='$nombres',
A importar la variable asi:
Código (php) [Seleccionar]
nombres= "'.$nombres.'",
Gracias.
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

WHK

Varias, la primera es costumbre, la segunda es mayor control, no puedes evaluar todo tipo de objetos sobre comillas dobles, yo acostumbro a usar objetos y entre comillas dobles casi nunca funcionan o funcionan mal y terminan en fugas de información inesperadas.

Con comillas simples el string no se evalua, con comillas dobles si se evalua, el problema viene cuando usas mucho código html dentro de código php, por ejemplo:

<a href="" <?php id($x) echo 'class="active"'?>>xxx</a>

Si lo hubiera hecho en php con comillas dobles hubiera tenido que haber escrito html con comillas simples y puede ser peligroso porque casi todos los lenguajes de programación incluyendo php filtran comillas dobles para prevenir los xss pero no las simples a menos que des parámetros especiales a las funciones como ENT_QUOTES.

Mayor control también porque puedes procesar funciones sobre variables entremedio, por ejemplo:

Código (php) [Seleccionar]
<?php
$extras 
'ghi';
echo 
'
  abc 
  def
  '
.$this->str->escapeHtml($extras).'
  jkl
'
;


Hacer esto con comillas dobles poniendo las variables por dentro puede generar:

Mal acostumbramiento a usar variables que tienen solo un uso de vida, por ejemplo:
Código (php) [Seleccionar]
<?php
$extras 
$this->str->escapeHtml('ghi');
echo 
"
  abc 
  def
  
$extras
  jkl
';


Ahi hay varios problemas, uno que $extras ya no lo podrás usar en un contexto que no sea html porque va filtrada,, por ejemplo si lo quieres usar en una consulta sql o dentro de una variable javascript no te servirá porque estará codificada en html, el orto problema es que talves quieras poner un simbolo peso entremedio y tendrás que usar carácteres de escape porque se va a evaluar y puede ser peligroso, otro problema como lo dije antes va en los códigos html, por ejemplo simplemachines (el sistema en php de este foro) escribe mucho las etiquetas html en echo por lo cual debes usar muchisimos carácteres de escape porque tanto php como el html los escriben en comillas dobles o podrás caer en agujeros de seguridad o en problemas de codificación.

Por ejemplo:

Código (php) [Seleccionar]
<?php
echo "<a href=\"#\">\$ 0.00 pesos</a>";


Entonces para no hacer trabajo de más, prevenir agujeros de seguridad, hacer que php no evalue haciendo los echos mas rápidos, prevenir tener que estar escribiendo a cada rato carácteres de escape, etc etc mejor te acostumbras a usar una sola manera de hacer las cosas... para mi la mejor manera y la mas correcta es usar siempre código php con comillas simples, concatenar variables con un punto y escribir código html en comillas dobles.

Cuando necesito escribir código javascript dentro de php escribo php en comillas simples y javascript en comillas dobles, pero cuando javascript lo escribo en un archivo solo entonces ahi lo uso también con comillas simples, solamente html es el único lenguaje que siempre siempre uso con comillas dobles y sin excepción, las consultas sql desde php las hago con comillas dobles y php con comillas simples.

De esta manera cuando voy a programar nunca tengo problemas ni enredos con las comillas y nunca me dan problemas de ningún tipo, salvo cuando debo escribir obligadamente comillas simples sobre comillas simples, ahi si uso las secuencias de escape pero son muy pocas las veces y trato de evitarlas, en html cuando necesito escribir valores con comillas simples y dobles uso html entities, como &quote;

Saludos.

Graphixx

Gracias compañero queda todo muy claro, nos salimos un poco del tema, pero todo nutre el aprendizaje en PHP.
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

JorgeEMX

Otra forma de poder usar variables, sobre todo objetos, entre comillas dobles y que sea menos confuso:

Código (php) [Seleccionar]

echo "Hola {$obj->text}";


Y si, la manera correcta es identar bien los strings como lo indica WHK. Así no tendrás enemigos y tu vida nunca correrá peligro  :D