PREGUNTAS CONTESTADAS - PHP≤nguaje=

 Hay un total de 118 Preguntas.<<  >> 

    Pregunta:  60887 - SERVICIO WEB QUE GENERA XLS
Autor:  Ivan Garcia
Hola
Estoy haciendo un servicio web en php, y lo estoy realizando con NUSOAP y dentro de este servicio tengo que generar un fichero con extension xls para cargar una tabla que he leido previamente de mysql. El fichero excel lo genero con la clase excel-writer.inc.php.
El fichero lo genera correctamente pero cuando intento abirlo con Ms-Office 2007 me sale el siguiente mensaje:

'El archivo que intenta abrir "xxxxxx.xls" tiene otro formato que el especificado por la extension de archivo. Compruebe que el archivo no esta dañado y procede de un origen de confianza antes de abrirlo ¿desea abrir el archivo ahora?'

Lo que necesito saber es que tengo que hacer para que ese mensaje desaparezca cuando intento abrir el fichero y me lo habra sin ningun mensaje

muchas gracias

un saludo
  Respuesta:  Carl Go
Hola.

Yo utilizo la siguiente rutina y me sirve a la perfección. si lo desea pues revísela y adáptela a lo que necesita, y estoy seguro le va a corre bien... Por cierto yo tengo la suite MS Office 2003 y mis archivos generados por PHP abrir sin ningún problema.

Saludos.
_________________________________________

<?php
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=result.xls");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");

/*
http://www.lawebdelprogramador.com
*/
?>

<table border=0>
<tr>
<td style='font-weight:bold;font-size:1.3em;'>Gastos</td>
<td style='font-size:1.2em; width:60px;'>2000</td>
<td style='font-size:1.2em; width:60px;'>2001</td>
<td style='font-size:1.2em; width:60px;'>2002</td>
</tr>
<tr>
<td style='color:#00f;'>Viajes</td>
<td>40,60</td>
<td>43,40</td>
<td>39,80</td>
</tr>
<tr>
<td style='color:#00f'>Comidas</td>
<td>6,5</td>
<td>6,5</td>
<td>3,3</td>
</tr>
<tr>
<td style='color:#00f'>Alojamiento</td>
<td>7,2</td>
<td>7,8</td>
<td>3,2</td>
</tr>
<tr>
<td style='color:#00f'>Totales</td>
<td style='background:#CFD2D8; border-top:1px solid; border-bottom:1px solid; border-left:1px solid;'>=suma(b2:b4)</td>
<td style='background:#CFD2D8; border-top:1px solid; border-bottom:1px solid;'>=c2+c3+c4</td>
<td style='background:#CFD2D8; border-top:1px solid; border-bottom:1px solid; border-right:1px solid;'>=suma(d2:d4)</td>
</tr>
</table>
?>

    Pregunta:  60989 - ACTUALIZAR DATOS EN PAGINA PHP
Autor:  carlos alberto
hola...agradezco si pueden ayudarme..

pasa lo siguiente: Estoy realizando un sistema web.

existe una base de datos..en la cual hay una tabla producto que tiene los precios de cada producto...lo q hace el sistema es cargar estos productos en la pag para q cualquier usuario pueda observar los precios....pero, existen tambien usuarios que pueden modificar los precios (admin)..lo que necesito es que cuando se modifique un precio de la tabla producto en la base de datos...... esta actualizacion pueda ser vista por todos los usuarios que esten utilizando la pag...es decir q para todos los que esten utilizando el sistema se les recargue su pagina y puedan ver los datos actualizados, sin necesidad de hacer refresh individualmente "F5"....

se que podría actualizar la pag dando un intervalo de tiempo..pero esta solucion esta prohibida, necesito una forma que reaccione ante el evento de que se inserte o actualice un dato en la base de datos....

gracias por su tiempo....
  Respuesta:  Carlos Alberto
Hola...soy el mismo que formulo la pregunta....bueno lo que quiero es primeramente ...gracias diego por la respuesta y pasa q no se como contestarte directamente asi q contesto a la pregunta suponiendo q podrias leerlo....

bueno la idea q planteaste en tu respuesta me parecio muy interesante y creo que me podria ser de gran ayuda....pero pasa q estoy apenas iniciandome en php y aun estoy con dudas ......

se que para actualizar automaticamente una pagina utilizaria por ej:

<meta HTTP-EQUIV="refresh" content="10; url=http://www.example.com/index.php">

tu propones q llame a una funcion creo...pero como llamaria a esa funcion automaticamente.....si para la pag..dego anotar en url:www....
comoo haria para llamar a la funcion....

y si...si puedes ayudarme con codigo fuente te lo agradeceria bastante.....
  Respuesta:  Diego
