Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   FAQ's de PHP (http://www.forosdelweb.com/f18/faqs-php-530600/)

MSDark 04/03/2003 21:36

Tema: Seguridad - URL´s

Pregunta: Como compruebo si una url existe o no

Respuesta:

Utilizando la siguiente funcion

Código PHP:

function url($url)//Se le pasa la url
{
$fp=@fopen($url,"r");//Utilizamos fopen para abrir esa url

 
if($fp){//Si fopen abre la url

     
return true;

 }else{
//si no devuelve false

     
return false;
 }

@
fclose($fp);//Cerramos la conexion


Para usarla

Código PHP:

$existe=url("http://La_url.com");//Con [url]http://[/url]
if($existe){
    echo 
"Si existe";
}else{
    echo 
"No existe";



Espero les sirva


Saludos :arriba:

BVis 20/03/2003 10:40

Como conocer el tamaño en bytes de una Base de Datos MySQL
 
La consulta:

SHOW TABLE STATUS

Te muestra información sobre las tablas de una base de datos. Entre los campos que te muestra, hay uno que es 'Data_length', bueno, pues eso es lo que ocupan los datos de cada tabla.

Lo que ocurre es que además de los datos, también puede representar bastante espacio lo asignado para cada índice. Y esto lo indica en el campo 'Index_length'

Para obtener el valor total de la base de datos, se me ocurre emplear, por ejemplo, PHP para recuperar todos los valores y sumarlos posteriormente.

Sería algo como:
Código PHP:

mysql_connect(Datos de conexion) or die(mysql_error());
mysql_select_db("base_de_datos") or die(mysql_error());

$sql "SHOW TABLE STATUS";
$resultado mysql_query($sql) or die(mysql_error());

$total 0;
while (
$tabla mysql_fetch_assoc($resultado))
 
$total += ($tabla['Data_length']+$tabla['Index_length']);
 
echo 
$total

Es decir, en la variable $total tenemos cuanto ocupa la base de datos "base_de_datos" (en bytes).

Si queremos mostrar ese valor en KB, es muy sencillo...
Código PHP:

$total_temp $total 1024;
$total_kb number_format($total_temp0","".")+1;

// despues...
echo $total_kb

1 Saludo.

mdk 31/03/2003 15:09

¿como exportar mi base de datos a un archivo 'archivo.sql'?
 
Créditos: Cluster
Tema: Bases de datos
Pregunta: ¿Como exportar mi base de datos en MySQL a un archivo fichero.sql?
Respuesta:

Para guardar una base de datos, sin ningún gestor como podría ser phpMyAdmin. Se podría usar el siguiente código. Tal cual está .. envia a descargar el "dump" (volcado de datos y estructura) de la Base de datos seleccinada, incluido todas sus tablas.


Código PHP:

<?
// Nombre del archivo de con el cual queremos que se guarde la base de datos
$filename "fichero.sql"
// Cabezeras para forzar al navegador a guardar el archivo
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");

$usuario="usuario";  // Usuario de la base de datos, un ejemplo podria ser 'root'
$passwd="contraseña";  // Contraseña asignada al usuario
$bd="base_de_datos";  // Nombre de la Base de Datos a exportar

// Funciones para exportar la base de datos
$executa "c:\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd";
system($executa$resultado);

// Comprobar si se a realizado bien, si no es asi, mostrará un mensaje de error
if ($resultado) { echo "<H1>Error ejecutando comando: $executa</H1>\n"; }

?>

Nota: Este código es valido si PHP se esta ejecutando en Windows. En caso de ejecutarse en Linux sustituir:
Código PHP:

$executa "c:\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd"

por:
Código PHP:

$executa "/mysql/bin/mysqldump -u $usuario --password=$passwd --opt $bd"

**Las rutas indicadas son hacia la correspondiente ubicación física de mysqldump (o mysqldump.exe) en sus sistemas ...

Si se desea que el archivo generenado ($fichero.sql) lo queremos dejar en el propio servidor (por ejemplo para hacer backups de esa BD Mysql automaticos lanzados por algun script nuestro ...) usar (en lugar de la anterior $executa): (notese el > $fichero )

Código PHP:

$executa "c:\\mysql\\bin\\mysqldump.exe -u $usuario --password=$passwd --opt $bd > $fichero"

Y .. quitar las cabeceras header() q se usan (todas).

Manoloweb 05/04/2003 21:15

Tema: Numeros
Pregunta: ¿Como convierto un número a una cadena de texto que lo represente (p.e.- 2,115 = Dos mil ciento quince)?
Respuesta: Utiliza el siguiente código (instrucciones para usarlo al final del post)


1.- Guarda esta función en un archivo, por ejemplo numeros.inc
Código PHP:

<?

function numerotexto ($numero) {
    
// Primero tomamos el numero y le quitamos los caracteres especiales y extras
    // Dejando solamente el punto "." que separa los decimales
    // Si encuentra mas de un punto, devuelve error.
    // NOTA: Para los paises en que el punto y la coma se usan de forma
    // inversa, solo hay que cambiar la coma por punto en el array de "extras"
    // y el punto por coma en el explode de $partes
    
    
$extras= array("/[\$]/","/ /","/,/","/-/");
    
$limpio=preg_replace($extras,"",$numero);
    
$partes=explode(".",$limpio);
    if (
count($partes)>2) {
        return 
"Error, el n&uacute;mero no es correcto";
        exit();
    }
    
    
// Ahora explotamos la parte del numero en elementos de un array que
    // llamaremos $digitos, y contamos los grupos de tres digitos
    // resultantes
    
    
$digitos_piezas=chunk_split ($partes[0],1,"#");
    
$digitos_piezas=substr($digitos_piezas,0,strlen($digitos_piezas)-1);
    
$digitos=explode("#",$digitos_piezas);
    
$todos=count($digitos);
    
$grupos=ceil (count($digitos)/3);
    
    
// comenzamos a dar formato a cada grupo
    
    
$unidad = array   ('un','dos','tres','cuatro','cinco','seis','siete','ocho','nueve');
    
$decenas = array ('diez','once','doce''trece','catorce','quince');
    
$decena = array   ('dieci','veinti','treinta','cuarenta','cincuenta','sesenta','setenta','ochenta','noventa');
    
$centena = array   ('ciento','doscientos','trescientos','cuatrocientos','quinientos','seiscientos','setecientos','ochocientos','novecientos');
    
$resto=$todos;
    
    for (
$i=1$i<=$grupos$i++) {
        
        
// Hacemos el grupo
        
if ($resto>=3) {
            
$corte=3; } else {
            
$corte=$resto;
        }
            
$offset=(($i*3)-3)+$corte;
            
$offset=$offset*(-1);
        
        
// la siguiente seccion es una adaptacion de la contribucion de cofyman y JavierB
        
        
$num=implode("",array_slice ($digitos,$offset,$corte));
        
$resultado[$i] = "";
        
$cen = (int) ($num 100);              //Cifra de las centenas
        
$doble $num - ($cen*100);             //Cifras de las decenas y unidades
        
$dec = (int)($num 10) - ($cen*10);    //Cifra de las decenas
        
$uni $num - ($dec*10) - ($cen*100);   //Cifra de las unidades
        
if ($cen 0) {
           if (
$num == 100$resultado[$i] = "cien";
           else 
$resultado[$i] = $centena[$cen-1].' ';
        }
//end if
        
if ($doble>0) {
           if (
$doble == 20) {
              
$resultado[$i] .= " veinte";
           }elseif ((
$doble 16) and ($doble>9)) {
              
$resultado[$i] .= $decenas[$doble-10];
           }else {
              
$resultado[$i] .=' '$decena[$dec-1];
           }
//end if
           
if ($dec>and $uni<>0$resultado[$i] .=' y ';
           if ((
$uni>0) and ($doble>15) or ($dec==0)) {
              if (
$i==&& $uni == 1$resultado[$i].="uno";
              elseif (
$i==&& $num == 1$resultado[$i].="";
              else 
$resultado[$i].=$unidad[$uni-1];
           }
        }

        
// Le agregamos la terminacion del grupo
        
switch ($i) {
            case 
2:
            
$resultado[$i].= ($resultado[$i]=="") ? "" " mil ";
            break;
            case 
3:
            
$resultado[$i].= ($num==1) ? " mill&oacute;n " " millones ";
            break;
        }
        
$resto-=$corte;
    }
    
    
// Sacamos el resultado (primero invertimos el array)
    
$resultado_invarray_reverse($resultadoTRUE);
    
$final="";
    foreach (
$resultado_inv as $parte){
        
$final.=$parte;
    }
    return 
$final;
}

?>


Para llamarlo, solo incluye el archivo y llama a la función con el numero que quieres convertir. Puede venir en formato numerico (12345.67) o como cadena ("$ 4,127.87")

Código PHP:

<?
include ("numeros.inc");
$ejemplo1=56424.21;
$ejemplo2="$ 6,125,652.11"

echo numerotexto($ejemplo1);
echo 
"<br>"
echo numerotexto($ejemplo2);

?>

NOTA: La parte de los decimales no esta siendo usada, pero esta disponible (dentro de la funcion) como $partes[1], sera muy sencillo tomarla y utilizarla si a alguien le sirve de algo

Saludos! :adios:

fran86 08/04/2003 05:17

Pregunta: ¿Como puedo mejorar el editor Maguma Studio usando PHP?

Requisitos: conexion a internet, php local.

Respuesta: utilizando quickref.txt de cvs.php.net y parseando el manual de php version html.

Ulilizando PHP con sus funciones para expresiones regulares es posible mejorar el editor para PHP Maguma Studio, de manera que:[list=1][*]El highlight (coloreado de texto) reconozca todas las funciones de PHP.[*]Que la ayuda contextual con los parametros para las funciones, y las "Funciones Nativas de PHP" (ToolBox>Class Browser) aparezcan en español! (la mayoria :-PP)[/list=1]

Para realizar el punto 1 debemos tener en cuenta que Maguma utiliza un archivo llamando php-funcs.dat (por defecto se encuentra en C:\Archivos de programa\Maguma Studio\Data\php-funcs.dat) para almacenar todas la funciones que serán coloreadas; entonces lo que haremos es "actualizar" este fichero con uno nuestro mas completo siguiendo estos pasos:[list=a][*] Guargar en nuestro disco el archivo http://cvs.php.net/cvs.php/phpdoc/quickref.txt?login=2 , que es la lista oficial de las funciones php con su descripcion.[*] Utilizar el siguiente código para crear un nuevo php-funcs.dat
Código PHP:

$quickrefdecvs "c:\\windows\\escritorio\\quickref.txt";  //Aqui hay que poner el path al quickref que bajamos de cvs.php.net
$nuevophp_funcs "c:\\windows\escritorio\\php-funcs.dat";  // Aqui se creara el nuevo php-funcs.dat
$lineas file($quickrefdecvs);

$fp fopen($nuevophp_funcs"w");
$patronascii "[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5];";  // esta es mi primera expresion regular que funciona bien (creo)
foreach( $lineas as $linea ) {
    
$linea trim($linea);
    
$linea substr($linea0strpos($linea" - "));
    if (
ereg("&#(".$patronascii.");"$linea$reg)) {
        
$linea str_replace($reg[0], chr(intval($reg[1])), $linea);
    }
    if (
next($lineas)) {
        
fputs($fp$linea."\n");
    } else {
        
fputs($fp$linea);
    }
}
fclose($fp);
echo 
"<big>Tu $nuevophp_funcs ahora tiene <b>".count($lineas)."</b> funciones :-P</big>"

[*] Reemplazar el archivo php-funcs.dat original por el que se acaba de crear.[/list=a]

Para realizar el punto 2 Maguma utiliza otro archivo llamado php-insight.dat (por defecto se encuentra en C:\Archivos de programa\Maguma Studio\Data\php-insight.dat) y en este caso lo actualizaremos a partir del manual oficial de PHP version single HTML en español. Para ello:[list=a][*] Bajar el manual de http://www.php.net/distributions/ma...ual_es.html.bz2 (esta comprimido con bz2 y si no sabes como abrirlo debes leer esto http://www.php.net/manual/en/faq.misc.php#faq.misc.bz2)[*] Aplicarle este codigo que parseará el HTML usando expresiones regulares y devolverá un nuevo php-insight.dat:
Código PHP:

$manualphp "C:\\windows\\escritorio\\php_manual_es.html"//path al manual de php
$maguma_php_insight "c:\\windows\\escritorio\\php-insight.dat"// lugar donde se creara el nuevo php-insight.dat

$ini time();

$fpm fopen($manualphp"r");
$lineas fread($fpmfilesize($manualphp));
$lineas str_replace("\n"""$lineas);

$fpi fopen($maguma_php_insight"w");

$patron '<H2>(Descripción|Description)</H2>([^<>]+)<(B CLASS|BCLASS)="methodname">([^<>]+)</B>([^<>]+)<';
$patronascii "[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5];";  // esta es mi primera expresion regular que funciona bien (creo)
while (ereg($patron$lineas$reg)){
    
$a++;
    
$lineas strstr($lineas$reg[0]);
    
$lineas substr($lineasstrlen($reg[0]));
    
$nuevaslineas[trim($reg[4])] = trim($reg[5]);
    
//echo nl2br("<b>$a: </b> $reg[2]<b>$reg[4]</b>$reg[5]\n");  //probar descomentar esta linea
    // if ($a >= 1000) break;                      // para test
}

uksort($nuevaslineas'strcasecmp');
foreach( 
$nuevaslineas as $clave => $valor ) {
    
$linea $clave.$valor;
    if (
ereg("&#(".$patronascii.");"$linea$reg)) {
        
$linea str_replace($reg[0], chr(intval($reg[1])), $linea);
    }
    if (
next($nuevaslineas)) {
        
fputs($fpi$linea."\n");
    } else {
        
fputs($fpi$linea);
    }
}
$fin time();
echo 
"<big>Despues de <b>";
echo 
date("i:s"$fin-$ini);
echo 
" minutos</b> se ordenaron y guardaron las $a referencias de funciones PHP en el archivo <b>$maguma_php_insight</b> !!</big>"

Debemos tener presente que, debido a que se utilizan expresione regulares y el manual es "pesado" (5 Mb aprox.) el proceso para lograr el punto 2 puede toman alrededor de 20 minutos con un procesador de 500Mhz.[*] Reemplazar el archivo php-insight.dat original por el que se acaba de crear.[/list=a]

Explicaciones para las expresiones regulares utilizadas:
  • El que esta definido en $patronascii casa con cualquier numero que esta dentro del rango 0 a 255 pues hay 4 opciones (las opciones se diferencian con la barra vertical |)
    Cualquier numero del 0 al 99:
    Código:

    [0-9]{1,2}
    Cualquier numero del 100 al 199:
    Código:

    1[0-9]{1,2}
    Cualquier numero del 200 al 249:
    Código:

    2[0-4][0-9]
    Cualquier numero del 250 al 255:
    Código:

    25[0-5]
  • El que esta definido en $patron se utiliza especificamente para recorrer el Manual HTML de PHP, por lo que para interpretarlo basta con ver el codigo fuente del mismo y compararlo con la ER.

Una version actualizada del php-funcs.dat se puede bajar de:
http://www.forosdelweb.com/attachment.php?postid=358063

Una version actualizada del php-insight.dat se puede bajar de:
http://www.forosdelweb.com/attachment.php?postid=373755

Saludos!

lubetpic 08/04/2003 11:49

Pregunta: Como generar una versión imprimible de una página html en PHP?

Requisitos: php4 o sup

Respuesta: aquí esta, esta en ingles pero es muy simple de entender, solo crea un archivo phpprint.php y pon el código adentro, lee las instrucciones y modifica lo que hay que modificar en tu página y listo :arriba:

Código PHP:

<?php 

/*PHPrint - This file is phprint.php
Make any Page Printer Friendly! Version 2.0 - With error handling
Copyright by MikeNew.Net, Notice must stay intact
Any improvements to this script are welcome: [url]www.mikenew.net/contact.asp[/url] 
************
Legal: MikeNew.Net is not responsible for any damages caused
by use of this script. (Not likely that it will. Hasn't yet.)
This script will make your pages printer friendly. 
Optionally, it will strip images as well. (Instructions for that below)

// After installation, you can remove text from here down to the next: 8< ---->
// Back up/copy this file first.

1. Save this script in the root of the site for simplicity.
2. Place <!-- startprint --> somewhere in your HTML page where you consider 
it to be the start of printer friendly content, and <!-- stopprint --> goes at the end
of that same content.
3. You place a link to phprint.php anywhere on the HTML page (preferably outside the printed content,
like this: <a href="/phprint.php">Print this page</a>
- or however you like, just as long as you link to this script. */

// If you've already tested, you can remove the text from here up to the other: 8< ---->

//Do you want to strip images from the printable output?
// If no, change to "no". Otherwise, images are stripped by default.
$stripImages "yes";

//what's the base domain name of your site, without trailing slash? 
// Just the domain itself, so we can fix any relative image and link problems.
$baseURL="http://www.yoursite.com"

// That's it! No need to go below here. Upload it and test by going to yoursite.com/page.php
// (The page containing the two tags and a link to this script)
// -----------------------------------------------------

$startingpoint "<!-- startprint -->";
$endingpoint "<!-- stopprint -->";
// let's turn off any ugly errors for a sec so we can use our own if necessary...
error_reporting(0);
// $read = fopen($HTTP_REFERER, "rb") ... this line may work better if you're using NT, or even FreeBSD
$read fopen($HTTP_REFERER"r") or die("<br /><font face=\"Verdana\">Sorry! There is no access to this file directly. You must follow a link. <br /><br />Please click your browser's back button. </font><br><br><a href=\"http://miracle2.net/\"><img src=\"http://miracle2.net/i.gif\" alt=\"miracle 2\" border=\"0\"></a>");
// let's turn errors back on so we can debug if necessary
error_reporting(1);

$value "";
while(!
feof($read)){
$value .= fread($read10000); // reduce number to save server load
}
fclose($read);
$startstrpos($value"$startingpoint"); 
$finishstrpos($value"$endingpoint"); 
$length$finish-$start;
$value=substr($value$start$length);

function 
i_denude($variable) {
return(
eregi_replace("<img src=[^>]*>"""$variable));
}
function 
i_denudef($variable) {
return(
eregi_replace("<font[^>]*>"""$variable));
}

$PHPrint = ("$value");
if (
$stripImages == "yes") {
$PHPrint i_denude("$PHPrint");
}

$PHPrint i_denudef("$PHPrint");
$PHPrint str_replace"</font>"""$PHPrint );
$PHPrint stripslashes("$PHPrint"); 

echo 
"<base href=\"$baseURL\">";

echo 
$PHPrint
// Next line is invisible except to SE crawlers, please don't remove. Thanks! :)
echo "<br><a href=\"http://miracle2.net/\"><img src=\"http://miracle2.net/i.gif\" ";
echo 
"alt=\"miracle 2\" border=\"0\"></a>";
echo 
"<br/><br/>This page printed from: $HTTP_REFERER";
flush (); 
?>


Cain 09/04/2003 03:31

Tema: Formato de texto

Pregunta: ¿Como puedo pasar un texto a mayúsculas/minúsculas?

Respuesta:

En el manual nos dirá que usemos strtoupper()/strtolower():

Código PHP:

<?
echo strtoupper("hola"); # HOLA
echo strtoupper("HOLA"); # hola
?>

Sin embargo:

Código PHP:

<?
echo strtoupper("hola tío"); # HOLA TíO
echo strtolower("HOLA TÍO"); # hola tÍo
?>

¿Como cambiamos la caja de los "carácteres extraños"?

Usando strtr()

Código PHP:

<?php
echo strtoupper("hola tío"); # HOLA TíO
echo strtolower("hola TÍO"); # hola tÍo

echo strtr(strtoupper("hola tío"), "àáâãäåæçèéêëìíîïðñòóôõöøùüú""ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ"); # HOLA TÍO
echo strtr(strtolower("HOLA TÍO"), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ""àáâãäåæçèéêëìíîïðñòóôõöøùüú"); # hola tío

?>

Si sólo queremos poner la primera letra en mayúsculas, usaremos ucfirst():

Código PHP:

<?
echo ucfirst(strtolower("HOLA TÍO")); # Hola tÍo
echo ucfirst(strtr(strtolower("HOLA TÍO"), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ""àáâãäåæçèéêëìíîïðñòóôõöøùüú")); # Hola tío
?>


urjose 10/04/2003 10:50

Tema: Formularios

Pregunta: ¿Como paso valores entre varios formularios?

Respuesta:

Notas importantes: Usar array Super globales y el atributo method de la etiqueta form debe ser "post" aunque si cambiamos $_GET y el atributo "get" en la etiqueta form tabien debe funcionar.

Veamos un ejemplo:

Formulario1:


Código PHP:

         <form name="formEmpresa" method="post" action="registro3.php">        
        <
table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
          <
tr
            <
td width="32%"><font size="2" face="Arial, Helvetica, sans-serif">Puesto:</font></td>
            <
td width="68%"><font size="2" face="Arial, Helvetica, sans-serif"
              <
input name="puesto" type="text" id="puesto" size="40" maxlength="40">
              </
font></td>
          </
tr>
          <
tr>
            <
td><font size="2" face="Arial, Helvetica, sans-serif">Email oficina:</font></td>
            <
td><font size="2" face="Arial, Helvetica, sans-serif">
              <
input name="emailOficina" type="text" id="fax" size="40" maxlength="60">
              </
font></td>
          </
tr>
        </
table>
            <
p align="center">
              <
input name="continuarEmpresa" type="submit" id="registrar" value="Continuar">
            </
p>
        </
form


2do formulario:

Código PHP:

         <form name="formEmpresa" method="post" action="registro4.php">
        <?
            
foreach( $_POST as $key => $value ) {
                echo 
"<input type='hidden' name='".$key."' value='".$value."'>";
            }
        
?>
        <table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr> 
            <td width="34%"><font size="2" face="Arial, Helvetica, sans-serif">Productos 
              que ofreces:</font></td>
            <td width="66%"><font size="2" face="Arial, Helvetica, sans-serif"> 
              <input type="text" name="nombre">
              </font></td>
          </tr>

        </table>
        <p align="center">
              <input name="continuarEmpresa" type="submit" id="registrar" value="Continuar">
            </p>
        </form>


Con lo anterior se iran creando campos hidden con todos los valores pasados del formulario 1 al 2. Y por ultimo en la ultima envio podemos recoger todos los valores con un simple $_POST["nombreCampo"]

Bueno es algo sencillo pero util, acabo de hacer esto para un portal y funciona muy bien

Saludos

drcyber 13/04/2003 12:28

Convertir el formato de las fechas en campos DATE en dia/mes/año
 
Tema: Bases de datos

Pregunta: ¿Como convertir el formato de las fechas en campos DATE a dia-mes-año?

Tenemos una tabla X, esa tabla contiene un campo DATE. Ese campo almacena una fecha mediante la función CURDATE. Esa función trabaja con el formato: año-mes-dia.

¿Cómo convierto el formato a: dia-mes-año cuando hago el echo()?

Respuesta: Sencillo. Simplemente hacemos un explode de la fecha y la dividimos justo por los guiones. De esa forma almacenamos cada una de las partes de la fecha en un array:

$var = explode('-',$variabledefecha);

Donde $variabledefecha corresponde a tu variable que contiene la fecha que queremos cambiar. Y luego, volvemos a unir el array en el orden dia-mes-año asi:

echo "$var[2]-$var[1]-$var[0]";

Y listo. El código completo queda asi:

$var = explode('-',$variabledefecha);
echo "$var[2]-$var[1]-$var[0]";

Otra forma sería usando una función propia de MySQL. Deberás crear un alias a tu campo y luego llamarlo por su alias. De esta forma:

$ssql = "SELECT DATE_FORMAT(campofecha,'%d/%m/%Y') as fechaok FROM tabla";
$result = mysql_query($ssql);

Donde fechaok es el alias de tu campofecha. Cuando vayas a hacer el echo() debes hacerlo por el alias ya formateada:

echo $row['fechaok'];

drcyber 14/04/2003 09:50

Insertar fecha actual en una tabla
 
Tema: Bases de datos

Pregunta: ¿Cómo inserto la fecha actual en uno de mis campos de mi BD?

Respuesta: Sencillo. Solo debes usar la función now(). Te quedaría asi:

$ssql = "INSERT INTO tabla (campo) VALUES (now())";
$rs = mysql_query($ssql);

:adios:

chikit-sv 21/04/2003 18:44

Como registro la Direccion IP, de las Pcs que ingresan a mi sitio Web....

Utilizamos la variable $REMOTE_ADDR en nuestro scripts, la cual recupera la Direccion IP de la computadora que esta ingresando a nuestro sitio Web y luego hacemos con ella lo que se nos venga en gana, podemos grabarla en un registro de nuestra base de datos para llevar un control de quienes y de donde nos visitan o como una forma de llevar auditoria en el acceso a una base de datos.

Manoloweb 30/04/2003 19:02

Esta podría haber estado al principio...

¿Como saber cuando algo es javascript y cuando es PHP?

Javascript trabaja en el lado del cliente, es decir, en el navegador del visitante a la página. Por lo tanto, todas las acciones que afecten la forma en que el navegador muestra la información, sucede gracias a javascript (o similares). Igualmente con aquellas acciones que van cambiando el contenido de la pagina SIN QUE ESTA SEA RECARGADA. Algunos ejemplos:

-Full Screen, o ventanas sin menus
-Relojes que muestran la hora de tu PC
-Menues que van cambiando de acuerdo a cierta seleccion, sin que la pagina sea recargada
-Roll-Overs (imagenes que cambian al pasar encima)
-Mensajes de alerta
-Cuadros de pregunta (aceptar/cancelar)
-Pop-ups (Abrir otras ventanas de explorador)
-Interactuar con dispositivos (imprimir, etc)
-Etc...

Saludos!

BVis 20/05/2003 18:01

Ordenar un array BIDIMENSIONAL por uno o varios campos (columnas).
 
Con esta función se puede ordenar un array BIDIMENSIONAL por uno o varios campos (columnas), tanto ascendentemente como descendentemente.

La forma de llamarla es:

Código PHP:

$array_ordenado ordenar_array($array_a_ordenarprimer_campo_por_el_que_ordenarasc_desc [,siguiente_campo_por_el_que_ordenarasc_desc]*) ; 

Donde $array_a_ordenar tiene la siguiente escructura:
Código PHP:

$array_a_ordenar[0]['nombre']='Ester Colero';
$array_a_ordenar[0]['telefono']='94727834';
$array_a_ordenar[0]['edad']=20;
$array_a_ordenar[0]['vivo']=true;

$array_a_ordenar[1]['nombre']='Pancho Colate';
$array_a_ordenar[1]['telefono']='93524864';
$array_a_ordenar[1]['edad']=24;
$array_a_ordenar[0]['vivo']=false

los campos se deben corresponder a alguna columna, [en el ejemplo: 'nombre', 'telefono', 'edad' y/o 'vivo'].
Así pues este caso, habría 4 posibles columnas por las que ordenar.

asc_desc puede valer o bien: SORT_ASC o bien SORT_DESC ¡SIN COMILLAS! pues son valores constantes.

La función devolverá FALSE en caso de que los parámetros no sean correctos. En caso contrario, obtendremos el array de entrada ordenadito, por tantos campos le hayamos indicado.

Código PHP:

function ordenar_array() {
  
$n_parametros func_num_args(); // Obenemos el número de parámetros
  
if ($n_parametros<|| $n_parametros%2!=1) { // Si tenemos el número de parametro mal...
    
return false;
  } else { 
// Hasta aquí todo correcto...veamos si los parámetros tienen lo que debe ser...
    
$arg_list func_get_args();

    if (!(
is_array($arg_list[0]) && is_array(current($arg_list[0])))) {
      return 
false// Si el primero no es un array...MALO!
    
}
    for (
$i 1$i<$n_parametros$i++) { // Miramos que el resto de parámetros tb estén bien...
      
if ($i%2!=0) {// Parámetro impar...tiene que ser un campo del array...
        
if (!array_key_exists($arg_list[$i], current($arg_list[0]))) {
          return 
false;
        }
      } else { 
// Par, no falla...si no es SORT_ASC o SORT_DESC...a la calle!
        
if ($arg_list[$i]!=SORT_ASC && $arg_list[$i]!=SORT_DESC) {
          return 
false;
        }
      }
    }
    
$array_salida $arg_list[0];

    
// Una vez los parámetros se que están bien, procederé a ordenar...
    
$a_evaluar "foreach (\$array_salida as \$fila){\n";
    for (
$i=1$i<$n_parametros$i+=2) { // Ahora por cada columna...
      
$a_evaluar .= "  \$campo{$i}[] = \$fila['$arg_list[$i]'];\n";
    }
    
$a_evaluar .= "}\n";
    
$a_evaluar .= "array_multisort(\n";
    for (
$i=1$i<$n_parametros$i+=2) { // Ahora por cada elemento...
      
$a_evaluar .= "  \$campo{$i}, SORT_REGULAR, \$arg_list[".($i+1)."],\n";
    }
    
$a_evaluar .= "  \$array_salida);";
    
// La verdad es que es más complicado de lo que creía en principio... :)

    
eval($a_evaluar);
    return 
$array_salida;
  }
}

// EJEMPLO DE USO:

// Otra manera de declarar un array bidimensional de estos...
$array_a_ordenar = array(
                 
=> array('campo1' => 'patatas''campo2' => 1'campo3' => 'kkkk'),
                 
=> array('campo1' => 'coles''campo2' => 3'campo3' => 'aaaa'),
                 
=> array('campo1' => 'tomates''campo2' => 1'campo3' => 'zzzz'),
                 
=> array('campo1' => 'peras''campo2' => 7'campo3' => 'hhhh'),
                 
=> array('campo1' => 'tomates''campo2' => 4'campo3' => 'bbbb'),
                 
=> array('campo1' => 'aguacates''campo2' => 3'campo3' => 'yyyy'),
         );

$array_ordenadito ordenar_array($array_a_ordenar'campo2'SORT_DESC'campo1'SORT_DESC) or die('<br>ERROR!<br>');

$array_ordenadito2 ordenar_array($array_a_ordenar'campo3'SORT_DESC'campo2'SORT_DESC'campo1'SORT_ASC ) or die('<br>ERROR!<br>'); 

Un saludo.

lical 25/05/2003 05:29

Tenía que resolver una necesidad que supongo que tienen muchas otras personas. Es, que los usuarios teclean texto que puede contener URLs, y estas URLs deben ser convertidas a enlaces. Otras condiciones eran que:

-La URL introducida podía después tener un intro, un tabulador, un espacio, o un paréntesis.

-Si la URL introducida pertenecía a un dominio externo al de la web en cuestión, éste debía abrirse en una nueva ventana, y si era una URL interna debía abrirse en la ventana actual.


Lo he resuelto así:
Código PHP:

<?php
  $texto 
str_replace("\r"""$texto);

  
$texto preg_replace("/(http:\/\/[^(\)|[:space:])]*)\)/",
    
"<a href=\"\\1\" target=\"_blank\">\\1</a>)",
    
$texto);

  
$texto preg_replace("/(http:\/\/[^([:space:]|\"|\<)]*)[[:space:]]/",
    
"<a href=\"\\1\" target=\"_blank\">\\1</a> ",
    
$texto);

  
$texto preg_replace("/\<a href=\"(.*zonasiete.*)\" target=\"_blank\"\>/",
    
"<a href=\"\\1\">",
    
$texto);

?>

En este caso, el dominio local es zonasiete.org. Espero que a alguien le sea útil. Por alguna extraña razón, no se muestra bien en mi post el code. Aclaraciones:

< ) -- ahí no hay un espacio, esos dos caracteres van seguidos.

\1 -- Todos los unos (1) van precedidos de doble barra invertida, aunque solo se muestra una.


Un saludo,

Cluster 25/05/2003 20:17

Tema: Seguridad

Créditos: Shaun Clowes (traducción Di Biase Jos‚ Luis). Aportado por mveraa

Artículo sobre seguridad bajo PHP.

Trata los siguientes temas:

1. Introducción
2. Caveats y Alcance
3. Variables Globales
4. Archivos Remotos
5. Upload de Archivo
6. Librer¡as
7. Sesiones
8. Array asociativos y otros
9. Funciones que hay que utilizar con cuidado
10. Protegiendose
11. Responsabilidad - Lenaguaje vs Programador
12. Otros

Formato .doc (MS Word) comprimido a .zip

drcyber 03/06/2003 21:59

¿Cómo hacer un extractor de e-mails?
 
Pues muy fácil...

En un textbox metemos la cadena de texto que queremos procesar y el script automáticamente extrae cualquier e-mail encontrado. Muy últil !!!

Código PHP:

<?php
//Verificamos si se introdujo alguna cadena
if (!isset($cadena)) {
    echo 
"Debe introducir una cadena de texto.";
} else {
   
stripslashes($cadena);

$regexp_email '[_a-z0-9\-]+(\.[_a-z0-9\-]+)*\@[_a-z0-9\-]+(\.[a-z]{1,4})+';
//Extraemos los e-mails que concuerden con la expresión regular
$encontrado preg_match_all ("/$regexp_email/i"$cadena$emparejadosPREG_SET_ORDER);
//Si se encuentra, no los muestra cada uno en una lista
    
if ($encontrado) {
        foreach (
$emparejados AS $i => $contenidoParentesis) {
            
printf ('Emparejamiento %d = <span class="emparejamiento">%s</span>' .
                
"<br />\n"$i$contenidoParentesis[0]);
        }
    } else {
        echo 
"No se encontró nada";
    }
}

echo <<< HTML

<html>
<head>
<title>Extractor de e-mails</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form method="post" action="">
  <textarea name="cadena" cols="120" rows="30"></textarea>
  <input type="submit" name="Submit" value="Procesar">
</form>
</body>
</html>

HTML;

?>

Eso es todo, insertar el texto y sacar e-mails.

Cluster 12/06/2003 01:38

Tema: Algoritmos/utilidades

Pregunta: ¿Cómo generar passwords aleatórios numéricos o alfanuméricos de longitud variable?

Respuesta:

Usando expresiones regulares y time() se pueden obtener dichos passwords aleatorios de una forma muy curiosa (por lo menos para mí xD). En el código se detalla como usa la función:

Código PHP:

<?php

// Uso/sintax:
// genera_password (longitud password en caracteres o digitos, [tipo=alfanumerico|numerico])
// Si no indicas $tipo se asume como por defecto alfanumerico.

function genera_password($longitud,$tipo="alfanumerico"){

    if (
$tipo=="alfanumerico"){
        
$exp_reg="[^A-Z0-9]";
    } elseif (
$tipo=="numerico"){
        
$exp_reg="[^0-9]";
    }
    
    return 
substr(eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())) .
       
eregi_replace($exp_reg""md5(rand())),
       
0$longitud);
}

//Ejemplo:
echo "Password: (alfanumérico) ".genera_password(8)."<br>";
echo 
"Password: (numérico) ".genera_password(15,"numerico")."<br>";
echo 
"(recarga la página para ver otros passwords aleatorios)";

?>

Un saludo,

pd: La forma de usar las expresiones regulares no la implementé yo .. Tan sólo lo adapté para funcionar como "función". No recuerdo de donde la saqué.
pd2: Mejora al la generación del código aleatório, por problemas si se ejecutaba dicha función en bucles bajo una ejecución de un mismo script. Se comentó el tema en este mensaje: http://www.forosdelweb.com/f18/generar-muchos-passwords-244253/ . Gracias a Jpinedo.

ProgramacionWeb 15/06/2003 19:33

Pregunta: ¿Como usar la funcion header() en cualquier parte de nuestro código incluso después de un echo?

Respuesta:
Pon antes de enviar ningín caracter ( donde pondrias un header() o una cookie ) el siguiente codigo:

Código PHP:

<?
ob_start
();
?>

Y al final de todo de tu pagina pon:

Código PHP:

<?
ob_end_flush
();
?>


lado2mx 15/06/2003 19:50

Pregunta: ¿Como puedo crear una interfase (o librería) de mi página en solo un archivo PHP?

Fuente: http://www.webestilo.com/php/php05b.phtml
Respuesta: Las funciones que tiene PHP, sirven para poner mas énfasis en lo que es la interacción de archivos, pero en realidad se puede jugar con ello de una manera sencilla.

Para usar una interfase estática, donde todo se pueda modificar mediante un archivo, es sencillo.

Un ejemplo sencillo es este:

Crea un archivo llamado interfase.php y pon lo siguiente:
Código PHP:

<?php 
   
function CabeceraPagina() 
   { 
?> <html> 
<head> 
   <title>Ejemplo de PHP</title> 
</head> 
<body>
   <FONT SIZE="+1">Esta cabecera estará en todas sus páginas.</FONT><BR> 
   <hr> 
<? 
   

    
   function 
PiePagina() 
   { 
?>    
   <hr> 
   <FONT SIZE="-1">Este es el pie de página.</FONT><BR> </body> 
</html>
<?    
   

?>

Ahora, crea un archivo llamado pagina.php, donde ahí se plasmará todo lo que está, tanto en pagina.php como en interfase.php:

Código PHP:

<?php include("interfase.php"?> 
<?php CabeceraPagina(); ?> 

Página 1 
<BR><BR><BR><BR><BR> 

Contenido blalbl blalb alb<BR><BR> 
más cosas...<BR><BR> 

fin<BR><BR> 

<?php PiePagina(); ?>

Estos pueden ser 100% ejecutables en Dreamweaver 4 en adelante, así que puedes experimentar con esto, para sacarle mas provecho, y con ello realizar un diseño uniforme y profesional a tu página.

Ademas, se puede poner tanto HTML como PHP, tales como conexiones a base de datos, ciclos, mas funciones, etc.

ProgramacionWeb 16/06/2003 21:25

Pregunta: ¿Como puedo poner el peso de la pagina?

Respuesta: Pon el siguiente código al principio de tu web.

Código PHP:

<?
ob_start
();
?>

Y este al final de tu web:

Código PHP:

<?
$despues 
212// Número de bytes después de echo round((( ....
echo 'Peso de esta página: ';
echo 
round(((ob_get_length()+$despues)/1024)*100)/100;
echo 
'kb';
ob_end_flush();
?>


e-miliox 20/06/2003 17:20

Tema: miscelaneo.
PreGunta: Como puedo medir el tiempo de ejecucion de mi script?.
Respuesta: Puedes usar esta class! :-D

introduccion:
El otro dia queria medir cuanto se demoraba en cargar una
pagina que estaba haciendo en PHP y luego de investigar un
poco decidi que lo mejor seria hacer un par de funciones para
calcular esto. Pero como las Classes estan de moda, mejor lo hice
en forma de clase y salio pretty.

Asi que aqui se los dejo, seguro que les servira para ponerlo en alguna pagina por ahi.

Código PHP:

<?php
/*
Class PHP que simula un cronometro, para medir el tiempo
de carga de una pagina, por ejemplo.

Toma el tiempo desde el momento que es instanciado (new cronometro())
y dispone de un metodo para "parar" el cronometro y devolver el tiempo
desde la creacion de la instancia hasta que se invoca este metodo.

Autor: e-milio
*/
Class cronometro {
    var 
$comienzo;
    
// me devuelve un tiempo en segundos y milisegundos
    
function _getmicrotime() {
        
        list(
$_milisegundos$_segundos) = explode(" "microtime());
        
        return ((float)
$_milisegundos + (float)$_segundos);
    }

    
// constructor cronometro
    
function cronometro() {
        
        
$this->comienzo $this->_getmicrotime();
        
        return 
true;
    }

    
// para el cronometro y devuelve el tiempo
    // se puede dar una salida formateada a traves de los parametros.
    // 
    // Si $formatear esta a verdadero entonces devolvera cuantos segundos
    // se demoro con $nroDecimales decimales (milisegundos).
    
function stop($formatear false$nroDecimales 0) {
        
        
$_tiempo $this->_getmicrotime() - $this->comienzo;
        
        return (
$formatear) ? number_format($_tiempo$nroDecimales',''.') : $_tiempo;
    }
}
?>

Entonces, para utilizar esto, puedes copiar este codigo y ponerlo
en algun archivo independiente (para que lo uses como include
cuando lo necesites)

yo lo hago de esta manera:

Código PHP:

<?php
// aca tengo escrita la clase
include "cronometro.php" 

$casio = new cronometro();

// hacemos un bucle mas o menos que tome un tiempo, si no
// se nota mucho, podemos subir a mas de 10000 
// (sin exagerar eh? xD)
for ($i $i <= 10000 $i++)
{
   
// hacer nada
}

echo 
"segun mi reloj, este script se demoro " $casio->stop(true2) . " segundos en su ejecucion";

?>



EOF

kech 20/07/2003 23:57

Tema: Reconocer el idioma del visitante

Pregunta: Como puedo configurar mi pagina para diferentes idiomas

Respuesta: Con HTTP_ACCEPT_LANGUAGE


Código PHP:

if(empty($sitelang)){ //primero preguntamos si la variable que va a contener el lenguage del visitante esta vacia
      
$sitelang getenv("HTTP_ACCEPT_LANGUAGE"); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $sitelang
      
}
switch(
$sitelang){ //ahora cargamos el archivo que contiene el idioma segun la varible que sacamos antes
          
case "es" //es = español 
             
include("./lang/lang-esp.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
             
break;
          case 
"en" //en = ingles 
             
include("./lang/lang-eng.php");
             break;
          default :
             include(
"./lang/lang-esp.php"); //cargamos un idioma por defecto si no se encontro algun idioma 
             
break;
       } 


ahora el archivo que contiene las palabras con sus traducciones

lang-esp.php
Código PHP:

<?php
define
('_LOGIN','Logeado');//lo definimos con una palabra que todos los archivos de lenguage tienen que tener para definir la funcion que cumple, despues la palabra que lo va a remplazar
define('_REGISTER','Registrarce');
define('_HELO','Hola');
define('_ACCEPT','Aceptar');
define('_ACCESS_ADD','Añadir');
?>


y para poner la palabra que definimos anteriormente

Código PHP:

<?
echo _REGISTER;//esto pondria en pantalla Registrarce
?>

notece que las palabras que definimos hay que tratarlas como variables ejemplo para poner una palabra que definimos en alguna frace seria haci

echo "hola esta un una prueba para mostrar registrado en tu idioma "._REGISTER." bla bla";


un listado de palabras listas para copiar pegar en sus archivos las pueden sacar de las aplicaciones prefabricadas ( quien decia que no servian para nada xD xD) como por ejemplo postnuke ya que ocupa la misma forma para el archivo de lenguage

salu2 :adios:

MSDark 23/07/2003 23:30

Thumbnails
 
Tema: Imagenes
Pregunta: Como creo thumbnails de mis imagenes?
Respuesta Con las funciones de imagen de la libreria GD en esta simple funcion

Código PHP:

function thumbnail($file,$dir,$ancho=100,$alto=100,$gif_support=false)
{
    if(!
file_exists($file)){
        return 
false;
    }
    if(!
is_dir($dir)){
        return 
false;
    }
    
$final = (int) strlen($file) - 4;
    
$nombre strtolower(substr($file,0,$final));
    
$ext strtolower(substr($file,-4,4));
    
$nombre $nombre.$ext;
    
$mini $dir."/mini_".$nombre;
    if(
$ext==".jpg" || $ext==".jpeg"){
        
$origen  imageCreateFromJPEG($file);
        
$imgAnchoimageSx($origen);
        
$imgAlto imageSy($origen);
        
$imagen  imageCreate($ancho,$alto);
        
ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
        
imageJPEG($imagen,$mini);
    }else if(
$ext==".png"){
        
$origen  imageCreateFromPNG($file);
        
$imgAnchoimageSx($origen);
        
$imgAlto imageSy($origen);
        
$imagen  imageCreate($ancho,$alto);
        
ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
        
imagePNG($imagen,$mini);
    }else if((
$gif_support==true) && ($ext==".gif")){
         
$origen  imageCreateFromGIF($file);
        
$imgAnchoimageSx($origen);
        
$imgAlto imageSy($origen);
        
$imagen  imageCreate($ancho,$alto);
        
ImageCopyResized($imagen,$origen,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);
        
imageGIF($imagen,$mini);
    }else{
        return 
false;
    }
    return 
true;


Como usarla?

Sencillo, le pasas a la funcion el nombre del archivo y el directorio en que quieres que queden creadas las thumbnails.
En forma de opcion esta que le pases el alto y ancho que por defecto es 100 de ancho y de alto.

Tambien si tu libreria GD soporta gifs le pasas true a la opcion de gif.
Código PHP:

thumbnail$file $dir , [$ancho 100] , [$alto 100] , [$gif_support=false] ); 


Ejemplo de uso

Código PHP:

if(!thumbnail("imagen.png","./thumbnails",80,80)){
    echo 
"error en creacion de thumbnails";
}else{
    echo 
"Creacion exitosa";


Recordar que esta funcion crea los thumbnails en un directorio especificado.

Saludos

abdel rahman 30/07/2003 09:50

Prev and Next
 
Pregunta: Cómo puedo crear un sistema prev and next con manejo de errores.

Respuesta: La clave se encuentra en un comando de sql.

Creador: Abdel Rahman.

Script:

Código PHP:


<?

/* Ruta donde se encuentra el archivo
que contiene la dirección de email a
donde se reportarán errores si estos
suceden */

$rutaemail "email.php"
include(
$rutaemail);  
 

/* Ruta donde se encuentra el archivo
donde se realiza la conexión a la
base de datos */
 
$rutadeacceso "usuario.php";  
include(
$rutadeacceso);  
 
$basededatos "nombredelabasededatos"// Nombre de la Base de Datos  

if ($resultadoconnect != 0)
    {
    
$resultadoselectdb = @mysql_select_db("$basededatos"$vinculo);
    if (
$resultadoselectdb != 0)
        {
        
$numero 10// Número de resultados listados, si se quieren ver 20 resultados sólo se cambia el valor de 10 a 20.
        
if ( $v_next == 0)
        
$v_next 0;

        
$tabla "nombredelatabla";
                
$elcampo "nombredelcampo";
        
$sql "select * from $tabla where $elcampo like '%$palabraclave%' LIMIT ".$v_next.",".$numero.""// $palabraclave es la variable que recibe.

        
$resultadoquery= @mysql_query($sql);

        if (
$resultadoquery != 0)
            {
            if (
$fila = @mysql_fetch_array($resultadoquery))  
                {
                                echo 
"<html><body>";
                echo 
"<table border='1' align='left' cellspacing='2' cellpadding='2'>";
                echo 
"<tr><td><b>Resultados</b></td></tr>";
                do
                    {
                    echo 
"<tr><td>";
                    echo 
$fila["nombredelcampo"]; // Campo de la tabla que se quiere mostrar.
                    
echo "<td></tr>";
                    
$v_next++;
                    }
                while(
$fila = @mysql_fetch_array($resultadoquery));

                
$sql2 "select count(*) num_reg from $tabla where $elcampo like '%$palabraclave%'"// Averiguate para que sirve el count(*). 
                
$resultadoquery2=@mysql_query($sql2);
                
$fila2 = @mysql_fetch_array($resultadoquery2);
                
$num_reg $fila2["num_reg"];

                
$num_pag $num_reg/$numero;
                
$j 1;
                
$v_next 0;

                echo 
"<tr><td>&nbsp;</td></tr>";
                echo 
"<tr><td>N&uacute;mero de Resultados: <b>$num_reg</b></td></tr>";
                echo 
"<tr><td>&nbsp;</td></tr>";
                echo 
"<tr><td>";
                for (
$i=0$i<$num_pag$i++)
                    {
                    echo 
" | <a href=$PHP_SELF?v_next=".$v_next."&palabraclave=".$palabraclave.">".$j."</a>";
                    
$j++;
                    
$v_next += $numero;
                    }
                echo 
"</td></tr>";
                echo 
"</table>";

                @
mysql_free_result($resultadoquery);
                }
            else
                {
                echo 
"<p align='center'>No se encontraron registros</p>";
                }
            }
        else
            {
            echo 
"<p align='center'>Ha ocurrido un error!, Fall&oacute; operaci&oacute;n SQL</p>";
            
// Reportar al webmaster del error
            
error_log("Ha ocurrido un error!\n\nFalló operación SQL en la tabla: $tabla, base de datos: $basededatos.\nScript: nombredelscript.php"1"$email");
            }
        }
    else
        {
        echo 
"<p align='center'>Ha ocurrido un error!, Fall&oacute; la selecci&oacute;n de la base de datos</p>";
        
// Reportar al webmaster del error.
        
error_log("Ha ocurrido un error!\n\nFalló la selección de la base de datos: $basededatos.\nScript: nombredelscript.php"1"$email");
        @
mysql_close($vinculo);
        }
    }
else
    {
    echo 
"<p align='center'>Ha ocurrido un error!, Fall&oacute; la conexi&oacute;n a la base de datos</p>";
    
// Reportar al webmaster del error.
    
error_log("Ha ocurrido un error!\n\nFalló la conexión a la base de datos: $basededatos.\nScript: usuario.php"1"$email");
    }
        echo 
"</body></html>";
?>


Cotenido del archivo email.php


Código PHP:


<?

$email 
"[email protected]";

?>


Cotenido del archivo usuario.php

Código PHP:


<?

// Nombre de host
$host "localhost";

// Nombre del Usario
$usuario "nombredelusuario";

// Clave de Acceso del Usuario
$clave "clavedelusuario";

$vinculo = @mysql_pconnect ("$host""$usuario""$clave");

if (
$vinculo != 0)
    {
    
$resultadoconnect 1;
    }
else
    {
    
$resultadoconnect 0;
    }

?>


Nota: Este script tiene manejo de errores y presenta los resultados y los números de las páginas, si pueden realizarle mejoras por favor ponerlo nuevamente en este foro.

lado2mx 13/08/2003 11:08

Pregunta ¿Puedo combinar HTML con PHP, y con ello diseñarlo con Dreamweaver?

Respiesta SI, y que no te engañen.

Por ejemplo:
Si queremos desplegar un simple número, no necesitamos hacer una instrucción de puro PHP para desplegar algo que se puede hacer con una mejor combinación:

Código PHP:

<?  echo "<tr><td>&nbsp;</td></tr>";
                echo 
"<tr><td>N&uacute;mero de Resultados: <b>$num_reg</b></td></tr>";
                echo 
"<tr><td>&nbsp;</td></tr>";
                
?>

En vez de tantos echos en esta instrucción, mejor uno.

Código PHP:

<tr><td>&nosp;</td></tr>
 <tr><td>N&uacute;mero de resultados: <b><? echo $num_reg?></b></td></tr>
 <tr><td>&nbsp;</td></tr>

Mas simple y mas facil. Además que se puede revisar si existe un error en síntaxis, con solamente saber donde esta el error, buscando en una sola linea en PHP, en vez de buscarlo en varias lineas en PHP.

Ahh claro, y tambien se aplica en enlaces con variables GET:

Código PHP:

 <a href="?seccion=noticias&id=<? echo $variable?>" CLASS="nu">
      <font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif">- 
      <? echo $texto;?></font> </a>

Mejor, ¿no?

vic_mx 28/08/2003 01:51

Tema Fechas
Pregunta ¿Como veo la la fecha y hora del servidor?
Respuesta Con este sencillo script

Código PHP:

<?
/*  sube este fichero a tu sitio 
   y llamalo utilizando este include
   <? include ("date.php"); ?> en la parte
   que quieras que se visualize la 
   fecha y hora en tu web */

//Variable nombre del mes
$nommes = array("Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre");

//variable nombre día
$nomdia = array("Domingo""Lunes""Martes""Miercoles""Jueves""Viernes""Sabado");

/* date(j) toma valores de 1 al 31 segun el dia del mes
date(n) devuelve numero del 1 al 12 segun el mes
date(w) devuelve 0 a 6 del dia de la semana empezando el domingo
date(Y) devuelve el año en 4 digitos */

$dia date(j); //Dia del mes en numero
$mes date(n); //Mes actual en numero
$diasemana date(w); //Dia de semana en numero

$hoy $nomdia[$diasemana].", ".$dia." de ".$nommes[$mes-1]." del ".date(Y).", ".date(h).":".date(i);

echo 
$hoy;

?>

Facil, ¿no?

Kernellover 17/09/2003 13:31

Generar passwords de calidad
 
P: ¿Como genero un password?

Para generar un password aleatorio de forma rápida podemos usar las funciones md5() junto con rand() tal como sigue.

Código PHP:

$caracteres 8// numero de caracteres a visualizar
$random_pass substr(md5(rand()),0,$caracteres);
echo 
$random_pass // imprime el password 

P: ¿Como genero un password facil de memorizar?

Primero habría que definir el concepto 'fàcil de memorizar', yo entiendo por facil ajikomufi y no jkimlhidt. Este sencillo escript genera un a cadena de caracteres formados por vocal consonante vocal o consonante vocal consonante, de este modo el password es leible y como consecuencia, fácil de memorizar.

Ahí va la función, la cual debería estar al inicio de todo de vuestra página junto con las demás funciones definidas.
Código PHP:

function f_genera_psw($num=8){ // By Kernellover
    
$voc = array ("a","e","i","o","u");
    
$con = array ("b","c","d","f","g","h","j","k","l","m","n","ñ","p","q","r","s","t","w","x","y","z");
    
$psw "";                // cadena que contendrá el password.
    
$vc  mt_rand(0,1);    // definde si empieza por vocal o consonante.
    
for ($n=0$n<$num$n++){
        if (
$vc==1){
            
$vc=0;
            
$psw .= $con[mt_rand(0,count($con)-1)];
        }
        
$psw .= $voc[mt_rand(0,count($voc)-1)];
        
$psw .= $con[mt_rand(0,count($con)-1)];
    }
    
$psw ereg_replace ("q","qu",$psw);
    
$psw ereg_replace ("quu","que",$psw);
    
$psw ereg_replace ("yi","ya",$psw);
    
$psw ereg_replace ("iy","ay",$psw);
    
$psw substr($psw,0,$num);
    return 
$psw;


Para llamar a la función se puede hacer así, saliendo impresos 8 caracteres (por defecto)
Código PHP:

echo f_genera_psw(); // imprime el password (8 caracteres por defecto) 

Para poner otra cantidad distinta de caracteres, solo hay que pasarlo como parametro así.
Código PHP:

echo f_genera_psw(6); // imprime 6 caracteres de password 

Espero que os sea de utilidad esta función que he creado.
Suerte!

Kernellover 17/09/2003 13:49

Pregunta: ¿Como calculo el tiemp que tarda una pagina en generarse?
Respuesta: Copiando este ejemplo y haciendo algunas pruevas.
Código PHP:

<?php
$T_inicio 
microtime();
?>
<html>
<head>
<title>Calculo de tiempo</title>
</head>
<body>
.... aquí van los scripts de PHP con sus consultas a la base de datos, los accesos a ficheros, bucles, codigo html, lo que sea que haga relentizar la generación del documento ...
<br>
<br>
<hr>
Página generada en <?php echo substr(microtime() - $T_inicio,0,5); ?> segundos. 
</body>
</html>

Suerte!!

ferent 19/09/2003 05:36

Pregunta: Generar la misma Cookie en www.dominio.com / dominio.com / sub.dominio.com...

Pues (como dicen todos) fácil!!

Al crear la cookie definimos el nombre del domino al que pertenece sin las "www" ni semejantes:

Código PHP:

<?php
//observad la "/" que sirve para llamar directamente al nombre de dominio
//y no a una subcarpeta. Si no lo pusiéramos la cookie se llamaría:
//midominio.com.midominio.com. 
//el "0" sirve para indicar si es 1 solo se envia la cookie por HTTPS, si es 0 por HTTP y HTTPS
setcookie("micookie""valor"time()+10000"/"".midominio.com"0);
?>


drcyber 20/09/2003 09:46

Tema: E-mails
Pregunta: ¿Cómo hacer que el "mensaje" de un e-mail se encuentre en un archivo .php?
Respuesta: A mi me costó mucho hacerlo, pero gracias a Cluster, josemi y epplestun todo se hace asi :

Nuestro problema consistía en meter la variable "$mensaje" de la función mail() en un archivo llamado "mensaje.php" y lograr que PHP interpretara el código que dicho archivo llevaba internamente:

Código PHP:

mail($admin,"ASUNTO",$mensaje,"Content-Type: text/html; charset=iso-8859-1\nFROM: DRCYBER <$usuario>"); 

Primero, creas la siguiente función:

Código PHP:

function send($var,$row) {
    
ob_start();
    include(
"$var");
    
$mensaje ob_get_contents();
    
ob_end_clean();
    return 
$mensaje;


Y sencillamente, modificas tu función mail() asi:

Código PHP:

mail($admin,"ASUNTO",send(mensaje.php,$row),"Content-Type: text/html; charset=iso-8859-1\nFROM: DRCYBER <$usuario>"); 

Listo!. Ahora podrás mandar mensajes dinámicos llamando datos desde una BD o desde $_POST y $_GET.

NOTA: $row es el array que usas para llamar los campos de tu BD, pej: $row[usuario], $row[contrasena], $row[email], etc.

drcyber 20/09/2003 10:02

Tema: Imágenes
Pregunta: ¿Cómo hacer un catálogo de imágenes automáticamente?
Respuesta: Sencillo, solo debes almacenar las imagenes de la carpeta en un array y luego paginarlos, todo queda asi:

Primero, activamos el objeto dir() y saltamos los dos primeros elementos simbólicos "." y "..".

Código PHP:

$path="imagenes/loquesea";
$directorio dir($path);
$directorio->read(); 

Luego metemos todos los nombres de las imágenes en un array llamado $imagen y cerramos el objeto dir():

Código PHP:

while($entrada $directorio->read()){
    
$a++;
    
$imagen[$a] = $entrada;
}
$directorio->close(); 

Ahora contamos cuantas páginas dará como resultado la cantidad de imágenes usando la función ceil() que redondea al numero por encima del decimal, tomando en cuenta que usaremos 100 imágenes por página:

Código PHP:

$paginas ceil($a/100); 

Si el número de página no esta definida o no hemos seleccionado ninguna página, entonces toma por defecto "1".

Código PHP:

if(!isset($page)){
    
$page "1";


Calculamos en qué página nos encontramos, para asi saber desde donde debe comenzar a imprimirse las imágenes:

Código PHP:

$o 100*($page-1); 

Luego imprimimos las imágenes en una tabla, 10 por fila y 10 por columna:

Código PHP:

for ($i=1$i<=10$i++){
    echo 
"<tr align=\"center\">";
    for (
$e=1$e<=10$e++){
        
$o++;
        echo 
"<td><img src=\"".$path."/",$imagen[$o]."\"></td>"
    }
    echo 
"</tr>";


Ahora, donde quieras poner los links a las páginas colocas:

Código PHP:

for ($u=1$u<=$paginas$u++){
    echo 
"<a href=\"catalogo.php?&page=".$u."\">".$u."</a>  ";


Eso es todo, juntas todo eso y listo. Tienes un catálogo de imágenes simplemente escribiendo unas cuantas líneas!!!

lubetpic 29/09/2003 09:28

Tema: Imagenes
Pregunta: Como rotar una imagen una vez al dia?
Agradecimientos a: Nuevo
Respuesta:

aqui esta la rotación diaria o mensual, es cuestión de adaptarlo y puede hacer cualquier otra cosa
Código PHP:

<?
    
$numero_del_dia 
date("w"); //saco el dia de hoy en formato numero

switch ($numero_del_dia) { //hacemos los casos
                             
   
case 0$dame_dias "0"; break;//domingo
   
case 1$dame_dias "1"; break;//lunes
   
case 2$dame_dias "2"; break;//martes
   
case 3$dame_dias "3"; break;//miercoles
   
case 4$dame_dias "4"; break;//jueves
   
case 5$dame_dias "5"; break;//viernes
   
case 6$dame_dias "6"; break;//sabado
}


$meses_ingles date("F"); //saco el mes 

switch ($meses_ingles) { // hacemos los casos
                
  
case "January"$dame_meses "1"; break;//enero
  
case "February"$dame_meses "2"; break;
  case 
"March"$dame_meses "3"; break;
  case 
"April"$dame_meses "4"; break;//abril
  
case "May"$dame_meses "5"; break;
  case 
"June"$dame_meses "6"; break;
  case 
"July"$dame_meses "7"; break;//julio
  
case "August"$dame_meses "8"; break;
  case 
"September"$dame_meses "9"; break;
  case 
"October"$dame_meses "10"; break;
  case 
"November"$dame_meses "11"; break;
  case 
"December"$dame_meses "12"; break;//diciembre
  
}

 
$name_image "images/NOMBRE_".$dame_dias.".jpg"//creamos la url 

echo "<img src=$name_image border=0>"//mostramos la imagen del dia de hoy
                        
 
echo "<br><br>";

$name_image "images/NOMBRE_".$dame_meses.".jpg"//creamos la url 

echo "<img src=$name_image border=0>"// mostramos la imagen de este mes

?>


Jordi1 09/10/2003 19:55

Tema: Salto de linea.

Pregunta: Como forzar un salto de linea cuando no hay \n
o bien formatear un texto con una cantidad de caracteres predefinidos

Respuesta: A veces nos encontramos que en n textarea
nos ponen muchos caracteres seguidos o bien muchos saltos de linea, o quizas queremos sacar el texto de un archivo con lineas
muy largas y la funcion nl2br() no nos va del todo bien.

Pues con esta " funcionciolla" evitamos estos problemas

Código PHP:


//$texto el texto a formatear, $max cantidad de caracteres a cortar cada linea

function br($texto$max)
{      
     if(
strlen($texto) > $max
//si el texto tiene mas de los caracteres que le indicamos con la variable $max
       

         
$texto wordwrap($texto,$max,"<br>",1);
//nos lo corta a la cantidad de caracteres indicado
       
}
        else 
$texto=$texto;
// si no llega a los caracteres incicado, pues lo deja tal cual
        
return $texto;      


espero que os sirva

Manoloweb 17/10/2003 14:19

Tema: Fecha en español

PARA PONER LA FECHA EN ESPAÑOL IGUAL QUE CON DATE()

Pues yo aqui les comparto una funcion que hice para usar la función date(); con formato en español...

Se usa IGUALITO que date, solo que con la ventaja de que el input puede ser en formato de fecha de MySQL (20031016) o un time (mktime) o nada (), y el formato sigue las mismas reglas que la función date();

Código PHP:

function date_es($formato="F j, Y",$fecha=0) {
    if (
ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})"$fecha,$partes)) {
        if (
checkdate($partes[2],$partes[3],$partes[1])) {
            
$fecha=strtotime($fecha);
        } else {
            return(-
1);
        }
    } elseif (
$fecha==0) {
        
$fecha=time();
    }
    
$dias=array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado");
    
$dias_c=array("Dom","Lun","Mar","Mie","Jue","Vie","Sab");
    
$meses=array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
    
$meses_c=array("","Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic");

    
$valores=explode("|",date ("a|A|B|d|D|F|g|G|h|H|i|I|j|l|L|m|M|n|O|r|s|S|t|T|U|w|W|Y|y|z|Z",$fecha));
    
$claves= array ("a","A","B","d","D","F","g","G","h","H","i","I","j","l","L","m","M","n","O","r","s","S","t","T","U","w","W","Y","y","z","Z");
    for (
$i=0;$i<count($claves);$i++) {
        
$conv[$claves[$i]]=$valores[$i];
    }
    
$conv["D"]=$dias_c[$conv["w"]];
    
$conv["l"]=$dias[$conv["w"]];
    
$conv["F"]=$meses[$conv["n"]];
    
$conv["M"]=$meses_c[$conv["n"]];
    
$conv["r"]=$conv["D"].", ".$conv["d"]." ".$conv["M"]." ".$conv["Y"]." ".$conv["H"].":".$conv["i"].":".$conv["s"]." ".$conv["O"];
    
$conv["S"]="o";
    
$escape='\\\\\\';
    
$escapado=0;
    
$f=$formato;
    
$res="";
    for (
$t=0;$t<strlen($formato);$t++) {
        if (
$escapado==1) {
            
$res.=$f{$t};
            
$escapado=0;
        } else {
            if(
$f{$t}==$escape) {
                
$escapado=1;
            } else {
                if (isset(
$conv[$f[$t]])){
                    
$res.=$conv[$f[$t]];
                } else {
                    
$res.=$f{$t};
                }
            }
        }
    }
    return 
$res;



mapper 19/10/2003 15:28

Comodidad...
 
Tema: Condicionales
Pregunta: ¿Como combino html y php en un condicional?
Respuesta:
Existe un pequeño truco para poder usar html dentro de un condicional.
Ejemplo:
Código PHP:

<?php 
if ("$variable"!=1){ // con esto iniciamos el condicional 
?> 
<!-- una pequeña etiqueta html --><br>
<?php //una de php
echo "Hola";
?>

<?php } else { ?>

<!-- una pequeña etiqueta html --><hr>
<?php //una de php
echo "chau";
?>
<?php 
?>

MaPPeR
si crees que sabes poco no me conoces...

Cluster 26/10/2003 02:15

Tema: Formularios

Pregunta: Como gestionar acciones a los registros seleccionados con checbox (estilo web-mails tipo Hotmail).

Respuesta:

La técnica se basa en crear arrays (arreglos, matrices ..) desde el nombre de los checkbox que vamos a usar. De esta forma, agrupamos conjuntos de checkbox relacionados, quedando de esta forma para PHP un array con el nombre que definamos en el tag name= del objeto de formulario <input type="checkbox" ...>

Para ello, se usa como nombre del checbox:
name="nombre_checbox[]"

El [] indica que estamos creando un array de indice automático y que comienza por 0. A cada llamada de ese <input> de checbox se gerará un nuevo indice.

A su vez, en el <input> de checbox, definimos un value= de valor igual al valor que queremos que tome cuando esté seleccionado.

A todo esto, debemos englobarlo todo en un tag de furmulario común, quedando algo así:

formulario.html
Código PHP:

<form action="script.php" method="post">
  
<input type="checkbox" name="seleccion[]" value="1">
  
<input type="checkbox" name="seleccion[]" value="2">
  
<input type="checkbox" name="seleccion[]" value="3">
<
input type="submit" name="Submit" value="Enviar">
</
form

Así, en "script.php" recibiremos un array de nombre variable $seleccion (o mejor por $_POST['seleccion']) .. como array que es lo puedes recorrer con cualquier tipo de bucle (recomendable un foreach()). Ejemplo:

script.php
Código PHP:

foreach ($_POST['seleccion'] as $id){
   echo 
$id."<br>";


Si tubieramos más grúpos de checbox, tan sólo tendríamos que cambiar el nombre del array checbox y recoger en nuestro script.php dichos arrays.

Una utilidad práctica a esta forma de trabajar con checkbox y arrays sería la de realizar un sencillo script donde podamos seleccionar vários registros de una tabla que deseamos realizar una acción sobre ellos; por ejemplo, borrarlos.

formulario.php
Código PHP:

<?
// Realizar la conexión a la BD .. Seleccionar la BD a usar.

// Ejecutar la consulta para obtener los datos de la BD.
$resultado=mysql_query("SELECT * FROM tabla");

// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
while ($row mysql_fetch_array($resultado)){
  echo 
"<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['id']."\">".$row['nombre']."<br>";
}

// Cerramos el formulario y ponemos nuestro botón de Submit.
echo "<input type=\"submit\" name=\"Submit\" value=\"Enviar\">";
echo 
"</form>";
?>

Y un ejemplo de borrado de los registros seleccionados. (recuerda que sólo pasan en el array los checbox seleccionados).

Mysql (para el ejemplo) dispone del comando SQL "IN(lista de valores separados por comas)" para aplicar condicionales tipo ... WHERE IN (1,3,25,53,8). Usamos implode() para conctenar los elementos del array con el separador coma (,)

procesar.php
Código PHP:

<?
// Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
$lista=implode(',',$_POST['seleccion']);

// Y lo aplicamos al SQL correspondiente y ejecutamos la consulta.
mysql_query("DELETE FROM tabla WHERE id IN(".$lista.")");

?>

Para este caso particular no es necesario de un bucle adicional para leer el valor de los checbox seleccionados por qué aplicamos el "implode()" para tal fin.

Si deseamos o tenemos que realizar un proceso intermédio entre la lectura de cada uno de estos valores de forma individual, sólo tenemos que usar el bucle foerach() por ejemplo como se citó en el primer ejemplo.

Un saludo,

PD: 03/11/2003. Código corregido en la generación de $lista (había un par de parentesis de más). Gracias jpinedo por reportar el error.
PD: 18/03/2004. Código corregido en formulario.php (faltó un echo y unas comillas al transcribir la FAQ al mensaje del foro). Gracias Gerald por reportar el error.

epplestun 29/10/2003 03:57

Multiples idiomas basados en XML
 
Tema: Multiples idiomas

Pregunta: Como puedo hacer una aplicación en varios idiomas y con un solo código?¿

Respuesta
La solucion es bastante sencilla, para ello haremos uso de archivos XML. Nuestro arhcivo puede tener la siguiente forma:

english.xml
Código PHP:

<?xml version="1.0"?>
<!-- english language -->
<language>
    <label>
        <value>File</value>
    </label>
    <label>
        <value>Edit</value>
    </label>
    <label>
        <value>View</value>
    </label>
    <label>
        <value>Options</value>
    </label>
    <label>
        <value>Help</value>
    </label>
</language>

En el archivo XML tenemos una estructura sencilla donde la etiqueta value indica el valor.

Lo que tenemos que hacer es generar un array a partir de la estructura del XML, para ello haremos uso de la funcion xml_parse_into_struct(), esta funcion nos genera el array y lo trabajaremos de la siguiente manera:

language.php
Código PHP:

<?php
class lang {
    var 
$word  = array();
    var 
$words = array('file''edit''view''options''help');
    
    function 
loadLanguage($lang "english.xml") {
        
$xml    implode(""file(dirname(__FILE__)."/".$lang));
        
$parser xml_parser_create();
        
xml_parser_set_option($parserXML_OPTION_CASE_FOLDING0);
        
xml_parser_set_option($parserXML_OPTION_SKIP_WHITE1);
        
xml_parse_into_struct($parser$xml$vals$tags);
        
xml_parser_free($parser);
        
$i 0;
        foreach(
$vals as $key => $value) {
            if(!empty(
$value['value'])) {
                
$this->word[strtoupper($this->words[$i])] = ucfirst($value['value']);
                
$i++;
            }
        }
        return 
$this->word;
    }
    
    function 
viewInfo() {
        
$this->loadLanguage();
        return 
print_r($this->word);
    }
}
$lang   = new lang();
$lang -> viewInfo();
$labels =& $lang -> loadLanguage();
echo 
$labels['FILE'];
?>

De esta manera tenemos un array con todos los datos, y dependiendo del archivo que se le indique estara en un idioma u otro, y tan solo tendremos que programar una aplicacion haciendo uso de: echo $labels[indice];.

Espero que sea de ayuda, ami me lo a sido de muchísima ya que para la el soporte multiidioma del PHP-EDDI-DEV se basa en ello :D

Saludillos!!!

ferent 03/11/2003 11:59

Hacer un campo desplegable dinámico
 
Para hacer un combobox que coja los valores de tu base de datos, sólo escribe esto:

Código PHP:

<?php
echo "<select name='id_usuario'>";
echo 
"<option>-- Seleecione</option>";
$result=mysql_query("select NOMBRE, APELLIDOS
from USUARIOS"
$link)or die (mysql_error());
while (
$row=mysql_fetch_array($result)) {
$nombre$row["NOMBRE"];
$apellidos $row["APELLIDOS"];
echo 
"<option value=\"$nombre\">$nombre $apellidos</option>"
}
echo 
"</select>";
?>

Si además quieres que aparezca seleccionado un concreto de forma dinámica:

Código PHP:

<?php
echo "<select name='id_usuario'>";
echo 
"<option>-- Seleecione</option>";
$result=mysql_query("select NOMBRE, APELLIDOS
from USUARIOS"
$link)or die (mysql_error());
while (
$row=mysql_fetch_array($result)) {
$nombre$row["NOMBRE"];
$apellidos $row["APELLIDOS"];
echo 
"<option value=\"$id_usuario\""
//ponemos el que esté seleccionado
if ($id_usuario==$id_usuario_seleccionado) { echo "selected"; }
echo 
">$nombre $apellidos</option>";}
echo 
"</select>";
?>


jpinedo 04/11/2003 02:04

Tema: Imágenes, Banners, Números aleatorios.
Pregunta: ¿Cómo mostrar un banner o imagen cualquiera (con su link y "alt") tomado de una lista aleatoriamente?
Respuesta: De una interesante dicusión en este post , surgió el script que coloco a continuación. Gracias a Cluster, a josemi y a todos los que participamos.
**************************************
Código PHP:

  //Primero, guardamos en un array bidimensional el nombre de archivo de la imagen y el link hacia donde debe enviarnos al hacerle click.
$banners[0]['imagen']="imagen0.gif";
$banners[0]['url']="www.nosenada.tal";
$banners[0]['alt']="página de nosenada";

$banners[1]['imagen']="imagen1.gif";
$banners[1]['url']="http://www.nose.tal";
$banners[1]['alt']="Entra y diviértete";

$banners[2]['imagen']="imagen2.gif";
$banners[2]['url']="pagina.html";
$banners[2]['alt']="mi página personal";

$banners[3]['imagen']="imagen3.jpg";
$banners[3]['url']="../pagina.php";
$banners[3]['alt']="visítanos y colabora";

//Si tenemos una versión de PHP menor a la 4.2.0, tenemos que inicializar el generador de números aleatorios.
srand((float) microtime() * 10000000);//si es 4.2.0 o mayor, no hace falta esta lína.

//Utilizamos la función array_rand() para elegir un índice aleatorio
$id_banner array_rand($banners);

$banner_imagen=$banners[$id_banner]['imagen'];
$banner_url=$banners[$id_banner]['url'];
$banner_alt=$banners[$id_banner]['alt']; 

Así utilizamos una etiquta algo así:
Código PHP:

echo "<a href=\"$banner_url\"><img src=\"$banner_imagen\" alt=\"$banner_alt\"></a>"

Sobre el uso de array_rand() dejo este link al manual:(en español)
http://www.php.net/manual/es/function.array-rand.php

Y este otro al post donde se dicutió algo al respecto.
http://www.forosdelweb.com/s/msg136573.html

Saludos:adios:

"Alt" agregado por sugerencia de elanime.

ACHAVARRIA 07/11/2003 08:34

Como Mostrar los últimos mensajes
 
Sólo se debe ubicar el código en la parte de tu sitio donde quieras mostrar los títulos de los mensajes:

<?
// phpBB :: MOSTRAR ULTIMOS 10 MENSAJES
// :: WebExperto.com ::

$con=mysql_connect("servidor", usuario, password);
mysql_select_db("nombre_base_de_datos",$con);

// Cantidad de post a mostrar y prefijo de las tablas
$ultimos = 10;
$prefijo = "phpbb_";

// Consultas a la base
$result_mensaje=mysql_query("select * from $prefijo"."topics order by topic_id desc limit $ultimos",$con);
while($mostrar_m = mysql_fetch_array($result_mensaje)) {
$topic=$mostrar_m["topic_id"];
$forum_id=$mostrar_m["forum_id"];
$result_foro=mysql_query("select * from $prefijo"."forums where forum_id like $forum_id",$con);
$mostrar_f=mysql_fetch_array($result_foro);
$forum_name = $mostrar_f["forum_name"];
mysql_free_result($result_foro);
?>
<font face="verdana" size="1">»&nbsp;<a href="http://www.tusitio.com/foro/viewtopic.php?t=<?=$topic;?>" target="_blank"><? echo $mostrar_m["topic_title"]; ?></a><br>&nbsp;&nbsp;en <i><b><?=$forum_name;?></b></i></font><br>
<?
}
// Cerramos conexión
mysql_free_result($result_mensaje);
mysql_close($con);
?>

El resultado se mostrará de la siguiente forma, pero puedes acomodarlo fácilmente a tu gusto modificando el código de arriba.

» Simular Windows 98 con XP
en Informática en General
» Flash 5 y Generator
en Informática en General
» mostrar un mensaje al visitante
en ASP | ASP.net
» ¡¡¡¡¡AYUDA URGENTE!!!! bases de datos deductivas
en Bases de Datos
» Intercambio de links
en Marketing y Promoción
» tarjeta gráfica, ayuda!!!!
en Informática en General
» Extremadamente urgente...
en Informática en General
» Digitalizate
en Críticas y comentarios
» Password generado por el usuario
en PHP
» Passwords elegidos por el usuario
en ASP | ASP.net

Si resulta necesario, podemos limitar la cantidad de caracteres para el título del mensaje, lo cual es muy útil en caso de que el título sea muy largo y descompagine la estética visual del sitio.

' En este caso, limitamos a que se muestren los primeros 25 caracteres del título
$titulo=substr($mostrar_m["topic_title"],0,25);
' Y luego en lugar de $mostrar_m["topic_title"] imprimimos $titulo

ACHAVARRIA 07/11/2003 08:55

Como Rotar banners con estadísticas
 
En esta ocasión voy a demostrarles cómo armar un rotador de banners con estadísticas de clicks e impresiones.

Para poder hacer un buen rotador de banners con sus estadísticas correspondientes, vamos a hacer una tabla en una base de datos MySQL.

ban_id es índice y se auto incrementa con cada nuevo registro añadido, contiene la id de cada banner.
ban_url es donde almacenaremos las direcciones de los sitios.
ban_img es donde almacenaremos las direcciones de los banners.
ban_click es donde pondremos la cantidad de clicks de cada banner.
ban_impre es donde pondremos la cantidad de impresiones de cada banner.

Comencemos con lo más fácil, el rotador. Para el rotador usaremos el siguiente código:

banner.php
<?
if(@mysql_connect($serv,$user,$pass)) {
mysql_select_db($dbase);
} else {
echo "Hubo un error, disculpa las molestias";
exit();
}
$qbaney = mysql_query("SELECT * FROM tabla");
mt_srand(time());
$max = mysql_num_rows($qbaney);
$rand = mt_rand(1,$max);
$sqldo = mysql_query("SELECT * FROM tabla WHERE ban_id='$rand'");
while($ban = mysql_fetch_assoc($sqldo)) {
echo "<a href='click.php?id=".$ban['ban_id']."' target=_blank>”.
“<img src='".$ban['ban_img']."' width=468 height=60 border=0></a>";
}
mysql_query("UPDATE $table15 SET ban_impre=ban_impre+1 WHERE ban_id='$rand'");
?>


Vamos a traducir el código línea por línea:

1. Si se puede establecer una conexión al motor MySQL...
2. Se selecciona una base de datos.
3. De lo contrario...
4. Se imprime “Hubo un error, disculpa las molestias”.
5. Se sale del programa.
6. Se cierra el IF.
7. Se selecciona todo de la tabla.
8. Se crea la semilla del rotador (mejorado).
9. Se cuentan todos los banners y se los guarda en $max.
10. Se genera un número aleatorio entre 1 y el máximo ($max).
11. Se selecciona un banner de la tabla donde el campo ban_id sea igual al número aleatorio.
12. Mientras $ban sea un array asociativo...
13. Imprimir en la pantalla un link a click.php?id= id elegido en la tabla.
14. La imagen desde la dirección almacenada en la tabla, cerramos link.
15. Cerramos el while.
16. Actualizamos la tabla con una impresión más de la que ya había.

Ese fue el rotador de banners con contador de impresiones. Ahora nos falta el contador de clicks y redireccionador al sitio donde pertenece el banner. Para eso, guardamos el siguiente archivo:

click.php
<?
if(@mysql_connect($serv,$user,$pass)) {
mysql_select_db($dbase);
} else {
echo "Hubo un error, disculpa las molestias";
exit();
}
mysql_query("UPDATE tabla SET ban_click=ban_click+1 WHERE ban_id='{$_GET['id']}'");
$showurl = mysql_query("SELECT * FROM tabla WHERE ban_id='{$_GET['id']}'");
while($rowed = mysql_fetch_assoc($showurl)) {
header("Location: ".$rowed['ban_url']);
}
?>


Comenzaremos a leer desde la línea siete, ya que las seis primeras son iguales a las del archivo anterior.
7. Se actualiza la cantidad de clicks en el banner contenido en $_GET[‘id’].
8. Se muestra la información como un array asociativo.
9. La página es redireccionada al sitio del banner.

Para ver sus estadísticas pueden crear una página que muestre los datos de cada campo, eso es muy fácil de hacer, y les doy el ejemplo con el campo de ban_id ;-)

admin.php
<?
if(@mysql_connect($serv,$user,$pass)) {
mysql_select_db($dbase);
} else {
echo "Hubo un error, disculpa las molestias";
exit();
}
$sel = mysql_query("SELECT * FROM tabla");
echo "<table width=100%>";
while($show=mysql_fetch_assoc($sel)) {
echo "<tr>".
"<td>".$show['ban_id']."</td>".
"</tr>";
}
echo "</table>";
?>


Lo que haría es:
7. Seleccionar todo de la tabla
8. Imprimir el tag de la tabla HTML
9. Se muestra la información como un array asociativo
10. Se abre una fila
11. Se imprime la celda con el id
12. Se cierra la fila
13. Se cierra el while
14. Se cierra la tabla HTML

NOTA 1:
Un error común que todos hacemos es usar mysql_fetch_array() en vez de mysql_fetch_assoc(). Esto nos da un gasto de procesos innecesarios, ya que con array abrimos tanto un índice numeral como el índice asociativo (nombre del campo). Usando assoc directamente, nos ahorra tiempo si solo necesitamos usar los nombres de los campos para nuestras aplicaciones.

NOTA 2:
Colocando un @ antes de una función evita (no en todas las funciones) que se muestre un mensaje de error, en caso que algo salga mal. Es por eso que cuando algo salga mal en la conexión al motor MySQL, sólo se mostrará el mensaje que he colocado.

Espero que les haya sido tan útil como a mí este pequeño script y que lo disfruten mucho ;-) Cuenten muchos clicks e impresiones!

ACHAVARRIA 07/11/2003 08:56

Como Utilizar cookies en PHP
 
En un artículo anterior explicamos qué son y cómo utilizar las cookies con ASP, para aquellos que no leyeron les comentaremos nuevamente de que se tratan las cookies.

¿Qué es una cookie?
Una cookie es un archivo de texto de peso sumamente bajo que se guarda en la PC del usuario, y son enviados por algunos servidores para almacenar datos para que puedan ser utilizados después. Algunos de los usos más frecuentes que se les suele dar a las cookies son:

• Guardar información como nombre de usuario y contraseña
• Guardar las preferencias del usuario
• Guardar el nombre del usuario, u otros datos
• Y muchísimos usos más

Función setcookie()
Se encarga de crear la cookie definiendo sus propiedades. La sintaxis es:

setcookie (nombre, contenido, expiracion (segundos), path, dominio, seguridad)

Toda cookie debe definirse antes de que comience la cabecera de la página (es decir, antes de la etiqueta <html>) ya que es una restricción que poseen, no tiene nada que ver con PHP. Todos los parámetros de la sintaxis anterior son opcionales menos nombre, el cual debe tener si o si un valor para poder crearla.

Escribir y recuperar una cookie
Para entender el funcionamiento de la función setcookie veremos el siguiente ejemplo:

Código PHP:

<?
// ESCRIBIMOS LA COOKIE
// Utilizamos la función setcookie() para crear una llamada nombre
// El time()+31536000 le da la fecha de expiración a la cookie, en este caso será en 1 año desde la fecha de creación (he de ahí el uso de time() que nos devuelve la fecha actual tipo Unix Time Stamp en segundos)

setcookie("nombre","Fabian Muller"time()+31536000);
?>
<HTML>
<HEAD>
<TITLE>WebExperto.com - Utilizando cookies en PHP - Ejemplo</TITLE>
</HEAD>

<BODY BGCOLOR="#FFFFFF">
<font face="Verdana" size="2">
<?
// RECUPERAMOS LA COOKIE
// Verificamos si la variable nombre tiene contenido
// Si es así, mostrará el valor de la cookie
// Y si no, dirá que la cookie está vacía.

if (isset($nombre))
{
echo 
"El contenido de la cookie es: ".$nombre;
}
else
{
echo 
"La cookie está vacía. Puede ser que recién se halla creado, clickee en Actualizar para ver su contenido.";
}
?>
</font>
</BODY>
</HTML>

Corrección 27/06/2006 por Fridureiks: El tiempo de expiración de la cookie se expresa en segundos.

vic_mx 07/11/2003 09:47

Recomendar Sitio
 
Tema: Recomendar Sitio web
Pregunta: ¿Como recomendar mi sitio web a un amigo?
Respuesta: Con el siguiente ejemplo podremos crear nuestro Recomendador, ademas podrias agregar comprobaciones para que no queden sueltos algunos campos.


Código PHP:

<?php
////////////////////////////////////////////////////////////////////
//  Tellfriend ver. 1.0
//  Copyright (c)2000 Victor Simental
//  URL: http://www.Kurt-Cobain.info
//  This script is distributed as freeware.
//  It may be used and modified free of charge 
//  for personal, academic or non-profit use.
////////////////////////////////////////////////////////////////////

if ($sub != "") {

// Mensaje de confirmacion
$respuesta="Tu mensaje ha sido enviado con ex&iacute;to a $email2";
$recibido="From: $email1 n";
mail(
"$email2",
"$subjet",

//Modifica el texto deacuerdo a tu sitio, puedes usar $titulo para el nombre de tu sitio

"$nombre Algien te ha recomendado nuestro sitio dedicado a lo que sea ubicado en
 http://$titulo nn$msg"
,
$recibido
);
}

// Subjet del mensaje
//Se puede Modificar
$subjet="Hola $nom Te han recomendado nuestro sitio en tudominio.com";

// Mensaje de textarea
//Se puede Modificar

$mensaje="Visita nuestro fabuloso sitio http://www.misitio.com";

//Escribe el nombre de tu sitio y modifica unicamente $titulo
//no borres www
$titulo "  www.misitio.com";
$enviar "Recomendar".$titulo;
?>

<!-- Formulario -->

<table width="100%" border="0" align="center">
<tr> <td>
<div align="center"><font size="-1" face="Verdana, Arial, Helvetica,
sans-serif"><b><font size="-2" face="Verdana, Arial, Helvetica, sans-serif">
<? echo $respuesta?>
</font></b></font></div>

</td></tr>
<tr><td>
<div align="center">
<form name="form1" method="post" action="tellfriend.php">
<font size="1"> <font face="Verdana, Arial, Helvetica, sans-serif">
<input type="hidden" name="sub" value="si">
<input type="hidden" name="subjet" value="<? echo $subjet?>">
<br>
Escribe el nombre de tu amigo:<br>
<input type="text" name="nombre" value="">
<br>
Escribe tu e-mail:<br>
<input type="text" name="email1" value="">
<br>
El e-mail de tu amigo:<br>
<input type="text" name="email2" value="">
</font></font><font size="1" face="Verdana, Arial, Helvetica,
sans-serif"><br>
Agrega un mensaje (opcional):</font> <font size="1" face="Verdana, Arial,
Helvetica, sans-serif"><br>

<textarea name="msg" rows="5" cols="50"><? echo $mensaje?></textarea>
<br><br>
<input type="submit" name="Submit" value="<? echo $enviar?>">
<b><font size="1" face="Verdana, Arial, Helvetica, sans-serif"
color="#FF0000">
</font></b><br>
</font>
Tellfriend Ver.1.0 Powered by Victor Simental</form>
</div>
</td>
<tr><tr>
<td></td>
</tr></table>


<!-- Fin del script -->

creo que se entiende para que funciona este script, no?
Recomendar un sitio!

Trulala de cordoba 25/11/2003 08:10

Tema: Error
Pregunta: Mi sitio esta publicado en un servidor(como ej:www.tripod.lycos.com/) y
en las paginas no me salen las advertencias de errores que suelo ver en mi PC.
¿Hay alguna menare de verlos?
Respuesta:

Todos los servidores de hosting desavilitan la muestra de errores como "undefinided variable cTextoVeta".
Nosotros en nuestra PC simplemente podemos modificar el php.ini donde editamos esta linea:

error_reporting= E_PARSE;

Pero no podemos editar la de un server. Por eso si queres ver detalles de error por diversos motivos, puedes agregar esta linea al principio de tu página:

<?
ini_set ('error_reporting', E_ALL);
?>

Y con esto podras ver todos las advertencias de errores.

Tambien existe una funcion especifica para cambiarlo:error_reporting(), de esta función pueden ver mas en www.php.net/error_reporting.

nancyBB 28/11/2003 19:14

TEMA: Cadenas y Loops
Pregunta: Como recorrer el abecedario de forma simple?

Utilizando un sencillo bucle FOR, ya que esta construcción permite usar caracteres como elementos de comparación e incremento.

Digamos que quieres recorrer de la a a la m

Código PHP:

for ($i="a" $i<"n" $i++) {
    echo 
$i;


Ahora si quieres recorrer de la a a la z, la lógica cambia un poquito, ya que cuando los caracteres se hacen dobles "aa" valen lo mismo que la z (true) así que el loop se vería así:

Código PHP:

for ($i="a" $i!="aa" $i++) {
    echo 
$i;


Salud!!

jsegundo 02/12/2003 14:48

Como hacer Reportes con la clase PDF de R&OS
 
Como generar un reporte PDF?

Bueno, primero que nada un agradecimiento a cadrogui y a cluster por sus tips y contribuciones a este usuario inexperto.

Con la inquietud de generar reportes para PHP, me recomendaron la clase PDF de R&OS (la cual la pueden encontrar en http://ros.co.nz/pdf) genere el siguiente script para una tabla MySQL.

A este reporte pueden modificar los headers de la tabla, las columnas las pueden formatear de acuerdo a sus necesidades, pueden modificar los encabezados y demas.

Ademas al final nos da un total por importe, anticipo y numero de registros.

Espero y les sea de utilidad como a mi.

Saludos :adios:

Jose de Jesus Segundo
Monterrey - Mexico

Código PHP:

<?php
//Aqui quito caracteres que estan demas en el filtro que viene de otra pagina
$sqlr str_replace("`"""$sqlr);
$sqlr str_replace("\'"'"'$sqlr);

require(
'qs_functions.php');  //esta funcion la pueden quitar, solo es para el formato de las fechas
error_reporting(E_ALL);
include(
'class.ezpdf.php');

$pdf = & new Cezpdf('letter','landscape');
$pdf->selectFont('./fonts/Helvetica');
// Se inicializa el contador de paginas en 1 y se especifica en que lugar se va a imprimir
$pdf->ezStartPageNumbers(500,18,10,'','Pagina : {PAGENUM} de {TOTALPAGENUM}',1);

// coloca una linea arriba y abajo de todas las paginas
$fechs date("d/m/y");
$all $pdf->openObject();
$pdf->saveState();
$pdf->setStrokeColor(0,0,0,1);
$pdf->line(20,30,750,30);
$pdf->line(20,585,750,585);
$pdf->addText(20,590,10,'Industrial Mexicana, SA de CV - Control de Contratos');
$pdf->addText(650,590,10,'Depto. Finanzas');
$pdf->addText(20,18,10,$fechs);
$pdf->restoreState();
$pdf->closeObject();
// termina las lineas
$pdf->addObject($all,'all');
//--------
//
$host 'localhost';
$user 'root';
$password '';

$database 'indmex';
// El siguiente query utiliza un filtro que viene de otra pagina
//$query = 'select producto,contrato,cliente,fechareg,fechacomp,tipo_cte,importe,oficina,anticipo,fechaant,factura_ant,pagado,fecha_pag,factura_pag,fecha_lib,vendedor from contratos where '.$sqlr.' order by producto,contrato';
// Este query esta sin filtro y va a utilizar todos los registros de la BD
$query 'select producto,contrato,cliente,fechareg,fechacomp,tipo_cte,importe,oficina,anticipo,fechaant,factura_ant,pagado,fecha_pag,factura_pag,fecha_lib,vendedor from contratos order by producto,contrato';
//--------

// abrir la conexion
$link mysql_connect($host,$user,$password);
//cambio de database
mysql_select_db($database);
//inicializa array
$data = array();
// hacer query
$result mysql_query ($query ) or die (mysql_error());
//
//Aqui se coloca el header de la Tabla
$cols = array('producto'=>'Prod',
              
'contrato'=>'Contrato',
              
'cliente'=>'Cliente',
              
'fechareg'=>'Registro',
              
'fechacomp'=>'Compromiso',
              
'tipo_cte'=>'Tipo Cte',
              
'importe'=>'Importe',
              
'oficina'=>'Ofna',
              
'anticipo'=>'Anticipo',
              
'fechaant'=>'Fech.Ant',
              
'factura_ant'=>'Fact Ant',
              
'pagado'=>'Pagado',
              
'fecha_pag'=>'Fech.Pag',
              
'factura_pag'=>'Fact Pag',
              
'fecha_lib'=>'Fech Lib',
              
'vendedor'=>'Vend');
//
$smc 0;
$tim 0;  // Total del Importe
$tan 0;  // Total Anticipo
while ($row mysql_fetch_row($result)) {
    
$pro $row[0];    // Producto
    
$con $row[1];    // Contrato
    
$cte $row[2];    // Cliente
    
if ($row[3]=="0000-00-00") {$fhr " "; }  // Fecha Registro
    
else {$fhr "" date("d/m/y",  qs_string_to_timestamp($row[3])) . ""; }
    if (
$fhr == "") {$fhr " "; }
    if (
$row[4]=="0000-00-00") {$fhc " "; }  //Fecha Compromiso
    
else {$fhc "" date("d/m/y",  qs_string_to_timestamp($row[4])) . ""; }
    if (
$fhc == "") {$fhc " "; }
    
$tct $row[5];    // Tipo de Cliente
    
$tim $tim $row[6];
    
$imp "" number_format($row[6],2,".",",") . "";  // Importe
    
if ($imp == "") {$imp " ";}
    
$ofn $row[7];  //Oficina
    
$tan $tan $row[8];
    
$ant "" number_format($row[8],2,".",",") . "";  // Anticipo
    
if ($row[9]=="0000-00-00") {$fan " "; }  // Fecha Registro
    
else {$fan "" date("d/m/y",  qs_string_to_timestamp($row[9])) . ""; }
    
$fca $row[10]; // Factura Anticipo
    
$pag $row[11]; // Pagado
    
if ($row[12]=="0000-00-00") {$ffp " "; }  // Fecha Registro
    
else {$ffp "" date("d/m/y",  qs_string_to_timestamp($row[12])) . ""; }
    
$fap $row[13]; // Factura Anticipo
    
if ($row[14]=="0000-00-00") {$flb " "; }  // Fecha Registro
    
else {$flb "" date("d/m/y",  qs_string_to_timestamp($row[14])) . ""; }
    
$vnd $row[15]; // Vendedor
    
$smc $smc 1;
    
// Aqui se agregan las variables formateadas al array
    
$data[] = array('producto'=>$pro,
                    
'contrato'=>$con,
                    
'cliente'=>$cte,
                    
'fechareg'=>$fhr,
                    
'fechacomp'=>$fhc,
                    
'tipo_cte'=>$tct,
                    
'importe'=>$imp,
                    
'oficina'=>$ofn,
                    
'anticipo'=>$ant,
                    
'fechaant'=>$fan,
                    
'factura_ant'=>$fca,
                    
'pagado'=>$pag,
                    
'fecha_pag'=>$ffp,
                    
'factura_pag'=>$fap,
                    
'fecha_lib'=>$flb,
                    
'vendedor'=>$vnd);
}
// Se agrega una linea en blanco como separador de datos y totales
    
$data[] = array('producto'=>'',
                    
'contrato'=>'',
                    
'cliente'=>'',
                    
'fechareg'=>'',
                    
'fechacomp'=>'',
                    
'tipo_cte'=>'',
                    
'importe'=>'',
                    
'oficina'=>'',
                    
'anticipo'=>'',
                    
'fechaant'=>'',
                    
'factura_ant'=>'',
                    
'pagado'=>'',
                    
'fecha_pag'=>'',
                    
'factura_pag'=>'',
                    
'fecha_lib'=>'',
                    
'vendedor'=>'');
$nreg 'Numero de Registros : '.$smc ;
$timp "" number_format($tim,2,".",",") . "";  // Importe
$tan "" number_format($tan,2,".",",") . "";  // Importe
// Se agrega la linea que contiene los totales de Registros, Importe y Anticipo
    
$data[] = array('producto'=>'',
                    
'contrato'=>'',
                    
'cliente'=>$nreg,
                    
'fechareg'=>'',
                    
'fechacomp'=>'',
                    
'tipo_cte'=>'',
                    
'importe'=>$timp,
                    
'oficina'=>'',
                    
'anticipo'=>$tan,
                    
'fechaant'=>'',
                    
'factura_ant'=>'',
                    
'pagado'=>'',
                    
'fecha_pag'=>'',
                    
'factura_pag'=>'',
                    
'fecha_lib'=>'',
                    
'vendedor'=>'');
$pdf->ezTable($data,$cols,'',array('fontSize'=>6,
'cols'=>array(
                
'producto'=>array('justification'=>'center')
                ,
'contrato'=>array('justification'=>'left')
                ,
'cliente'=>array('justification'=>'left')
                ,
'fechareg'=>array('justification'=>'center')
                ,
'fechacomp'=>array('justification'=>'center')
                ,
'tipo_cte'=>array('justification'=>'center')
                ,
'importe'=>array('justification'=>'right')
                ,
'oficina'=>array('justification'=>'center')
                ,
'anticipo'=>array('justification'=>'right')
                ,
'fechaant'=>array('justification'=>'center')
                ,
'factura_ant'=>array('justification'=>'left')
                ,
'pagado'=>array('justification'=>'center')
                ,
'fecha_pag'=>array('justification'=>'center')
                ,
'factura_pag'=>array('justification'=>'left')
                ,
'fecha_lib'=>array('justification'=>'center')
                ,
'vendedor'=>array('justification'=>'center'))
));
// salida
//
//
if (isset($d) && $d){
    
$pdfcode $pdf->ezOutput();
    
$pdfcode str_replace('\n','\n<br>',htmlspecialchars($pdfcode));
    echo 
'<html><body>';
    echo 
trim($pdfcode);
    echo 
'</body></html>';
} else {
    
$pdf->ezStream();
}
?>

Enseguida una imagen muestra del reporte generado:
http://www.industrialmexicana.com/finanzas.jpg

jsegundo 02/12/2003 14:51

Como generar un reporte PDF? Parte 2
 
Aqui esta un volcado de ejemplo para que utilicen o tomen como ejemplo para este reporte.

# phpMyAdmin MySQL-Dump
# version 2.2.6
# http://phpwizard.net/phpMyAdmin/
# http://www.phpmyadmin.net/ (download page)
#
# servidor: 127.0.0.1
# Tiempo de Generacion: 02-12-2003 a les 12:50:55
# Version del Servidor: 3.23.49
# Version del PHP: 4.3.2
# Base De Datos : `indmex`
# --------------------------------------------------------

#
# Estructura de tabla para tabla `contratos`
#

DROP TABLE IF EXISTS contratos;
CREATE TABLE contratos (
id int(11) NOT NULL auto_increment,
contrato int(6) NOT NULL default '0',
cliente varchar(70) NOT NULL default '',
tipo char(1) NOT NULL default '',
serie varchar(6) NOT NULL default '',
modelo varchar(20) NOT NULL default '',
cantidad double NOT NULL default '0',
fechareg date NOT NULL default '0000-00-00',
fechacomp date NOT NULL default '0000-00-00',
importe double NOT NULL default '0',
listamat char(1) NOT NULL default '',
fechalm date NOT NULL default '0000-00-00',
anticipo double NOT NULL default '0',
fechaant date NOT NULL default '0000-00-00',
compras char(1) NOT NULL default '',
fechacompra date NOT NULL default '0000-00-00',
fechaprod date NOT NULL default '0000-00-00',
prod_c char(1) NOT NULL default '',
prod_p char(1) NOT NULL default '',
prod_d char(1) NOT NULL default '',
prod_s char(1) NOT NULL default '',
fechater date NOT NULL default '0000-00-00',
embarcado char(1) NOT NULL default '',
pagado char(1) NOT NULL default '',
terminado char(1) NOT NULL default '',
pedido varchar(25) NOT NULL default '',
descripcion varchar(50) NOT NULL default '',
vendedor varchar(15) NOT NULL default '',
producto int(4) NOT NULL default '0',
oficina int(4) NOT NULL default '0',
PRIMARY KEY (id),
KEY contrato (contrato,cliente,tipo,serie,modelo),
KEY listamat (listamat)
) TYPE=MyISAM;

#
# Volcar la base de datos para la tabla `contratos`
#

INSERT INTO contratos VALUES (1, 467, 'INGRIA. ESPECIALIZADA EN REFRIG., SA CV', 'R', '', 'BOMBA 1.5HP #300210', '1', '2003-11-13', '2003-12-25', '9173.39', '', '0000-00-00', '0', '0000-00-00', '', '0000-00-00', '0000-00-00', '', '', '', '', '0000-00-00', '', '', 'V', 'IERI-138-03', '1BOMBA 1.5HP', 'RAR', 605, 1);
INSERT INTO contratos VALUES (2, 468, 'CANCELADO (FRYVITEC)', 'R', '', 'SELLADOR BUTYLO', '2', '2003-11-13', '2003-11-14', '0', '', '0000-00-00', '0', '0000-00-00', '', '0000-00-00', '2003-11-13', '', '', '', '', '2003-11-14', '', '', 'C', 'S/N', 'SELLADOR BUTYLO', 'FLR', 605, 7);
INSERT INTO contratos VALUES (3, 469, 'CONDOMINIO WORLD TRADE CENTER CD. MEXICO', 'R', '', 'REFAC. VARIAS', '0', '2003-11-13', '2003-12-04', '17302.84', '', '0000-00-00', '0', '0000-00-00', '', '0000-00-00', '0000-00-00', '', '', '', '', '0000-00-00', '', '', 'V', 'S/N', 'REFAC. VARIAS', 'AFG', 605, 2);
INSERT INTO contratos VALUES (4, 470, 'FABRICAS MONTERREY, SA CV', 'R', '', 'BANDA Y POLEA', '0', '2003-11-17', '2003-12-15', '4542.92', '', '0000-00-00', '0', '0000-00-00', '/', '0000-00-00', '0000-00-00', '', '', '', '', '0000-00-00', '', '', 'V', '4500047080', 'BANDA Y POLEA', 'AFG', 605, 2);
INSERT INTO contratos VALUES (5, 471, 'RANCHO EL AGUATOCHE, SA DE CV', 'R', '', 'TORNILLERIA', '0', '2003-11-18', '2003-11-18', '1365', '', '0000-00-00', '0', '2003-11-19', '', '0000-00-00', '2003-11-18', '', '', '', '', '2003-11-18', 'X', '', 'T', '2403', 'TORNILLERIA', 'OFNA', 605, 1);
INSERT INTO contratos VALUES (6, 472, 'MANUFACTURAS ESPECIALIZADAS, SA', 'R', '', 'KG. TUBO COBRE 1/4"', '127', '2003-11-18', '2003-11-19', '20095.35', '', '0000-00-00', '0', '2003-11-19', 'X', '0000-00-00', '2003-11-18', '', '', '', '', '2003-11-19', 'X', '', 'T', 'OC-002731', '641 KG. TUBO COBRE', 'OFNA', 605, 1);
INSERT INTO contratos VALUES (7, 473, 'CIA. CERVECERA DE ZACATECAS, SA CV', 'R', '', 'LAINAS P/ACOPLAM.', '1', '2003-11-18', '2003-12-08', '390.92', '', '0000-00-00', '0', '0000-00-00', '/', '2003-11-24', '2003-11-19', '', '', '', '', '2003-11-26', '', '', 'T', '27703', '1 JG. LAINAS ACOPL.', 'LMS', 605, 3);
INSERT INTO contratos VALUES (8, 474, 'HEAVY DUTY, SA DE CV', 'R', '', 'REFAC. VARIAS', '0', '2003-11-19', '2003-12-31', '9657.6', '', '0000-00-00', '5591.37', '2003-11-20', '', '0000-00-00', '0000-00-00', '', '', '', '', '0000-00-00', '', '', 'V', 'S/N', 'REFAC. VARIAS', 'AFG', 605, 2);
INSERT INTO contratos VALUES (9, 475, 'FRYVITEC, SA DE CV', 'R', '', 'ROLLO SELLADOR', '10', '2003-11-19', '2003-11-20', '2110.1', '', '0000-00-00', '2435', '2003-11-19', '', '0000-00-00', '2003-11-19', '', '', '', '', '2003-11-20', 'X', 'X', 'T', '76-03', '10 ROLLO SELLADOR BUTYLO', 'FLR', 605, 7);
INSERT INTO contratos VALUES (10, 476, 'SERVICIOS BTF, SA CV', 'R', '', 'REFAC. VARIAS', '0', '2003-11-19', '2003-12-10', '2114.54', '', '0000-00-00', '0', '0000-00-00', '', '0000-00-00', '2003-11-19', '', '', '', '', '2003-11-20', '', '', 'T', 'S/N', 'REFAC. VARIAS', 'RAR', 605, 1);
INSERT INTO contratos VALUES (11, 477, 'GRUPO I.QU.A., SA DE CV', 'R', '', 'RELLENO Y BANDAS', '0', '2003-11-19', '2003-12-24', '115056.09', '', '0000-00-00', '57808.8', '2003-11-24', '', '0000-00-00', '2003-11-25', '', '', '', '', '0000-00-00', '', '', 'V', '181 / 182', 'RELLENO Y BANDAS', 'RAR', 605, 1);
INSERT INTO contratos VALUES (12, 478, 'PROCITRUS, SA DE CV', 'R', '', '2 VENT. #250092', '2', '2003-11-19', '2003-11-20', '1710.29', '', '0000-00-00', '2008.31', '2003-11-20', 'X', '0000-00-00', '2003-11-19', '', '', '', '', '2003-11-20', 'X', '', 'T', 'S/N', '2 VENT. #250092', 'RAR', 605, 1);
INSERT INTO contratos VALUES (13, 3703, 'EXISTENCIA ALMACEN', 'T', 'FXV', '1-FXV-422', '1', '2002-05-06', '0000-00-00', '0', '', '0000-00-00', '0', '0000-00-00', '', '0000-00-00', '2003-05-02', '', '', '', '', '0000-00-00', '', '', 'V', '', '1-FXV-422', '', 601, 1);
INSERT INTO contratos VALUES (14, 3818, 'INGROS. EN REFRIGERACION, SA CV', 'T', 'VC1', 'VC1-30', '1', '2003-10-14', '2003-12-09', '48304.2', 'X', '2003-11-07', '29102.93', '2003-10-29', '/', '2003-11-24', '2003-10-29', '', '', '', '', '0000-00-00', '', '', 'V', '', '', 'LMS', 603, 3);
INSERT INTO contratos VALUES (15, 3819, 'AQUASISTEMAS INTEGRALES, SA DE CV', 'T', 'FXT', 'FXT-142', '1', '2003-10-16', '2003-12-11', '51335', 'X', '2003-10-24', '31411.41', '2003-10-27', '/', '2003-10-23', '2003-10-21', 'X', 'X', '', '', '0000-00-00', '', '', 'V', 'AQS-1101', '', '669', 601, 5);
INSERT INTO contratos VALUES (16, 3820, 'ALTOPRO, SA DE CV', 'T', '33000', '33646', '1', '2003-10-29', '2003-12-26', '271074', 'X', '2003-11-06', '164374.25', '2003-10-31', '/', '2003-11-24', '2003-10-31', '', '', '', '', '0000-00-00', '', '', 'V', 'B32451', '', '639', 601, 2);
INSERT INTO contratos VALUES (17, 3821, 'MAYEKAWA DE MEXICO, SA DE CV', 'T', 'VC2', 'VC2-420', '1', '2003-10-22', '2003-12-17', '278705.8', 'X', '2003-11-10', '100741.71', '2003-11-07', '/', '2003-11-24', '2003-11-07', '', '', '', '', '0000-00-00', '', '', 'V', '10359', '', '671', 603, 7);
INSERT INTO contratos VALUES (18, 3822, 'PACSA SUMINISTROS Y APLICACIONES, SA DE CV', 'T', 'IL', 'IL-56-7-P3', '2', '2003-10-22', '2003-12-18', '190546', 'X', '2003-10-29', '100000', '2003-10-23', '/', '2003-11-24', '2003-10-28', '/', '', '', '', '0000-00-00', '', '', 'V', '1290', '', '650', 601, 2);
INSERT INTO contratos VALUES (19, 3823, 'JABIL GLOBAL SERVICES', 'T', 'JE', 'JE-31055', '1', '2003-10-30', '2003-12-25', '617780.8', 'X', '2003-11-14', '355223.96', '2003-11-11', '/', '0000-00-00', '2003-11-11', '', '', '', '', '0000-00-00', '', '', 'V', '22AS03424B', '1 JE-31055', '280', 601, 1);
INSERT INTO contratos VALUES (20, 3824, 'ALTOPRO, SA DE CV', 'T', 'VTL', 'VTL-079-K', '1', '2003-11-13', '2004-01-22', '76807.71', 'X', '2003-11-19', '43705.13', '2003-11-13', '/', '0000-00-00', '2003-11-13', '', '', '', '', '0000-00-00', '', '', 'V', 'B32788', '1 VTL-079-K', 'AFG', 601, 2);
INSERT INTO contratos VALUES (21, 3825, 'EATON CONTROLS, S DE RL DE CV', 'T', '33000', '33568', '2', '2003-11-05', '2004-01-02', '489277.12', 'X', '2003-11-12', '278352.75', '2003-11-14', '/', '2003-11-24', '2003-11-12', '', '', '', '', '0000-00-00', '', '', 'V', '5070-000988-00', '2 33568', 'RSG', 601, 1);
INSERT INTO contratos VALUES (22, 3826, 'INGROS. EN REFRIGERACION, SA CV', 'T', 'VC1', 'VC1-46', '1', '2003-11-05', '2003-12-31', '58771.89', 'X', '2003-11-10', '33442.38', '2003-11-10', '/', '2003-11-24', '2003-11-05', '', '', '', '', '0000-00-00', '', 'X', 'V', '364-2003', '1 VC1-46', 'LMS', 603, 1);
INSERT INTO contratos VALUES (23, 3827, 'PACE INDUSTRIES DE MEXICO, SA DE CV', 'T', 'FXT', 'FXT-87', '1', '2003-11-11', '2004-01-20', '51419.85', 'X', '2003-11-25', '29173.47', '2003-11-13', '/', '0000-00-00', '2003-11-13', '', '', '', '', '0000-00-00', '', '', 'V', '2028759', '1 FXT-87', 'GGA', 601, 1);
INSERT INTO contratos VALUES (24, 40798, 'CARRIER MEXICO, S.A. DE C.V.', 'M', '39L', '39LD35', '2', '2003-01-10', '0000-00-00', '7294', '', '0000-00-00', '0', '2020-00-01', '', '0000-00-00', '2020-00-01', '', '', '', '', '0000-00-00', '', '', 'T', '802297', '', '', 601, 1);
INSERT INTO contratos VALUES (25, 41110, 'CARRIER MEXICO, SA DE CV', 'M', '39N', '39NF50', '2', '2003-11-12', '2003-12-24', '161389.49', 'X', '2003-11-14', '0', '0000-00-00', '/', '2003-11-20', '2003-11-17', '', '', '', '', '0000-00-00', '', '', 'V', '803088', '2 39NF50', 'CARRIER', 613, 1);
INSERT INTO contratos VALUES (26, 41111, 'CARRIER MEXICO, SA DE CV', 'M', '39N', '39NF11', '1', '2003-11-18', '2003-12-30', '24144.01', 'X', '2003-11-20', '0', '0000-00-00', '/', '2003-11-26', '2003-11-18', '', '', '', '', '0000-00-00', '', '', 'V', '803105', '1 39NF11', 'CARRIER', 613, 1);

fran86 23/12/2003 12:38

Leer un a pagina web y sacar las imagenes
 
Tema: Expresiones regulares/Archivos HTML
Pregunta: ¿Como leer un a pagina web y sacar las imagenes
Con las siguiente funcion podemos hacerlo:
Código PHP:

/**
* Imagenes de un archivo HTML

* Examina un archivo HTML en busca de sus imagenes para
* luego devolver su direccion relativa.

* @author  fran86       <[email protected]>
* @param   string       $archivo      Path correspondiente al HTML a examinar.
* @param   bool         $norepetidos  Opcional para no repetir las imagenes.
* @return  array|false  Array con los paths relativos de las imagenes

*/
function imagenesHTML($archivo$norepetidos true)
{
    
$contenido file($archivo);
    
$contenido array_map("trim"$contenido);
    
$contenido implode(" "$contenido);

    if ( 
preg_match_all('/<img([^<>]+)>/i'$contenido$match) ) {
            foreach(
$match[1] as $atributos) {
                if ( 
preg_match('/src="([^"]+)"/i'$atributos$matchpaths) ) {
                    
$pathimgs[] = $matchpaths[1];
                } elseif ( 
preg_match('/src=([^ ]+)/i'$atributos$matchpaths) ) {
                    
$pathimgs[] = $matchpaths[1];        
                }
                unset(
$matchpaths);
            }
    }
    if ( !empty(
$pathimgs) ) {
        if (
$norepetidos) {
            return 
array_unique($pathimgs);
        } else {
            return 
$pathimgs;
        }
    } else {
        return 
false;
    }


Que la utilizamos de este modo:
Código PHP:

$paths imagenesHTML("http://www.forosdelweb.com/s/foro18.html");  // Ahora $paths es un array que contiene las direcciones (relativas) de todas las imagenes que aparecen en la pagina http://www.forosdelweb.com/s/foro18.html 

Explicacion breve:
  1. Leemos el archivo con file() hacia un array y lo transformamos a una cadema con implode() (*)
  2. Aplicamos el patron '/<img([^<>]+)>/i' con preg_match_all() para buscar todos los tags <img XXX >. Notar que se utiliza /i al final para realizar una busqueda que no distinga mayusculas/minusculas.
  3. Recorremos el array que resulta de la operacion anterior y aplicamos 2 patrones posibles que serviran para cazar el path del atributo SRC (dentro de <img>) este o no entre comillas.

(*)
Para abrir paginas "externas" (que empiezan con http://blablabla) es necesario setear allow_url_fopen = ON en el PHP.INI (http://ar2.php.net/manual/en/ref.fil...llow-url-fopen)

darkoi 03/01/2004 14:36

Tema: Interacción PHP+Javascript+MySQL

Pregunta : ¿Cómo hacer una marquesina rotaria con resultados de una BD?

Respuesta:

Marquesina Rotaria de Noticias (o de lo que sea) (PHP+javascript+MySQL)

La idea de esta marquesina es hacer un include( ) en donde queramos de un archivo que llamaremos marquesina.php
Utiliza javascript para efectos de hacer la rotación de los titulares de las noticias (o lo que sea) y PHP para hacer que dicha marquesina algo dinámico facilmente actualizable.

Para efectos del ejemplo usaremos una tabla que contenga lo siguiente:

Tabla: noticias

Campos: idnot fecha titulo contenido

idnot (Tipo: tinyint / Atributos: UNSIGNED / Extra: Autoincrement)
fecha (Tipo: DATE)
titulo (Tipo: VARCHAR(50))
contenido (Tipo: longtext)

Luego definimos el javascript que genera la rotación de los titulares (este lo conseguí en la red, no manejo javascript)

Código:

<script language="JavaScript1.2">

var ancho=50
var alto=50
var velocidad=3
var contenido=' Aqui va el código html que queramos y es el que rotará para ello utilizamos PHP que está más adelante'

if (document.all)
document.write('<marquee direction="up" scrollAmount='+velocidad+' style="width:'+ancho+';height:'+alto+'">'+contenido+'</marquee>')

function regenerar(){
window.location.reload()
}
function regenerar2(){
if (document.layers){
setTimeout("window.onresize=regenerar",450)
inimarquee()
}
}

function inimarquee(){
document.cmarquee01.document.cmarquee02.document.write(contenido)
document.cmarquee01.document.cmarquee02.document.close()
thelength=document.cmarquee01.document.cmarquee02.document.height
scrollit()
}

function scrollit(){
if (document.cmarquee01.document.cmarquee02.top>=thelength*(-1)){
document.cmarquee01.document.cmarquee02.top-=velocidad
setTimeout("scrollit()",100)
}
else{
document.cmarquee01.document.cmarquee02.top=alto
scrollit()
}
}
window.onload=regenerar2
</script>

En la parte del “var contenido” del javascript insertaremos el siguiente código de PHP que genera el html desde la base de datos.
Código PHP:

<?php
//Definimos el select de la consulta, además definimos el formato de la fecha como mi_fecha
//Recogemos los datos de la tabla de noticias los ordenamo por fecha desde la más reciente
//a la más antigua y las últimas 5

$ssql=("SELECT *,DATE_FORMAT(fecha,'%d-%m-%Y') AS mi_fecha FROM noticias ORDER BY fecha desc limit 5");
//consulta la base de datos, defino las variables y genero los resultados.
$result=mysql_query($ssql,$conn);
while (
$row=mysql_fetch_array($result))

echo
"<a href=noticias/vernoticia.php?idnot=".$row['idnot'].">".substr($row[titulo],0,25)."...<br>(".$row[mi_fecha].")</a><br><br>";} ?>'

con esto se genera el html de los titulos de las noticias.
Por ejemplo si fuera la noticia idnot=1 , fecha=2004-01-01 , titulo=’Comienza el 2004’, contenido=’Comienza el 2004 y en la Alameda quedó la…..etc’
Se corta el título en 25 caractreres y le agrego puntos suspensivos. (substr($row[titulo],0,25)
El html generado sería:
<a href=noticias.php?idnot=1>Comienza el 2004…<br>01-01-2044</a><br>
y así hasta los 5 últimos titulares.

El código final quedaría así:

Código PHP:

<script language="JavaScript1.2">

var ancho=300
var alto=150
var velocidad=3
var contenido='<?    

$ssql
=("SELECT *,DATE_FORMAT(fecha,'%d-%m-%Y') AS mi_fecha FROM noticias ORDER BY fecha desc limit 5");
$result=mysql_query($ssql,$conn);
while (
$row=mysql_fetch_array($result)){ 
echo 
"<a href=vernoticia.php?idnot=".$row['idnot'].">".substr($row[titulo],0,20)."...<br>(".$row[mi_fecha].")</a><br><br>";} ?>'

if (document.all)
document.write('<marquee direction="up" scrollAmount='+velocidad+' style="width:'+ancho+';height:'+alto+'">'+contenido+'</marquee>')

function regenerar(){
window.location.reload()
}
function regenerar2(){
if (document.layers){
setTimeout("window.onresize=regenerar",450)
inimarquee()
}
}

function inimarquee(){
document.cmarquee01.document.cmarquee02.document.write(contenido)
document.cmarquee01.document.cmarquee02.document.close()
thelength=document.cmarquee01.document.cmarquee02.document.height
scrollit()
}

function scrollit(){
if (document.cmarquee01.document.cmarquee02.top>=thelength*(-1)){
document.cmarquee01.document.cmarquee02.top-=velocidad
setTimeout("scrollit()",100)
}
else{
document.cmarquee01.document.cmarquee02.top=alto
scrollit()
}
}
window.onload=regenerar2
</script>

Este código lo guardamos en un archivo marquesina.php y le hacemos un include(“marquesina.php”); dentro del index.php de nuestro sitio o donde sea. Otra opción es poner todo el código directamente en la página.

Luego para que funcione por completo debemos crear una página que reciba el idnot y muestre el contenido de la noticia.

Con el siguiente php (archivo “vernoticia.php”)

Código PHP:

<?php
include("conectar.php");
//defino la variable que viene por  get
$idnot=$_GET['idnot'];
//defino el Select de la consulta y luego hago la consulta
$ssql=("SELECT *,DATE_FORMAT(fecha,'%d-%m-%Y') AS mi_fecha FROM noticias  WHERE idnot=$idnot");
$result=mysql_query($ssql,$conn);
while (
$row=mysql_fetch_array($result))
{
echo 
$fecha=$row[mi_fecha]." - ";
echo 
"<b>".$row[titulo]."</b><br><br>";

$variable=$row['contenido'];
// Convertir links (URLs) usé este código que saque del foro para revisar el contenido y ver si hay //vínculos y linkear.
$variable eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)''<a href="\\1" target="_blank">\\1</a>'$variable);
$variable eregi_replace('([[:space:]()[{}])([url]www.[/url][-a-zA-Z0-9@:%_\+.~#?&//=]+)''\\1<a href="http://\\2" target="_blank">;\\2</a>;'$variable);
echo 
"<br>"$variable ."<br>";
}
          
?>
<hr size="1" noshade>
<a href="javascript:history.back()">Volver a Marquesina</a>

Finalemente puedo incluir esto en un archivo “notimivil.php”

Código PHP:

<?     

include("conectar.php");
include(
"marquesina.php");
    
 
?>

Pueden ver el resultado aquí http://usuarios.lycos.es/bonsaichile.../notimovil.php

La página tiene un poco de propaganda pero nada tan terrible.

Saludos Darkoi

ACHAVARRIA 09/01/2004 10:56

[B]Creación de Thumbnails de imágenes[/B]
 
Pregunta:¿Como Crear Thumbnails de imágenes?
Respuesta:


Un Thumbnails consiste en previsualizaciones de menor tamaño de una imagen original lo cual se utiliza mucho para galerías, mostrando una copia de la imagen original pero de menor tamaño.

Para el ejemplo utilizare una como formato de imagen el GIF, Primero presentare el codigo y luego la explicacion linea por linea al igual que como hacerlo con diferentes formatos de imagen.

Supongo que el nombre del archivo es imagen.php

Código PHP:

<?php 
//http://pagina.com/ 

/*Este Archivo Recibe Los Parametros $ruta, Que Es La Ruta Interna De La Imagen En El Servidor, Y Los Parametros $ancho y $alto Que Se Refiere Al Alto Y Ancho De La Previsualizacion.*/ 

$fuente = @imagecreatefromgif($ruta); 
$imgAncho imagesx ($fuente); 
$imgAlto =imagesy($fuente); 
$imagen ImageCreate($ancho,$alto); 

ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto); 

Header("Content-type: image/gif"); 
imageGif($imagen); 

?>

Lo primero es recordar que este archivo recibe los parametros
Código PHP:

$ruta 

que es la ruta interna de la imagen en el servidor, entonces si el fichero imagen.php se encuentra por ejemplo en:

http://www.servidor.com/cuenta/imagen.php

Y la imagen, en este caso supondremos el nombre "01.gif", se encuentra en:

http://www.servidor.com/cuenta/galeria/01.gif

A imagen.php Solo Le Pasaremos galeria/01.gif como valor de ruta:

http://www.servidor.com/cuenta/image...galeria/01.gif

Pero esto no es todo, recordemos que recibe otros dos parametros, los cuales son alto y ancho, Estos no se refieren al alto y ancho de la imagen original, se refieren al alto y ancho que queremos la previsualizacion(Thumbnail), entonces si queremos que nos devuelva la imagen 01.gif, ubicada en el directorio galeria y cuyo tamaño original es de 400 pixeles de anchura y 300 pixeles de altura pero queremos la previsualizacion de 200 pixeles de anchura y 150 pixeles de altura tendriamos que llamarla de esta manera:

http://www.servidor.com/cuenta/image...o=200&alto=150

Obviamente si lo llamamos para presentarlo como imagen dentro de un archivo al usuario(.html, .php, etc), lo llamamos mediante el tag IMG:

<IMG SRC="http://www.servidor.com/cuenta/imagen.php?ruta=galeria/01.gif&ancho=200&alto=150">

Ahora que ya sabemos como llamar a la imagen, vamos a ver como se hace la previsualizacion(Thumbnail), como es que se crea desde una imagen mas grande una imagen mas pequeña tanto en pixeles como en tamaño para su presentacion al usuario.

Primero creamos una copia de la imagen desde archivo, la igualamos a $fuente, ya que alli quedara un identificador de tipo ENTERO(INT) para dirijirnos a la imagen creada, esto es necesario ya que sera de esta imagen que haremos la Previsualizacion(Thumbnail).

Código PHP:

$fuente = @imagecreatefromgif($ruta); 

Recuerdemos que el @imagecreatefromgif() es para imagenes gif, si quiere crear jpeg o png solamente cambie el gif:
Código PHP:

 @imagecreatefromjpeg($rutaó @imagecreatefrompng($ruta

Ahora obtendremos la anchura y altura de la imagen original, esto es necesario para poder hacer la copia de la imagen, para ello utilizamos las funciones imageSX y imageSY, que reciben como parametro un identificador de imagen(en este caso
Código PHP:

 $fuente 

, que es el identificador de la imagen original) y devuelven la anchura y altura de la imagen respectivamente.

Código PHP:

$imgAncho imagesx ($fuente); 
$imgAlto =imagesy($fuente); 

Ahora creamos una imagen nueva en blanco con la anchura y altura que queremos para la previsualizacion(Thumbnail) y que sera la que se le devuelva al usuario cuando se le llame, ya sea directamente en el browser o por medio de la etiqueta IMG de html.

Código PHP:

$imagen ImageCreate($ancho,$alto); 

Ahora lo mas importante, copiaremos la imagen original a la imagen nueva, lo cual hara que al tener un menor tamaño(la imagen nueva), la copia de que hacemos de la original se ajustara al tamaño de esta.

Utilizamos la funcion
Código PHP:

ImageCopyResized() 

la cual sirve para copiar "partes" de una imagen a otra por medio de coordenadas, pero en nuestro caso no necesitamos un pedazo, necesitamos copiar toda la imagen en todo el espacio de la nueva imagen, por ello damos las coordenadas totales de las imagenes.

Esto puede sonar un poco confuso, por eso es mejor que mira la documentacion oficial en http://www.php.net/ para informacion sobre los parametros que recibe esta funcion.

Código PHP:

ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto); 

Listo, ya tenemos nuestra imagen, ahora debemos indicarle al navegador que vamos a devolver una imagen de tipo gif, para ello enviamos la cabecera diciendo el tipo de contenido que enviaremos al navegador.

Código PHP:

Header("Content-type: image/gif"); 

Recuerdemos, que si el formato es jpeg o png solamente cambie el gif:
image/jpeg ó image/png

Ahora devolvemos la imagen directamente al browser(navegador) del usuario.

Código PHP:

imageGif($imagen); 

Recuerdemos, que si el formato es jpeg o png solamente cambie el gif: imageJpeg($imagen) o imagePng($imagen)

--------------------------------------------------------------------------------

Bien espero haya quedado claro, pero vamos a ver otro aspecto, que tal si no queriamos devolver la imagen, lo que queriamos era guardar la nueva imagen(Thumbnail) en el servidor, para su uso posterior?...

Al ponerle un segundo parametro al imageGif($imagen,"imagenPequena.gif"), Lo lograremos, en este caso guardaria la imagen que acabamos de crear en el servidor, especificamente en la misma carpeta con el nombre de "imagenPequena.gif".

Esto puede ser muy util, ya que si queremos crear thumbnails de todas las imagenes en un directorio, podemos hacer un loop que lea los archivos del directorio, y repita el proceso anterior(de crear imagen en blanco y copiar) y guarde las nuevas imagenes para su uso posterior, realmente es una herramienta con muchos usos.

Cabe recordar que su servidor tiene que tener soporte para manipular imagenes, segun el tipo que desee utilizar, en caso de no tenerlo el servidor le dara un mensaje de error como "Jpeg is no support..." dependiendo del formato de imagen.


La zona horaria es GMT -6. Ahora son las 08:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.