Foro oficial de PHP

Que tal bros cuanto tiempo, perdonad por la molestia pero me ha surjido un lio laboral, estoy haciendo un modulo que debe hacer una especie de transaccion pero no se como manejarla.

Mirad el asunto es este, debo capturar un articulo en un controlador, luego pasar a otra vista con otro controlador a relacionar el articulo con su proveedor y luego de nuevo a una tercera vista y un tercer controlador para definir si e sun articulo fraccionado o no, el caso es que debo ser capaz de cancelar la operacion en cualquier momento sin dejar raztros en la db y no se como mantener temporalmente los datos que capturo en cada vista mientras si se decide o no a confirmar la operacion.

Se me a ocurrido desde guardarlos en un archivo hasta usar una tabla auxiliar, pero todo me parece un desperdicio de recursos, hay alguna forma d emantener datos en la memoria de php mientras pasa de un controlador a otro, os agradeceria cualquier ayuda.

Hola que tal, si no estoy mal esa pregunta hace parte del foro de SQL y creo que ahí te puede orientar mejor, pero la clave a eso que estás haciendo creo que es algo llamado rollback o algo así me parece.

Yo no lo he llegado a utilizar pero creo que funciona así (una explicación a lo machete)

SQL
iniciar rollback
selec * from usuarios
insert bla bla bla bla
grabar acciones o ejecutar rollback

Si das el comando de grabar acciones se graba todo lo que hiciste y si das el otro comando entonces se devuelve todo y no queda rastro de nada.

Salu2 espero haberte orientado bien, pero como te digo investiga esa funcionsita del rollback o algo así creo que se llama y te darás cuenta que con eso solucionas tu problema, de echo si no estoy mal de la cabeza, eso es algo que casi todos los motores de base de datos tienen en su listado de funciones.

Salu2
 
Que tal bros cuanto tiempo, perdonad por la molestia pero me ha surjido un lio laboral, estoy haciendo un modulo que debe hacer una especie de transaccion pero no se como manejarla.

Mirad el asunto es este, debo capturar un articulo en un controlador, luego pasar a otra vista con otro controlador a relacionar el articulo con su proveedor y luego de nuevo a una tercera vista y un tercer controlador para definir si e sun articulo fraccionado o no, el caso es que debo ser capaz de cancelar la operacion en cualquier momento sin dejar raztros en la db y no se como mantener temporalmente los datos que capturo en cada vista mientras si se decide o no a confirmar la operacion.

Se me a ocurrido desde guardarlos en un archivo hasta usar una tabla auxiliar, pero todo me parece un desperdicio de recursos, hay alguna forma d emantener datos en la memoria de php mientras pasa de un controlador a otro, os agradeceria cualquier ayuda.

También si puedes almacenar los datos temporalmente en una Sesión antes de grabar todo en la base de datos. Así si no se confirma la operación, la base de datos nunca se modificaría.

Es un poco arcaico pero podría funcionar... y los datos se mantendrían entre los controladores.
 
Hola que tal, si no estoy mal esa pregunta hace parte del foro de SQL y creo que ahí te puede orientar mejor, pero la clave a eso que estás haciendo creo que es algo llamado rollback o algo así me parece.

Yo no lo he llegado a utilizar pero creo que funciona así (una explicación a lo machete)

SQL
iniciar rollback
selec * from usuarios
insert bla bla bla bla
grabar acciones o ejecutar rollback

Si das el comando de grabar acciones se graba todo lo que hiciste y si das el otro comando entonces se devuelve todo y no queda rastro de nada.

Salu2 espero haberte orientado bien, pero como te digo investiga esa funcionsita del rollback o algo así creo que se llama y te darás cuenta que con eso solucionas tu problema, de echo si no estoy mal de la cabeza, eso es algo que casi todos los motores de base de datos tienen en su listado de funciones.

Salu2
eso son transacciones de SQL ;)

START TRANS / TRANSACTION
...
SELECT / INSERT / UPDATE / DELETE las veces necesarias
...
COMMIT TRANS / TRANSACTION si todo fue bien
ROLLBACK TRANS / TRANSACTION si hubo un error (o para el caso, se cancelo la transaccion)
 
eso son transacciones de SQL ;)

START TRANS / TRANSACTION
...
SELECT / INSERT / UPDATE / DELETE las veces necesarias
...
COMMIT TRANS / TRANSACTION si todo fue bien
ROLLBACK TRANS / TRANSACTION si hubo un error (o para el caso, se cancelo la transaccion)

:p estas en lo cierto chaparron jejejejejeje
A eso es lo que me refería =)

1201568081_f.jpg
 
También si puedes almacenar los datos temporalmente en una Sesión antes de grabar todo en la base de datos. Así si no se confirma la operación, la base de datos nunca se modificaría.