Hola Carlos, buen día, he leído tu pregunta y se me ocurrió una idea...
Ya que no podés hacer que la página tenga un refresh automático con un intervalo de tiempo, lo que se me ocurrió que podrías hacer es insertarle ese intervalo de tiempo PERO en vez de que se refresque la página, que llame a una función (qué función te preguntarás, bueno).

suponiendo lo siguiente:

DB nn
----
TABLA
t_productos
----
c_id
c_desc
c_precio
c_fecha_modificacion
----

-----------------.----------------------.----------------------.-----------------------

EN LA PAGINA WEB

<table>
<tr><td>RS('c_desc')<input type="hidden" value="RecordSet('c_fecha_modificacion')" id="RecordSet('c_id')" name="produ"/></td></tr>
</table>

----------.---------------.--------------.------------------.-----------------

EN LA FUNCIÓN

podrías obtener todos los inputs con el name "produ", generar un ciclo que vaya obteniendo cada ID de cada objeto, buscar en la base de datos ese producto (mediante el ID) y compara la fecha de modificacion de la DB (que sería la última cuando se hace la modificación) y la fecha de modificación que tiene el input escondido...

Para qué ?

Si vos cargás la página a las 2am del 5/5/2009, la fecha de modificación del producto va a ser la última que tenga, cada diez minutos (por decir) corre la función, entonces supongamos que un admin actualiza un producto, el campo en la DB cambia a 9am del 5/5/2009, si la fecha de modificacion de la DB es mayor a la del input, entonces, actualizas la página.

...

Es algo medio loco, quizás, pero me parece que se puede poner en práctica; te respondí algo así nomás quizás no detalle mucho la función, si necesitas algo de código avisame.

Espero te sirva !!

    Pregunta:  61002 - COMO GENERAR GRAFICAS EN UN XLS A PARTIR DE PHP
Autor:  Oswaldo Cuadras
De nuevo con una pregunta, ya se como generar el archivo de excel a partir de la informacion de una tabla que veo en la pagina, quisiera saber si al archivo de excel le puedo incluir algunas graficas en base a los mismos datos con los que lo estoy generando, ¿Se puede? ¿Como se haria?

Saludos.
  Respuesta:  Carl Go
Hola por supuesto que si se puede... lo que tienes que hacer es un archivo independiente donde se generen las gráfica, y este archivo va a obtener los valores del archivo generado por PHP.

En caso de que la cantidad de valores obtenidos no sean constantes, es decir que sean datos de rango variables (se incrementa la cantidad de valores en cada vez que se crea el archivo Excel) con datos provenientes de PHP, pues la solución sería generar una gráfica con programación MACRO hecha en VB, que es el lenguaje de programación que una la suite Office.

Creo que este código ya está listo para usar. Sólo asígnalo a un botón
_________________________________________________________

Sub marrano()

Dim x1 As Integer
Dim x2 As Integer
Dim datosx As Range

'Si los datos los tienes en hoja2
Set datosx = Sheets("Hoja2").Range(Cells(x1, 2), Cells(x2, 2)) 'Eje de categorías
Set datos = Sheets("Hoja2").Range(Cells(x1, 3), Cells(x2, 3)) 'rango a graficar
x1 = 2
x2 = 5

Charts.Add

With ActiveChart
'Esto indica que el gráfico lo imprimes en "Hoja1"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
.ChartType = xlLineMarkers
'Estas son para indicar el origen de los datos
.SetSourceData Source:=datos, _
PlotBy:=xlColumns 'Si la serie está por filas cambiar por xlRows
.SeriesCollection.NewSeries 'Si tienes una sola serie esta línea sobra
.SeriesCollection(1).XValues = datosx
.SeriesCollection(1).Values = datos

'Estas son cuestiones de forma
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

End Sub
_________________________________________________________

Analiza este código un poco y piensa como adaptarlo a tu necesidad.

Saludos

Carlos

    Pregunta:  61269 - CONEXION AL SERVIDOR POSTGRESQL
Autor:  nestor manrique
tengo una conexion a una base de datos en php y me estoy tratando de conectar al servidor pero me saca un error Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: Ident authentication failed for user "compras" in /var/www/html/prnelson/ConectarBd.php on line 15
me gustaria saber si tengo que configuarar algo en el servidor o en la conexion. la conexion que estoy usando es la siguiente

function conectar($bd)
{
$this->bd=$bd;
$this-> conexion = pg_connect("host=$this->servidor port=$this->puerto user=$this->usuario password=$this->password dbname=$this->bd") or die("Fallo Conexion");
return $this-> conexion;
}
  Respuesta:  Miguel Hernandez
Debes dar un poco mas de informacion por ejemplo si estas conectando a un server local o remoto. Sin embargo los que te dice el warning es que no se ha podido autenticar al usuario "compras", en ese caso debes verificar que el usuario "compras" exista y que la clave sea la correcta.

    Pregunta:  61276 - PHP Y CONSULTA A ORACLE CON FECHAS
Autor:  Reinel Marcano
Hola! Amigos que tal? Tengo un inconveniente y es el siguiente: Quiero hacer un reporte con datos extraidos de una base de datos Oracle donde la condición sea por fecha, utilizo programación Php; ejecuto la siguiente instrucción para que me bote el reporte y me arroja error de Oracle:

TO_CHAR(RAP.C044T_RECOMENDACION.FECHA_DIAGNOSTICO, 'DD/MM/YYYY')=:'$txt_fecha'

$txt_fecha...Es el nombre del cuadro de texto del formulario y por lo tanto la opción que tiene que introducir el usuario para la ejecución de dicho reporte será que estoy igualando mal la fecha? Les agradesco que me ayuden saludos cordiales ReinelM.
  Respuesta:  sergio Quequo Ruíz
Probablemente te de error, porque "$txt_fecha" no va con comillas dobles. Es una variable, y por tanto no dbe ir con comillas, ni dobles ni sencillas.

Espero haberte ayudado.

    Pregunta:  61294 - COMO CREAR DOCUMENTO RTF
Autor:  Victor Jovan Hidalgo Rosas
Hola

Tengo un aplicacion php en la que un usuario se lecciona dtaos de una base de datos.

Como puedo crear un archivo rtf con los datos que el usuario selecciono.

Gracias
  Respuesta:  ElcheOnline.com elcheonline.wordpress.com
Creo que tienes que hacerlo empleando xml, que te permite transformar la salida a distintos formatos. Deberías intentar usar una hoja xslt que te transforme la información del xml en un documento rtf. Espero esto te sirva de orientación.

    Pregunta:  61422 - ENVIAR FACTURAS POR CORREO
Autor:  Fernando Villar Molina
Tengo una aplicación que me crea facturas en pfp y las quiero enviar por correo; cada una a la empresa que le correponda.Loenvío y manda la misma factura a todas las direcciones.No se como hacerlo.
Me podéis ayudar? Gracias
Falta el script de creacion del pfp que se envía como fichero adjunto, como veréis
Este es el script de envío:
$mail=new PHPMailer();

$mail->Helo = "www.dominio.com"; //Muy importante para que llegue a hotmail y otros
$mail->SMTPAuth=true;
$mail->Host="mail.dominio.com";

$mail->Username="[email protected]";
$mail->Password="pssword"
$mail->From="[email protected]";
$mail->FromName="fVSL";
$mail->Timeout=60;
$mail->IsHTML(true);

$mail->AddAddress($row["email2"],$row["nombre"]);
//Enviamos el correo
//Puede ser Hotmail
$mail->AddCC("
");
$mail->Subject='tu asunto';


//Creamos el documento como String para poder enviarlo como archivo adjunto
$doc=$pdf->Output('factura /' .$row['id_factura'].'/','S');
$mail->AddStringAttachment($doc, 'factura /' .$row['id_factura'].'/', 'base64', 'application/pdf');
if($mail->Send())
{
echo "Mail enviado exitosamente";
}else{
echo "Correo $to no enviado<br>";
}

$mail->ClearAllRecipients();
$mail->ClearAttachments();

}

?>
  Respuesta:  Pedro Perez
Buenaos dias:

Para enviar correctamente los correos electrónicos yo tendría en la base de datos una tabla o varias, dependiendo delo que quieras hacer, que contenga la información de la empresa (nombre, email, facturas, etc). Teniendo esta tabla solo tendrias que hacer una consulta a base de datos para extraer todas las direcciones de correo electrónico de las empresas. Despues con un simple bucle foreach, enviaría un email con las facturas que correspondan a cada empresa una a una.

Por ejemplo:

foreach($empresas as $empresa){
mail($empresa["email"], "Factura", $empresa["factura"]);
}

De esta forma enviarías la factura a la empresa que le corresponda, porque lo tendrías almacenado como parte de la información de la empresa.

Por otra parte, en lugar de enviar un adjunto, que no todos los lectores de correo los aceptan, envia en el texto del email, una plantilla html con los datos de la factura y un enlacea la web, al que solo tenga acceso la empresa, por si quieren guardar una copia del pdf de la factura. de esta forma tambén tendrás la posibilidad de guardar un histórico de facturas de cada empresa para tener constancia de pagos y demás.

Aquí te dejo un enlace para que veas como generar un PDF y como quedaría con un sencillo ejemplo. http://www.imaginanet.com/blog/creando-documentos-pdfs-dinamicos-con-php.html

    Pregunta:  61460 - CONECTAR CON LDAP