Es un poco arcaico pero podría funcionar... y los datos se mantendrían entre los controladores.


Tambien pense en eso pero las sesiones cargan mucho la memoria y las tres capturas son siempre bastante grandesitas, en fin lo solucione con una minitabla que uso para "emular " el porta-papeles en mi app, gracias por el interes.
 
Tambien pense en eso pero las sesiones cargan mucho la memoria y las tres capturas son siempre bastante grandesitas, en fin lo solucione con una minitabla que uso para "emular " el porta-papeles en mi app, gracias por el interes.

¿Utilizas algún método para eliminar los registros "basura" que van quedando en ese portapapeles?
 
Encontre una libreria llamada pclzip, para crear archivos comprimidos, aca el codigo de uso para el que le interese.
PHP:
<?php 
//Define la carpeta om carpetas a comprimir.  
//Por ejemplo $carpeta = "../wwwroot/"; 
$carpeta = "dev/"; 
//Define el nombre y ruta del archivo .zip a crear 
//Por ejemplo $archivo = "../backup.zip"; 
$archivo = "backup_rentelweb.zip"; 
 
//Empieza el codigo. NO MODIFICAR NADA DE AQUI ABAJO 
include_once('pclzip.lib.php'); 
set_time_limit (0); 
$zip = new PclZip($archivo); 
$func=$zip->create($carpeta); 
if ($func==0) { 
    echo "El proceso de creacion del archivo ha fallado.<br>".$zip->errorInfo(true); 
} else { 
    echo "El archivo ha sido creado con exito.<br>"; 
} 
?>
 
Encontre una libreria llamada pclzip, para crear archivos comprimidos, aca el codigo de uso para el que le interese.
PHP:
<?php 
//Define la carpeta om carpetas a comprimir.  
//Por ejemplo $carpeta = "../wwwroot/"; 
$carpeta = "dev/"; 
//Define el nombre y ruta del archivo .zip a crear 
//Por ejemplo $archivo = "../backup.zip"; 
$archivo = "backup_rentelweb.zip"; 
 
//Empieza el codigo. NO MODIFICAR NADA DE AQUI ABAJO 
include_once('pclzip.lib.php'); 
set_time_limit (0); 
$zip = new PclZip($archivo); 
$func=$zip->create($carpeta); 
if ($func==0) { 
    echo "El proceso de creacion del archivo ha fallado.<br>".$zip->errorInfo(true); 
} else { 
    echo "El archivo ha sido creado con exito.<br>"; 
} 
?>
mas interesante que el código seria donde descargarla ;)

http://www.phpconcept.net/pclzip (creo que es esa :p)
 
Encontre una libreria llamada pclzip, para crear archivos comprimidos, aca el codigo de uso para el que le interese.
PHP:
<?php 
//Define la carpeta om carpetas a comprimir.  
//Por ejemplo $carpeta = "../wwwroot/"; 
$carpeta = "dev/"; 
//Define el nombre y ruta del archivo .zip a crear 
//Por ejemplo $archivo = "../backup.zip"; 
$archivo = "backup_rentelweb.zip"; 
 
//Empieza el codigo. NO MODIFICAR NADA DE AQUI ABAJO 
include_once('pclzip.lib.php'); 
set_time_limit (0); 
$zip = new PclZip($archivo); 
$func=$zip->create($carpeta); 
if ($func==0) { 
    echo "El proceso de creacion del archivo ha fallado.<br>".$zip->errorInfo(true); 
} else { 
    echo "El archivo ha sido creado con exito.<br>"; 
} 
?>

excelente....
 
buenas mi pregunta es un poco loca pero haber alguno ha de responderla
quiero hacer un script que coja texto(archivo.txt) o una consulta a mysql o un campo de texto y lo convierta con el siguiente formato:

ejemplo yo ingreso
Código:
Hello
y despues me lo convierta a
&#72 &#101 &#108 &#108 &#111
va un ; despues de cada codigo no se pero ninguna etiquete de code quote o php me deja colocarlo

eso se realizaria con los siguientes codigos
Código:
http://www.ascii.cl/htmlcodes.htm
pero no capto como realizarlo ,espero que me entiendan y muchas gracias de antemano
 
En un principio puede funcionar, no sé si habría que hacer algún tratamiento con los caracteres especiales.


Puedes usar

Código:
$codigo = "&#".ord($caracter_a_codificar).";";
 
PHP:
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Hello!</title>
</head>

<body>

<?php
$pato="a";
$codigo = "&#".ord($pato).";";
echo $codigo;
?>

</body>
</html>



intente con esto todo ok hace lo que yo "quiero" pero como hago para desplegar este resultado en el navegador y que no me interprete el codigo y me ponga la letra a lo envuelvo en alguna etiqueta especial o algo asi?
para varias letras me tocaria hacer un xplode o d que otra forma lo realizo
muchas gracias