Autor:  Reinel Marcano
Hola! Xfa le agradesco que me ayuden, actualmente presento el siguiente inconveniente desarrollo un sistema utilizando programación php y bd postgresql pero al intentar accesar el usuario al sistema tengo que considerar de validar el mismo con el LDAP y luego con la bd del sistema, pero al intentar conectarme al LDAP me arroja el siguiente error...Call to undefined function ldap_connect() ...Será que tengo que iniciar unas dll en el php que puedo hacer al respecto, agradesco que me ayuden...saludos....
  Respuesta:  Yordanis Gonzalez Mulet
Bueno la solución a tu problema es la siguiente.....

Busca dentro de xamppapachein el fichero php.ini y dentro busca la siguiente línea ;extension=php_ldap.dll y quitale el ; quedandote así extension=php_ldap.dll
y reinicias el servicio apache... Si utilizas wamp haz lo mismo.

Ahora si lo que descomentas es la misma línea pero del php.ini que se encuentra en la carpeta php es muy poco probable que lo pongas a funciuonar si lo que utilizas es linux tambien puedes habilitar el mismo dentro de /etc/php5/apache2/php.ini , pero en este casoi en vez de ser extension=php_ldap.dll, seria extension=php_ldap.so. Realizar el proceso antes comentado y espero te sirva de ayuda

Saludos y espero te sirva....

    Pregunta:  61573 - PASAR UNA VARIABLE A OTRO FRAME
Autor:  ubaldo bernal
HOLA, ESTOY HACIENDO UNA PAGINA PARA COTIZACIONES DE UNA COMPUTADORA EN PHP, TENGO DOS FRAMES EN EL PRIMERO TENGO VARIOS COMBOBOX QUE SE LLENA CON DATOS QUE EXISTE EN LA BASE DE DATOS, LO QUE QUIERO ES QUE CUANDO SELECCIONE UNA OPCION DE UNO DE LOS COMBOBOX, QUIERO QUE ME APARESCA EL TOTAL(COSTO$) EN EL OTRO FRAME AUTOMATICAMENTE Y QUE CUANDO SELECCIONE OTRA OPCION DE OTRO COMBOBOX (DEL PRIMER FRAME) ME ACTUALICE EL TOTAL.
COMO LO HAGO? GRACIAS
  Respuesta:  rodrigo nannig
el punto esta en la propiedad target de los form, de esta forma puedes cargar la pagina
dentro de cualquier frame.

algo asi.

index.htm
----------------------
<iframe id='if1' name='if1' src='pag1.php'>
</iframe>
<iframe id='if2' name='if2'>
</iframe>
---------------------

pag1.php
-------------------------------
<form id='f1' target='if2' action='pag2.php'>
<span>esto es la pagina1</span>
<input type='submit' value='enviar'>
</form>
-------------------------------

pag2.php
-------------------------------
<?
echo "esto es la pagina 2";
?>
-------------------------------

espero te sirva.

    Pregunta:  61942 - MOVER SCROLL DE LISTBOX AL PRIMER ITEM SELECCIONADO
Autor:  Gustavo Castellanos Lugo
Hola, tengo un listbox que permite selección múltiple dentro de un formulario que se recarga a sí mismo.

Mi problema es que al seleccionar uno o más items dentro del listbox y se envía el formulario, los items que fueron seleccionados no son visibles una vez recargada la página. Dado que la lista es larga, por default, el listbox se muestra desde el primer item. El size del listbox es 5, pero la lista es de 35 items y por razones de espacio no puedo contenerlos todos.

¿Cómo hacer que al menos se mueva el scroll al primer item que tengo seleccionado?.

Muchas gracias.
  Respuesta:  Gustavo Castellanos Lugo
Bueno, a final de cuentas, buscando por allí, encontré la respuesta que comparto con todos ustedes. Aunque lo que logré fuera que se posicionara en el último item seleccionado, pero me doy por satisfecho.

La solución es a través de Javascript, y el truco consiste en leer todos los elementos del listbox en un bucle, checar si el item esta seleccionado, si está seleccionado entonces deselecciónalo y vuélvelo a seleccionar, lo que provoca que el scroll se vaya al último item que fué seleccionado.

La función javascript que debe invocarse es la siguiente:

function showSelection()

{
var Lista = document.getElementById("estados");
for(var i=0; i< Lista.options.length; i++)
{
if(Lista.options[i].selected == true)
{
Lista.options[i].selected = false;
Lista.options[i].selected = true;
}
}
}


Espero les sirva.

|<  <<  2 3 4 5 6 7 8 9 10 11 12  >>  >|