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/)

ACHAVARRIA 09/01/2004 11:02

Sitios multilingües
 
Pregunta: Como crear Sitios multilingües?
Respuesta:


http://www.programacionweb.net/index...ticulo&num=111

elanime 17/01/2004 22:10

Contabilizar visitas de páginas internas.
 
Pregunta: ¿Como hago para contabilizar en php y mysql las visitas que tienen mis páginas/secciones internas en mi web?

Respuesta:

Primero de todo crear esta base de datos MySQL con tu PhpMyAdmin:
Código PHP:

CREATE TABLE `secciones` ( 
`
idINT(4NOT NULL AUTO_INCREMENT PRIMARY KEY
`
paginaTEXT NOT NULL
`
contadorINT(4NOT NULL 
); 

Ya creada la base de datos, ir agregando filas segun páginas/secciones tengas haciendo click en insertar de tu PhpMyAdmin adentro de tu base de datos:
id pagina contador
1 /index.php 0
2 /noticias.php 0
3 /juegos.php 0
4 /chat.php 0

Despues, poner este codigo en todas tus páginas/secciones:
Código PHP:

<? 
$link
=mysql_connect("localhost""db","password"); 
mysql_selectdb("secciones",$link); 

$pagina=$_SERVER["PHP_SELF"]; 
$SQL="UPDATE secciones SET contador= contador +1 WHERE pagina ='$pagina'"

mysql_query($sql) or die (mysql_error()); 
?>

Para ver las estadisticas, lo podes hacer examinando tu base de datos, o creando una pagina .php que muestre los datos de esa base de datos de esta manera:
Código PHP:

<?php 
function Conectarse() 

   if (!(
$link=mysql_connect("localhost","db","password"))) 
   { 
      echo 
"Error conectando a la base de datos."
      exit(); 
   } 
   if (!
mysql_select_db("db",$link)) 
   { 
      echo 
"Error seleccionando la base de datos."
      exit(); 
   } 
   return 
$link

?>
<?
   $link
=Conectarse(); 
   
$result=mysql_query("select * from secciones",$link); 
?>
<TABLE style="border-collapse: collapse" border=1 align=center bordercolor=#666E7B CELLSPACING=1 CELLPADDING=1> 
<TR bgcolor=#292B37 bordercolor=#000000><TD bordercolor=#666E7B><center><b>ID:</b><center></TD><TD bordercolor=#666E7B><center><b>Página:</b><center></TD><TD bordercolor=#666E7B><center><b>Visitas:</b><center></TD></TR> 
<?php       

   
while($row mysql_fetch_array($result)) { 
      
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s</td></tr>"$row["id"],$row["pagina"], $row["contador"]); 
   } 
   
mysql_free_result($result); 
   
mysql_close($link); 
?>

Espero que les sea de utilidad.

Un saludo! ;-)

PD: Gracias a Vulcar por su ayuda para terminar este script en el foro de DataFull: http://foros.datafull.com/viewtopic....er=asc&start=0

vic_mx 29/01/2004 12:26

Pregunta: ¿Como hago para saber los usuarios en linea en mi web?
Respuesta: Con esta Clase PHP:
1.- Primero necesitamos usar una tabla que sera la que guarde los registros y esta debe ser su estructura:
Código:

CREATE TABLE `usuariosenlinea` (
`timestamp` int(15) NOT NULL default '0',
`ip` varchar(40) NOT NULL default '',
`location` varchar(100) NOT NULL default '',
KEY `timestamp` (`timestamp`),
KEY `ip` (`ip`),
KEY `location` (`location`)
) TYPE=MyISAM;

Ahora el script, llamalo class.online.php:
Código PHP:

<?php

class Usuariosenlinea
{
/*
    * @autor: victor simental
    * @uri: http://phpwebmasters.com
    * @param string $servidor el host para conectar, usualmente localhost
    * @param string $basededatos el nombre de la base de datos
    * @param string $nombredb el nombre de la tabla, preferentemente no editar
    * @param string $usuario usuario de la base de datos
    * @param string $pass la contraseña de la base de datos
*/

  
var $servidor 'localhost';
  var 
$basededatos 'nombre_de_la_base';
  var 
$nombredb 'usuariosenlinea';
  var 
$usuario 'root';
  var 
$pass 'contraseña';
  
## Fin de Conexion ##
  
  
var $e_rror;
  
//Segundos para borrar de la base de datos a los usuarios inactivos
  
var $segundos 120;
  var 
$ahora 0;

    
//CONSTRUCTOR
    
function Usuariosenlinea() {

    
$this->recargar();

    }
                    
    function 
cuantos() {

    return 
$this->ahora;

    }
                    
    function 
enlinea() {

        if(
$this->ahora == 1) {

    echo 
$this->ahora ." Usuario en linea";
        }
        else
        {
    echo 
$this->ahora ." Usuarios en linea";
        }
        
    }

        function 
ipreal(){

            if (
$real_ip getenv('HTTP_X_FORWARDED_FOR')){
            
                
$explode_real_ip explode(","$real_ip);
                return 
trim($explode_real_ip[0]);
            }
            else
            {
            return 
getenv('REMOTE_ADDR');
            }
        }
        
        function 
error(){

        return 
$this->e_rror mysql_error();

        }
        
        function 
recargar() {
            
            
$tiempo_actual time();
            
$tiempo_final $tiempo_actual $this->segundos;
            
$ip $this->ipreal();
   
        @
mysql_connect($this->servidor$this->usuario$this->pass)
        or die(
'Error al Intentar Conectar con la base de datos '.$this->error().'');

        @
mysql_select_db($this->basededatos)
        or die(
'Error Seleccionando la base de datos '.$this->error().'');
        
        
$result mysql_query("SELECT ip FROM $this->nombredb WHERE ip='$ip'")
        or die(
'Error de lectura en la base de datos '.$this->error().'');
        
        if(
mysql_num_rows($result) == 0){
        
        
mysql_query("INSERT INTO $this->nombredb VALUES ('$tiempo_actual','$ip','$_SERVER[REQUEST_URI]')")
        or die(
'Error al Insertar en la base de datos '.$this->error().'');
        
        }
        else
        
        {        
        
mysql_query("UPDATE $this->nombredb SET timestamp='$tiempo_actual' where ip='$ip'")
        or die(
'Error al Insertar en la base de datos '.$this->error().'');
        }

        
mysql_query("DELETE FROM $this->nombredb WHERE timestamp < $tiempo_final")
        or die(
'Error al intentar borrar en la base de datos '.$this->error().'');

        
$result mysql_query("SELECT ip FROM $this->nombredb")
        or die(
'Error de lectura en la base de datos '.$this->error().'');
                
        
$this->ahora mysql_num_rows($result);
             
        
mysql_close();
              
        }

}

?>

Y ahora la forma de uso:

Código PHP:

<?php
//Pon esta Líneas donde quires que se visualizen los usuarios online
include("class.online.php");

$enlinea = new Usuariosenlinea();
$enlinea->enlinea();
?>


mistyko 01/03/2004 13:49

Pregunta:Cómo Saber la MAC Address
Respuesta:

Script para saber la MAC Address de una máquina en una ethernet probado en un Solaris 9, IRIX y Windows

Vamos a interactuar un poco con el sistema operativo con los comandos ping y arp.

PING (Packet InterNet Groper):

El ping envía uno o más datagramas a un host destino esperando una respuesta, básicamente es utilizado
par ver si el host destino está activo.

Si tienes instalado un firewall(Cortafuegos) en tu red es necesario tener privilegios en el,para
poder ejecutar sin problemas este comando.

Sintaxis del ping:

UNIX:
Solaris 9 /usr/sbin/ping 192.168.0.44 5
Irix:/usr/etc/ping -w 1 192.168.0.44

Windows:
ping -w 1 192.168.0.44

La respuesta que obtenemos al ejecutar un ping varia dependiendo el OS

En Solaris 9: 192.168.0.44 is alive si esta activa y no answer from 148.215.12.1 si no lo esta

En IRIX y Windows:

Haciendo ping a 192.168.0.44 con 32 bytes de datos:

Tiempo de espera agotado para esta solicitud.
Tiempo de espera agotado para esta solicitud.
Tiempo de espera agotado para esta solicitud.
Tiempo de espera agotado para esta solicitud.

Estadísticas de ping para 129.168.0.44:
Paquetes: enviados = 4, recibidos = 0, perdidos = 4 (100% perdidos),
Tiempos aproximados de recorrido redondo en milisegundos:
mínimo = 0ms, máximo = 0ms, promedio = 0ms

lo que nos interesa es "recibidos = 0" si no esta activa y "recibidos = 4" si esta activa


Protocolo ARP (Address Resolution Protocol) : ARP asocia las direcciones físicas de Hardware a
cada dirección IP lógica asignada a una interfaz de red, una Máscara de Control de Acceso al
Medio: es un identificador de Hardware único que es asignado por el fabricante de la NIC.
Las MAC son adjuntadas a las cabeceras de IP origen y destino.

UNIX:
Solaris 9 /usr/sbin/arp 192.168.0.44 5
Irix:/usr/etc/arp 192.168.0.44

Windows:
arp -a 192.168.0.44

Esta es una pequeñísima descripción de ARP y PING.

Código PHP:

<?php
    
    $ip
="192.168.0.44";
    
$comando=`/usr/sbin/ping $ip 5`;
    
//Aquí cambia un poco la salida dependiendo del OS para Irix y Windows:
    // $activa=explode(",",$comando);
    //if (eregi ("0", $activa[1])) echo "La máquina con la IP <b>".$ip."</b> no está activa<br>";
    
if (eregi ("no"$comando)) echo "La máquina con la IP <b>".$ip."</b> no está activa<br>"
    else
    {
        
//Irix:/usr/etc/arp $ip en Window$:arp -a $ip
        
$comando=`/usr/sbin/arp $ip`;
        
ereg(".{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}-.{1,2}|.{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}:.{1,2}"$comando$mac);
            echo 
"La IP <b>".$ip."</b> tiene esta MAC Address <b>".$mac[0]."</b><br>";
    }
    
//By MiStYkO Redes Acatlán UNAM (México)
?>


Jordi1 16/03/2004 03:52

Muchas veces nos preguntamos si el mail que nos ponen en un formualrio es valido, osea que existe, pues bien con esta funcion podemos comprobar si este mail existe, y si este esta escrito correctamente


Código PHP:

<?

function ValidarMail($email) { 
       global 
$HTTP_HOST
       
$resultado = array(); 
       if (!
eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,6}$",$email)) { 
         
$resultadoado[0]=false
         
$resultado['code']="702"
          return 
$resultado
       } 
       list ( 
$Username$dominio ) = split ("@",$email); 
         if (
getmxrr($dominio$MXHost))  $conecta_dominio $MXHost[0]; 
                  else  
$conecta_dominio $dominio
                  
        
$conectar fsockopen $conecta_dominio25 ); 

      if (
$conectar) { 

        if (
ereg("^220"$ver fgets($conectar1024))) { 

           
fputs ($conectar"HELO $HTTP_HOST\r\n"); 
           
$ver fgets $conectar1024 ); 
           
fputs ($conectar"MAIL FROM: <{$email}>\r\n"); 
           
$From fgets $conectar1024 ); 
           
fputs ($conectar"RCPT TO: <{$email}>\r\n"); 
           
$To fgets ($conectar1024); 
           
fputs ($conectar"QUIT\r\n"); 
           
fclose($conectar); 
           if (!
ereg ("^250"$From) || !ereg "^250"$To )) { 
               
$resultado[0]=false
               
$resultado['code']="700"
               return 
$resultado
            } 
        }    
           else { 
              
$resultado[0] = false
              
$resultado['code'] = "Død"
              return 
$resultado
            } 
      }  
        else { 
            
$resultado[0]=false
            
$resultado['code']="701"
            return 
$resultado
      } 

       
$resultado[0]=true
       
$resultado['code']="200"
       return 
$resultado
//fin funcion

/// la funcion superior se puede usar en unix pero en windows XP,200,NT 
//hay que utilizar la funcion que sigue pues windows no soporta la funcion getmxrr, (en win 9X no funcionaria )


/// esta funcion es aportada por irondan_2358

function getmxrr($hostname, &$mxhosts)
{
   
$mxhosts = array();
   
exec('nslookup -type=mx '.$hostname$result_arr);
   foreach(
$result_arr as $line
   {
     if (
preg_match("/.*mail exchanger = (.*)/"$line$matches)) 
         
$mxhosts[] = $matches[1];
   }
   return( 
count($mxhosts) > );

// la un
}

Espero que os sea de utilidad

Saludos

nuevo 31/03/2004 10:47

Funcion Genera Pasw Palabras Legibles - Gd+Sessiones
 
Código PHP:

<?php
function FUNC_generaPassw($num,$may){
    if(empty(
$num)){$num=5;}

    
$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 "";
    
$vc  mt_rand(0,1);

        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);

        if(empty(
$may)){
            
$psw strtoupper($psw);
        }

    
$psw substr($psw,0,$num);

    
session_name('codePaswSession');
    
session_start();
    
session_cache_limiter('nocache,private');
    
ini_set("session.cache_limiter","6400");

    if(empty(
$_SESSION['psw'])){
        
$_SESSION['psw'] = $psw;
    }else{
        
$psw $_SESSION['psw'];
    }
    
    return 
$psw;
}

function 
FUNC_imprimePasswImg($psw,$fontSize,$winSizeW,$winSizeH) {
    if(empty(
$psw)){$psw "ERROR PASSW";}
    if(empty(
$fontSize)){$fontSize=5;}
    if(empty(
$winSizeW)){$winSizeW=72;}
    if(empty(
$winSizeH)){$winSizeH=18;}

    
$width  ImageFontWidth($fontSize) * strlen($string);
    
$height ImageFontHeight($fontSize);
    
$img ImageCreate($winSizeW,$winSizeH);
    
$bgColor ImageColorAllocate($img,102,102,202);
    
$txColor ImageColorAllocate($img,220,220,220);
    
ImageFilledRectangle($img,0,0,$winSizeW,$winSizeH,$bgColor);
    
ImageString($img,$fontSize,0,0,$psw,$txColor);

    
header("content-type: image/png");
    
ImagePng($img);
    
Imagedestroy($img);

}

FUNC_imprimePasswImg(FUNC_generaPassw(8,1),5,72,18);

/*
1º= numero de letras = 8
2º= minusculas = 1 o mayusculas = 0
3º= size-text = 5
4º= sizeW-win = 72
5º= sizeH-win = 18

Para usarlo, crea un fichero xxx.html o xxx.php y le pones esto
1º= Si es HTML solo:
    <img src="func_codeletras.inc.php">

2º= Si ademas de HTML, quieres usar php:
     <img src="func_codeletras.inc.php">
    session_name('codePaswSession');
    session_start();
    session_cache_limiter('nocache,private');
    ini_set("session.cache_limiter","6400");

    echo $_SESSION['psw'];

*/
?>

es la misma de siempre, pero montada

fmmeson 30/04/2004 18:04

Pregunta ¿como configurar mi php y un pequeño servidor de correo en forma local?

Respuesta:

probando un monton de servidores de correo que ocupaban 15MB otros 20MB, me tope con una pequeña MARAVILLA de apenas 288 KB (SIIIII LEISTE BIEN KB) que me permitia sin configurarlo utilizar rapida y comodamente la BENDITA y FAMOSA funcion de PHP mail() para probar mis scripts les listo algunas caracteristicas que me gustaron

- Es muy pequeño 288KB
- Esta en ESPAÑOL
- Posee LOG de todos los eventos que ocurran para enviar un mail
- NO hay que configurar nada!!!
- Permite trabajar como servidor SMTP en un red LAN
- y esto es lo mejor............es FREEWARE!!!!!!!!!

bueno bueno no se desesperen aqui les dejo el link a la pagina oficial y abajo el link para bajarse la version 0.9.77c

pagina oficial de Mini-relay http://webs.ono.com/usr000/NetVicious/
Descarga Directa del Mini-relay 0.9.77chttp://netvicious.iespana.es/netvici.../miniRelay.zip

ahora bien ya tenemos descargado este maravilloso programita, pasamos a configurar el PHP.INI de nuestra carpeta windows.

Buscamos la directiva SMTP y le asignamos la ip: 127.0.0.1 entonces quedaria asi:

[mail function]
; For Win32 only.
SMTP = 127.0.0.1

y listo!!!!! a probar los scripts no mas!!!!!! SUERTE!!!!

Cluster 04/05/2004 10:12

Tema: Formularios+Mysql

Pregunta: Como hacer una lista desplegable (<select> ) con valores de una tabla Mysql que dependa del valor seleccionado en la primera.

Respuesta:

Se trata de hacer una consulta a tu tabla "hija" con la clausula (confición) que identifique la relación entre ambas tablas. (usando como clave un campo de nuestra tabla hija q nos haga de clave foranea para nuestra consulta). En este caso usaremos el campo id_padre de la tabla_hija como "clave foranea" .. ambos del mismo tipo y relación 1 -> N (1 registro es a muchos registros de la otra tabla ..)

Partiende de una estructura SQL así: (como ejemplo completo de funcionamiento ..adaptenla a sus necesidades)

Código:

#
# Estructura de tabla para tabla `tabla_hija`
#

CREATE TABLE tabla_hija (
  id tinyint(3) unsigned NOT NULL auto_increment,
  id_padre tinyint(3) unsigned NOT NULL default '0',
  item_texto varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

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

INSERT INTO tabla_hija VALUES (1, 1, 'tabla_hija - Item grupo 1 bla bla bla');
INSERT INTO tabla_hija VALUES (2, 2, 'tabla_hija - grupo 2 item 1');
INSERT INTO tabla_hija VALUES (3, 2, 'tabla_hija - grupo 2 item 2');
INSERT INTO tabla_hija VALUES (4, 3, 'tabla_hija - grupo 3 item probando');
INSERT INTO tabla_hija VALUES (5, 1, 'tabla_hija - item grupo 1 noseq pner');
# --------------------------------------------------------

#
# Estructura de tabla para tabla `tabla_padre`
#

CREATE TABLE tabla_padre (
  id tinyint(3) unsigned NOT NULL auto_increment,
  item_texto varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

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

INSERT INTO tabla_padre VALUES (1, 'Grupo 1');
INSERT INTO tabla_padre VALUES (2, 'Grupo 2');
INSERT INTO tabla_padre VALUES (3, 'Grupo 3');
INSERT INTO tabla_padre VALUES (4, 'Grupo 4');


Y el código de nuestras consultas a realizar:



Código PHP:

<?php
// datos de conexion a la BD.
$servidor  ="localhost"// host
$usuario   =""
$clave     ="";
$basedatos =""// Indicar una Base de datos.

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario ..
// Sino, se continua con el formulario y los nuevos valores de los Select ..
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda.

if (!empty($_POST['enviado'])){

// Procesar el formulario ...
echo "Procesando formulario:<br>";
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija'];

} else {

   
// Conexión a la BD
   
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error());
   
mysql_select_db($basedatos$conexion) or die(mysql_error());

   
// Obtener el $id_padre del envio a si mismo del formulario ..
   
$id_padre=$_POST['id_padre'];

   
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
   
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";

   
// Formar Selec "Padre".
   
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
   echo 
"<option value=\"\"> Seleccione un Item </option>\n";

   
$SQLconsulta_padre="SELECT * FROM tabla_padre";
   
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());

   While   (
$registro_padre=mysql_fetch_assoc($consulta_padre)){
      
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
      // Se selecciona en consecuencia (selected) la opción elegida.
      
if ($id_padre == $registro_padre['id']){
         echo 
"<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['item_texto']."</option>\n";
      } else {
         echo 
"<option value=\"".$registro_padre['id']."\">".$registro_padre['item_texto']."</option>\n";
      }
    }
   echo 
"</select>\n\n";

   
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.

   // Formar Select "Hijo"
   
echo "<select name=\"id_hija\">\n";

   
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
   // se muestra el mensaje de "seleccine un item" (del select padre).
   
if (!empty($id_padre)){

       
$SQLconsulta_hija="SELECT * FROM tabla_hija WHERE id_padre='$id_padre'";
       
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
       
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
       
if (mysql_num_rows($consulta_hija) != 0){
          While   (
$registro_hija=mysql_fetch_assoc($consulta_hija)){
            echo 
"<option value=\"".$registro_hija['id']."\">".$registro_hija['item_texto']."</option>\n";
          }
        } else {
            echo 
"<option value=\"\"> No hay registros para este Item </option>";
        }
    } else {
        echo 
"<option value=\"\"> <-- Seleccione un Item  </option>";
    }

    
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.
    
    
echo "</select>\n\n";
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
    echo 
"</form>\n";
}


Otras Técnicas que sería interesante ver sobre el tema, sería el denominado "Remote Scripting" que se basa en disponer de iframe/frames ocultos donde se realiza la petición de datos al servidor (petición de nuestro .php que ejecutará la consulta SQL pertinente y obtendrá sus datos), eso datos serán "pasados" a la página principal (frame o "padre" que contenga el iframe oculto) por médio de javascript. De esta forma .. no se verá una recarga "aparente" de la página que estamos visualizando sin que será ese "frame" el que se recarga ante una petición que hagamos vía javascritp de mover algún <select> u otro evento javascript que lance dicho proceso de "Remote Scripting".

Puede ver un tutorial sobre el tema con algunos ejemplos en:
http://www.ashleyit.com/rs/main.htm


Un saludo,

PD: Agradecimiento a bhonox por localizar esta FAQ "perdida" xDD.

HiperJP 03/06/2004 11:50

Función para Dígito Verificador de RUT (Chile)
 
Tema: Funciones
Pregunta: ¿Como puedo obtener el dígito verificador de un RUT? (Chile)
Respuesta:

Sólo coloca esta función en el lugar que más te acomode, obviamente antes de hacerle una llamada :risa:

Código PHP:

<?php 
/*********************************************************
Función Validador de Dígito verificador RUT, by HiperJP - 2003
Ult. Modificación: 26-08-2003 7:58 AM
Convertido originalmente de una versión en ASP.
*********************************************************/
function ValidaDVRut($rut) {

    
$tur strrev($rut);
    
$mult 2;

    for (
$i 0$i <= strlen($tur); $i++) { 
       if (
$mult 7$mult 2
    
       
$suma $mult substr($tur$i1) + $suma;
       
$mult $mult 1;
    }
    
    
$valor 11 - ($suma 11);

    if (
$valor == 11) { 
        
$codigo_veri "0";
      } elseif (
$valor == 10) {
        
$codigo_veri "k";
      } else { 
        
$codigo_veri $valor;
    }
  return 
$codigo_veri;
}
?>

La función en si retorna el Digito Verificador del rut pasado como parámetro en $rut (ojo, sólo RUT, sin DV). Para su utilización, hacen una llamada de la forma:

Código PHP:

if (ValidaDVRut($_POST['rut'])==$_POST['rut_dv'])
echo 
"Rut válido!!";
else
echo 
"Rut inválido!!"

Donde, $_POST['rut'] es la variable que trae el rut completo, sin puntos, pasada por un formulario.
y, $_POST['rut_dv'] es la variable que nos trae el DV enviado por el mismo formulario.
Luego de esto es una simple comparación :risa:


Eso seria, espero les sirva de algo :adios:

PD: Quedo espectacular la implementación de la nueva versión de vBulletin, resaltan las nuevas opciones :aplauso:

vic_mx 09/06/2004 11:24

Mini phpMyAdmin
 
¿Como creo una tabla sql en línea, usando php?
La respuesta es este script:
Su funcionamientos es bastante simple, ya que consta de un Formulario y la parte donde ejecutara la consulta simulando un mini phpMyAdmin, pero mucho mas sencillo. La razón de este manual es por que cuando empezaba a aprender este lenguaje (PHP), no sabia como ejecutar una, y por esa razón creo que aun debe haber varios con ese problema, esperando que de alguna manera esto le pueda servir a alguien.
Empezaremos creando nuestro formulario que contendrá lo siguiente:
Código HTML:

<html>
<head>
<title>Crear Tabla En Línea</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
BODY { COLOR: #333333; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 9pt;}
INPUT {FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; BACKGROUND-COLOR: #D8D8C4;}
TEXTAREA {FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; BACKGROUND-COLOR: #D8D8C4;}
</style>
</head>
<body>

<form action="tabla.php" method="post">
<table border="0" align="center">
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Servidor</b></font>
</td><td><input type='text' name='host' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Usuario</b></font>
</td><td><input type='text' name='user' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Contrase&ntilde;a</b></font>
</td><td><input type='password' name='pass' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Base de Datos</b></font>
</td><td><input type='text' name='dbnombre' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>SQL *</b></font>
</td><td><textarea name='sql' rows=15 cols=60 value=''></textarea></td>
</tr>

</table>
<center><input type="hidden" name="install" value="1"><input type="submit" value="Crear Tabla"><br><br>
<font face="verdana" size="-2" color="#333333">* Ejecutar una Tabla cada ves</font>
</center>
</form>
</body>
</html>

Aquí pondremos los datos para conectarnos con nuestra base de datos y nuestra tabla, debemos notar que lleva un campo oculto (hidden) el cual determinara si debe o no ejecutarse la consulta sql, tal y como se ve en la foto:
http://phpwebmasters.com/manuales/sql.gif
Este es el contenido del script, el cual debes guardar como tabla.php
Código PHP:

<?php
//Enviamos las variables por metodo post y usamos los arrays superglobales $_POST
$install $_POST['install'];
$host $_POST['host'];
$user $_POST['user'];
$pass $_POST['pass'];
$dbnombre $_POST['dbnombre'];
$sql $_POST['sql'];

if(
$install == 1){// Igual a 1 ejecutamos la consulta, si no muestro el formulario
//Conecto con la DB
$conexion mysql_connect($host,$user,$pass);
if (!@
mysql_select_db($dbnombre)){
echo (
"Imposible Conectar");
exit();
}
//Quito las comillas
$sql str_replace("`"""$sql);
$sql str_replace("\\"""$sql);

if(!@
mysql_query($sql,$conexion)){//Ejecuto la consulta y creamos la Tabla
echo "Error: ".mysql_error();
}
else
{
$sql nl2br($sql);
//Finalmente Imprimo la Tabla y envio un mensaje de exito
$formulario2 = <<<EOF
<html>
<head>
<title>Crear Tabla En Línea</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
BODY {    COLOR: #333333; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 9pt;}
INPUT  {FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; BACKGROUND-COLOR: #D8D8C4;}
TEXTAREA  {FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; BACKGROUND-COLOR: #D8D8C4;}
</style>
</head>
<body>
<center><B>La Tabla ha sido creada con éxito</B></center>
$sql
</body>
</html>
EOF;
echo 
$formulario2;

}
}
else
{
$formulario = <<<EOF
<html>
<head>
<title>Crear Tabla En Línea</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
BODY {    COLOR: #333333; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 9pt;}
INPUT  {FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; BACKGROUND-COLOR: #D8D8C4;}
TEXTAREA  {FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; BACKGROUND-COLOR: #D8D8C4;}
</style>
</head>
<body>

<form action="tabla.php" method="post">
<table border="0" align="center">
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Servidor</b></font>
</td><td><input type='text' name='host' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Usuario</b></font>
</td><td><input type='text' name='user' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Contrase&ntilde;a</b></font>
</td><td><input type='password' name='pass' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>Base de Datos</b></font>
</td><td><input type='text' name='dbnombre' value=''></td>
</tr>
<tr>
<td>
<font face="verdana" size="-2" color="#333333"><b>SQL *</b></font>
</td><td><textarea name='sql' rows=15 cols=60 value=''></textarea></td>
</tr>

</table>
<center><input type="hidden" name="install" value="1"><input type="submit" value="Crear Tabla"><br><br>
<font face="verdana" size="-2" color="#333333">* Ejecutar una Tabla cada ves</font>
</center>
</form>
</body>
</html>
EOF;
echo 
$formulario;
}

?>

Aquí mismo puedes bajar el ejemplo, pero al menos inténtalo una ves, suerte.
http://phpwebmasters.com/descargas/tabla.zip

yoseman 09/08/2004 17:35

Cómo mostrar una tabla de mi base de datos entera (con título de columnas y datos)
 
Tema: PHP y MySQL

Pregunta:
Cómo mostrar una tabla de mi base de datos entera (con título de columnas y datos)

Respuesta:

Código PHP:

<?php
include('config.php');  //INCLUIMOS SCRIPT DE CONEXIÓN A BASE DE DATOS
$tabla="Nombre de la tabla";   //NOMBRE DE LA TABLA A MOSTRAR
$result mysql_query("select * from $tabla"); 
echo 
"<table bgcolor=\"#DDDDDD\" align=center style=\"border:2px outset black\">";
for (
$i 0$i mysql_num_fields($result); $i++)
    { 
    print 
"<th>".mysql_field_name($result$i)."</th>\n"
    } 
while (
$registro mysql_fetch_row($result))
    {
    echo 
"<tr>";
    foreach(
$registro  as $clave)
        {
        echo 
"<td bgcolor=\"#BBBBBB\"style=\"border:2px groove black\" align=\"center\">",$clave,"</td>";
        }
    }
echo 
"</tr></table>";
mysql_close(); 
?>

Sólo es necesario incluir el script de conexión a la base de datos y el nombre de la tabla que queremos mostrar y cómo resultado veremos nuestra tabla ordenada con los títulos de las columnas

HiperJP 11/09/2004 18:02

Creando un menú de lista por medio de una función.
 
Tema: Funciones en PHP

Pregunta:
¿Como puedo crear por medio de una función un menu de lista pasandole como parámetros el nombre, cadena de etiquetas y cadena de valores?.

Respuesta:

Puedes utilizar esta pequeña función creada por mi :-D (lee las notas IMPORTANTES)

Código PHP:

/* ### Function to create listbox from values and labels in arrays (Nº labels = Nº values). ###
* Compatible with PHP4 (function array_combine() must be present).
* @param string $nombre: The SELECT name.
* @param string $arr_etiquetas (comma separated or \n): The labels of the SELECT.
* @param string $arr_valores (comma separated or \n): The values of the SELECT.
* ************************************************************************************
* Author: Jean Pierre Martínez @ 26-07-2004 13:45 [[email protected]]

* Por favor notificame antes o después de realizar cualquier cambio, te lo agradeceré. :P
*/
function combinedListbox ($nombre$str_etiquetas$str_valores) {
if (!isset(
$nombre)) {
trigger_error('combinedListbox() expects parameter 1 to be defined, NULL given'E_USER_WARNING); 
     return 
null;
}
if (!
is_string($str_etiquetas)) {
trigger_error('combinedListbox() expects parameter 2 to be string, '.gettype($str_etiquetas).' given'E_USER_WARNING); 
     return 
null;
}
if (!
is_string($str_valores)) {
trigger_error('combinedListbox() expects parameter 3 to be string, '.gettype($str_valores).' given'E_USER_WARNING); 
     return 
null;
}
 
// Creamos array con elementos de etiqueta/valor (debe ser la misma cantidad en ambos).
$arr_etiquetas split("[,\n]"$str_etiquetas);
$arr_valores split("[,\n]"$str_valores);
 
// Verificar que la cantidad de etiquetas sea igual al de valores.
if (count($arr_etiquetas) != count($arr_valores)) {
trigger_error('combinedListbox() must contain an equal number of keys and values'E_USER_WARNING); 
     return 
null;
}
 
// Crear array de elementos combinados.
$array_listbox array_combine($arr_etiquetas$arr_valores);
 
$listbox "<SELECT NAME=\"$nombre\">\n";
foreach (
$array_listbox as $etiqueta => $valor)
{
$etiqueta trim($etiqueta);
$valor trim($valor);
$listbox .= " <OPTION VALUE=\"$valor\">$etiqueta</OPTION>\n";
}
$listbox .= "</SELECT>\n";
return 
$listbox;


IMPORTANTE:
Esta función utiliza la función (valga la redundancia) del lenguaje array_combine() que viene incluida con PHP5, para los usuarios de PHP4 pueden utilizar ésta misma función del mismo nombre la cual, en caso de trasladar la funcion combinedListbox() a PHP5, no entrará en conflicto con la que trae ésta.

Código PHP:

// Función 'array_combine' para PHP4.
if (!function_exists('array_combine')) 

    function 
array_combine($keys$values
    { 
        if (!
is_array($keys)) { 
            
trigger_error('array_combine() expects parameter 1 to be array, ' gettype($keys) . ' given'E_USER_WARNING); 
            return 
null
        } 
        if (!
is_array($values)) { 
            
trigger_error('array_combine() expects parameter 2 to be array, ' gettype($values) . ' given'E_USER_WARNING); 
            return 
null
        } 
        if (
count($keys) !== count($values)) { 
            
trigger_error('array_combine() Both parameters should have equal number of elements'E_USER_WARNING); 
            return 
false
        } 
        if (
count($keys) === || count($values) === 0) { 
            
trigger_error('array_combine() Both parameters should have number of elements at least 0'E_USER_WARNING); 
            return 
false
        } 
        
$keys    array_values($keys); 
        
$values array_values($values); 
        
$combined = array (); 
        for (
$i 0$cnt count($values); $i $cnt$i++) { 
            
$combined[$keys[$i]] = $values[$i]; 
        } 
        return 
$combined
    } 



José Molina 22/09/2004 07:22

Forzar al IE a mostrar las imagenes sin usar su cache
 
Tema: Imágenes
Pregunta: Cómo hago para forzar al IE a que me recargue una imagen sin usar su cache.
Respuesta:

Cuando usamos en una página la carga de imágenes que siempre tienen el mismo nombre, el IE busca esa imagen en su cache.

Los metodos como:

Código PHP:

     // Fecha en el pasado
    
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    
// siempre modificado
    
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
     
    
// HTTP/1.1
    
header("Cache-Control: no-store, no-cache, must-revalidate");
    
header("Cache-Control: post-check=0, pre-check=0"false);
    
// HTTP/1.0
    
header("Pragma: no-cache"); 

Solamente afectan a los archivos include, css, js, html, etc. Pero no a las imagenes (Referenciado por Cluster)

Entonces lo que hay que hacer es "engañar" al IE, haciendole creer que nuestra imagen es una página dinamica. (Referenciado por josemi)

Al mandar a imprimir la imagen en la etiqueta HTML le contatenamos un número aleatorio dentro de un query string:

Código PHP:

$Nombre_Foto "foto.jpg"//Nombre de la imagen a mostrar
      
$var md5(time()); // Generamos el valor aleatorio
    
$Nombre_Foto "foto.jpg?var=".$var//Contatenamos la variable 

Código HTML:

<img src="<?php echo $Nombre_Foto; ?>">
Suerte

José Molina 27/09/2004 14:21

Mostrar la cantidad que quiero de palabras
 
Tema: Funciones.
Pregunta: ¿Cómo puedo mostrar la cantidad que quiero de palabras?
Respuesta:

Tenemos una función que nos puede servir de mucho: str_word_count()

Código PHP:

  $CAMPO "Texto de prueba que puede venir de una DB por ejemplo";
 
$PALABRAS str_word_count($CAMPO1); //Ordeno en un arreglo cada palabra
 
$NUM_PALABRAS str_word_count($CAMPO);//Obtengo el número de palabras
 
$NUM_PALABRAS_SHOW "20"//Fijo la cantidad que quiera de palabras a mostrar. En este caso del ejemplo coloque 20
 
 
if ($NUM_PALABRAS $NUM_PALABRAS_SHOW) {
    for (
$i=0$i<=$NUM_PALABRAS_SHOW$i++) {
       
$PARRAFO .= $PALABRAS[$i]." ";
    }
    echo 
$PARRAFO;
 }else{
    echo 
$CAMPO;
 } 

Suerte

Takitei 27/09/2004 17:16

Tema: Generando archivos no HTML (creo)
Pregunta: ¿Cómo hacer un código visual de seguridad? (CAPTCHA)
Respuesta: Muchos hemos querido desarrollar un código visual al estilo Google, Hotmail, etc... donde tenemos que escribir en un campo input el contenido de una imagen.

Este código fue originalmente solicitado por Section1, desarrollado por Cluster, con aportes de josemi, sin embargo... tenía algunos errorcitos pequeños de sintaxis que corregí.

Basicamente serían 4 archivos:

gen_codigo.php
donde se generará el código que mostrará nuestra imagen
Código PHP:

<?php
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(time())) .
eregi_replace($exp_reg""md5(time())) .
eregi_replace($exp_reg""md5(time())),
0$longitud);
}
?>

tupagina.php
donde colocarás tu formulario y aparecerá la imagen generada
Código PHP:

<?php
// inicio uso sesiones.
session_start();
// aquí metes tu función genera_password
include ("gen_codigo.php");
// llamas a la función para generar un password.
$pass=genera_password(8);
// lo dejamos en una variable de sesión para poderlo leer de forma segura en otro proceso.php ...
$_SESSION['mipass']=$pass;
?>
<html>
</head>
</head>
<body>
<!-- .. etc y tu formulario con -->
<form action="procesa.php" method="POST">

<!-- la imagen generada con nuestro password ... -->
<img src="genera_img.php">

<input type="text" name="pass">
etc... campos y botón enviar ...
</form>
</body>
</html>

genera_img.php
el cual precisamente generará la imagen que contendrá el password generado por gen_codigo.php
Código PHP:

<?php
// Iniciamos uso de sesiones ...
session_start(); 

//recogemos el texto por el URL que enviamos a generar desde el link de imagen del HTML de nuestro formulario
$codigo=$_SESSION['mipass'];

//nombres tipografías a usar (sin extensión .ttf)
$tipografias = array("fuente1","fuente2");

//directorio donde estén las fuentes (ruta absoluta) importante el último /
$tipografias_ruta "C:\WINDOWS\Fonts\\";
// $tipografias_ruta="/home/sito/public_html/fonts/"; linux

//inicializa eje X desde donde se empezará a dibujar el código (referente al tamaño de la caja)
$espacio 0;

//tamaño fuente.
$tamano_fuente 20;

//profundidad caracteres/digitos del código a generar (password).
$profundidad_codigo 6// (alfanuméricos)

//cálculo Ancho automático de la caja
$x=150;
$y=40;
$angmax 20;
$hori 50;
$verti 100;
// Iniciar la generación de la imagen. Se define una caja de $x por $y pixels.
$im imagecreate($x$y);


//definición Colores. Expresados en valores R G B (respectivamente).
$color_fondo imagecolorallocate($im255255255); // Blanco
$color_texto imagecolorallocate($im000); // Negro

for($caracter=0$caracter<$profundidad_codigo$caracter++){
    
$rhori rand(-$hori$hori);
    
$rverti rand(-$verti$verti);
    
// intento de lineas
    
$lineColor imagecolorallocate($im000);
    
$lineColor2 imagecolorallocate($im000);
    
imagefill($im00$color_fondo);
    
//imageline( imagen, separacion izq, separacion superior, largo, inclinacion)

    //linias horizontales
    
imageline($im0$rhori200$rhori$lineColor);
    
imageline($im0$rhori+20200$rhori+20$lineColor);
    
// linias verticales, 
    
imageline($im$rverti025700$lineColor);
    
imageline($im$rverti+20025700$lineColor);

}


for(
$caracter=0$caracter<$profundidad_codigo$caracter++){
  
//seleccion de una tipografía aleatoria.
  
$indice_aleatorio=array_rand($tipografias);
  
$tipografia=$tipografias_ruta.$tipografias[$indice_aleatorio].'.ttf';

  
//separación entre caracteres
  
$espacio +=$tamano_fuente;
  
$ang rand(-$angmax$angmax); 
  
//generar el caracter gráfico.
  //imagettftext($im, $tamano_fuente, 0, $espacio, $tamano_fuente, $color_texto, $tipografia , $codigo{$caracter});
  
imagefttext($im$tamano_fuente$ang$espacio30$color_texto$tipografia$codigo{$caracter});
  
}

//cabecera HTTP la cual indica al navegador que la imagen que estamos generando es .PNG
header('Content-type: image/png');

//genera un png dinámico
imagepng($im);
//destruye la imagen del servidor
imagedestroy($im);
?>

procesa.php
el cual mostrará el resultado en cuando al proceso, si la imagen es correcta o incorrecta.
Código PHP:

<?php
// inicio sesiones
session_start();
// Checamos que haya un valor en la sesion para evitar robots...
if(empty($_SESSION['mipass'])) {
    
header("Location: tupagina.php");
}
// Checamos que haya un codigo minimo...
if(empty($_POST['pass'])) {
    echo 
"No escribiste nada";
}
// Comparamos los valores
if ($_SESSION['mipass'] == $_POST['pass']){
    echo 
"código/contraseña aceptado .. coincide ...";
} else {
    echo 
"Pues el código/contraseña NO coincide ...";
}

// Y nos deshacemos de la sesión ...
unset($_SESSION);
session_destroy();
?>

Eso es todo. Asi crearemos el propio sistema seguro para que nuestros usuarios se registren en nuestra página sin usar robots. Muy util cuando nuestra web es muy recurrida. Suerte!

Discusión completa en: http://www.forosdelweb.com/f18/como-hacer-codigo-visual-seguridad-183848/
Actualización 22/6/2006 por bauhaus1975: falta inicio sesión en genera_imagen.php
Actualizado: 21/02/08 por GatorV: mejorado el codigo para el Captcha y agregado codigo para verificar y prevenir contra Spam Bots.

The_Dark_Roy 27/10/2004 09:26

¿como Pasar un numero a palabras?
 
Pregunta:¿Como pasar numero a palabras?
Respuesta:Esta Funcion es Demasiado Buena. La Busque en los faq y no la encontre asiq ue tuvimos que hacerla, y como no soy amargao ni apretao aqui esta.

Bueno esta funcion la necesitaba para Imprimir un Comprobante de pago al cual aparate del monto en digitos habia que imprimirlo con palabras.
Código PHP:


$numeros 
=    array("-""uno""dos""tres""cuatro""cinco""seis""siete""ocho""nueve");
        
$numerosX =   array("-""un""dos""tres""cuatro""cinco""seis""siete""ocho""nueve");
        
$numeros100 = array("-""ciento""doscientos""trecientos""cuatrocientos""quinientos""seicientos""setecientos""ochocientos""novecientos");
        
$numeros11 =  array("-""once""doce""trece""catorce""quince""dieciseis""diecisiete""dieciocho""diecinueve");
        
$numeros10 =  array("-""-""-""treinta""cuarenta""cincuenta""sesenta""setenta""ochenta""noventa");

        function 
tresnumeros($n$last) {
            global 
$numeros100$numeros10$numeros11$numeros$numerosX;
            if (
$n == 100) return "cien ";
            if (
$n == 0) return "cero ";
            
$r "";
            
$cen floor($n 100);
            
$dec floor(($n 100) / 10);
            
$uni $n 10;
            if (
$cen 0$r .= $numeros100[$cen] . " ";

            switch (
$dec) {
                case 
0$special 0; break;
                case 
1$special 10; break;
                case 
2$special 20; break;
                default: 
$r .= $numeros10[$dec] . " "$special 30; break;
            }
            if (
$uni == 0) {
                if (
$special==30);
                else if (
$special==20$r .= "veinte ";
                else if (
$special==10$r .= "diez ";
                else if (
$special==0);
            } else {
                if (
$special == 30 && !$last$r .= "y " $numerosX[$n%10] . " ";
                else if (
$special == 30$r .= "y " $numeros[$n%10] . " ";
                else if (
$special == 20) {
                    if (
$uni == 3$r .= "veintitrés ";
                    else if (!
$last$r .= "veinti" $numerosX[$n%10] . " ";
                    else 
$r .= "veinti" $numeros[$n%10] . " ";
                } else if (
$special == 10$r .= $numeros11[$n%10] . " ";
                else if (
$special == && !$last$r .= $numerosX[$n%10] . " ";
                else if (
$special == 0$r .= $numeros[$n%10] . " ";
            }
            return 
$r;
        }

        function 
seisnumeros($n$last) {
            if (
$n == 0) return "cero ";
            
$miles floor($n 1000);
            
$units $n 1000;
            
$r "";
            if (
$miles == 1$r .= "mil ";
            else if (
$miles 1$r .= tresnumeros($milesfalse) . "mil ";
            if (
$units 0$r .= tresnumeros($units$last);
            return 
$r;
        }

        function 
docenumeros($n) {
            if (
$n == 0) return "cero ";
            
$millo floor($n 1000000);
            
$units $n 1000000;
            
$r "";
            if (
$millo == 1$r .= "un millón ";
            else if (
$millo 1$r .= seisnumeros($millofalse) . "millones ";
            if (
$units 0$r .= seisnumeros($unitstrue);
            return 
$r;
        } 

la funcion que se usa es docenumeros($numero)

ojala les sirva....

Reynier 28/10/2004 11:43

Calendario
 
Tema: Calendarios y Fechas
Pregunta: ¿Cómo creo un calendario de con días y meses donde los vínculos solo lleguen hasta el dia, mes y año actual?
Respuesta: Bueno a lo mejor muchos se han visto en este problema de crear calendario para mantener las cosas y realizar consultas a BDatos obtniendo las mismas por fechas. El calendario Consta de 4 funciones básicas:
Código PHP:

 DiaSemana($dia,$mes,$ano); 
 
NombreMes($mes);
 
ultimoDia($mes,$ano);
 
Calendar($mes,$ano); 

En la función DiaSemana($dia,$mes,$ano) lo que hacemos es devolver el día de la semana numéricamente, o sea, 1,2,3,4,5,6,7 según corresponda.
Código PHP:

function DiaSemana($dia,$mes,$ano){ 
  
$numerodiasemana date('w'mktime(0,0,0,$mes,$dia,$ano)); 
  if(
$numerodiasemana == 0){ $numerodiasemana 6; } else { $numerodiasemana--; } 
  return 
$numerodiasemana


En la función NombreMes($mes) lo que hacemos es darle nombre a los meses ya que la función date() de PHP los devuelve pero en Inglés.
Código PHP:

function NombreMes($mes){ 
  switch (
$mes){ 
   case 
1:  $nombre "Ene";  break; 
   case 
2:  $nombre "Feb";  break; 
   case 
3:  $nombre "Mar";  break; 
   case 
4:  $nombre "Abr";  break; 
   case 
5:  $nombre "May";  break; 
   case 
6:  $nombre "Jun";  break; 
   case 
7:  $nombre "Jul";  break; 
   case 
8:  $nombre "Ago";  break; 
   case 
9:  $nombre "Sep";  break; 
   case 
10$nombre "Oct";  break; 
   case 
11$nombre "Nov";  break; 
   case 
12$nombre "Dic";  break; 
  } 
  return 
$nombre


En la función ultimoDia($mes,$ano) lo que hacemos es calcular el último día que tiene el mes con el cual estamos construyendo el calendario para así construir la tabla con todos los días.
Código PHP:

function ultimoDia($mes,$ano){ 
  
$ultimo_dia=28
  while (
checkdate($mes,$ultimo_dia 1,$ano)){ $ultimo_dia++; } 
  return 
$ultimo_dia


Código PHP:

# Calendario de meses 
function Calendar($mes,$ano){ 
  
$nombremes NombreMes($mes); 
  
$mes_anterior $mes 1
  
$ano_anterior $ano
  if (
$mes_anterior == 0){ 
   
$ano_anterior--; 
   
$mes_anterior 12
  } 
  
$mes_siguiente $mes 1
  
$ano_siguiente $ano
  if (
$mes_siguiente==13){ 
   
$ano_siguiente++; 
   
$mes_siguiente=1
  } 
  echo 
"<table width='100'  border='0' cellspacing='0' cellpadding='0' align='center'>"
  echo 
"</table>"
  echo 
"<table width='100'  border='0' cellspacing='0' cellpadding='0' align='center' class='calendar'>"
  echo 
"<tr><td colspan='7' class='normal fontbig bold alterno calendar' align='center'><a href='".basename($_SERVER['PATH_TRANSLATED'])."?mes=".($mes_anterior)."&ano=".($ano_anterior)."&sid=".session_id()."'><< </a> ".$nombremes." ".$ano." <a href='".basename($_SERVER['PATH_TRANSLATED'])."?mes=".($mes_siguiente)."&ano=".($ano_siguiente)."&sid=".session_id()."'>>> </a></td></tr>"
  echo 
"<tr>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>D</td>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>L</td>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>M</td>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>M</td>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>J</td>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>V</td>"
  echo 
"<td align='center' bgcolor='#F0F8FE'>S</td>"
  echo 
"</tr>"
  
$dia_actual 1
  
$numero_dia DiaSemana(1,$mes,$ano); 
  
$ultimo_dia ultimoDia($mes,$ano); 
  
$diaact date("d"); 
  
$mesact date("m"); 
  
$anoact date("Y"); 
  echo 
"<tr>"
  for(
$i=-1;$i<6;$i++){ 
   if((
$dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
    
$bgcolor "#F0F8FE"
   }elseif((
$dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){ 
    
$bgcolor "#D8D8D8"
   }elseif (
$mes>$mesact){ 
    
$bgcolor "#D8D8D8"
   } 
   if((
$dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
    
$enlace "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id().""
   }else{ 
    
$enlace ""
   } 
   if(
$i $numero_dia){ 
    echo 
"<td class='calendar' bgcolor='#D8D8D8'>&nbsp;</td>"
   }else{ 
    echo 
"<td align='center' bgcolor='".$bgcolor."'><a href=".$enlace."><span class='info' title='Mostrar contenido de ".($dia_actual."-".$mes."-".$ano)."'>".$dia_actual."</span></a></td>"
    
$dia_actual++; 
   } 
  } 
  echo 
"</tr>"
  
$numero_dia 0
  while(
$dia_actual <= $ultimo_dia){ 
   if((
$dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
    
$bgcolor "#F0F8FE"
   }elseif((
$dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){ 
    
$bgcolor "#D8D8D8"
   }elseif (
$mes>$mesact){ 
    
$bgcolor "#D8D8D8"
   } 
   if((
$dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
    
$enlace "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id().""
   }else{ 
    
$enlace ""
   } 
   if (
$numero_dia == 0
    echo 
"<tr>"
    echo 
"<td align='center' bgcolor='".$bgcolor."'><a href=".$enlace."><span class='info' title='Mostrar contenido de ".($dia_actual."-".$mes."-".$ano)."'>".$dia_actual."</span></a></td>"
    
$dia_actual++; 
    
$numero_dia++; 
    if (
$numero_dia == 7){ 
     
$numero_dia 0
     echo 
"</tr>"
    } 
   } 
  for (
$i=$numero_dia;$i<7;$i++){ 
   echo 
"<td bgcolor='#D8D8D8'>&nbsp;</td>"
  } 
  echo 
"</tr>"
  echo 
"</table>"


Se usa de esta forma. Si la tienes en un archivo externo al tuyo, donde vas a usar la función sería algo como esto:
Código PHP:

 include("calendar-functions.php");
 
$mes = isset($_GET['mes'])?$_GET['mes']:date("m");
 
$ano = isset($_GET['ano'])?$_GET['ano']:date("Y");
 
Calendar($mes,$ano); 

sino simplemente sería esto:
Código PHP:

 $mes = isset($_GET['mes'])?$_GET['mes']:date("m");
 
$ano = isset($_GET['ano'])?$_GET['ano']:date("Y");
 
Calendar($mes,$ano); 

espero les sirva.
Salu2

José Molina 29/10/2004 08:20

Restar Fechas en DB
 
Pregunta: ¿Cómo puedo restar 2 fechas que se encuentran en campos de mi DB directamente con el MySQL?
Respuesta:

Primero debemos asegurarnos que ambos campos son de tipo DATETIME.

Para el ejemplo, usaremos: Campo 1 = fecha_inicio; Campo 2 = fecha_fin; Tabla en la DB = nombre_tabla

La función a utilizar será TIME_TO_SEC.

EJ:

Código PHP:

$sql_tiempo="SELECT TIME_TO_SEC(fecha_fin)-TIME_TO_SEC(fecha_inicio) as tiempo_transcurrido FROM nombre_tabla";

$execute_sql=mysql_query($sql_tiempo);
            
$row=mysql_fetch_object($execute_sql);
$tiempo_capturado $row->tiempo_transcurrido;
$tiempo_transcurrido intval($tiempo_capturado/60)." min ".($tiempo_capturado%60)." sec";

echo 
$tiempo_transcurrido

El resultado a mostrar sera: x min xx sec

Suerte

vic_mx 31/10/2004 01:00

¿Como hacer Thumbnails con PHP?
 
¿Como hacer Thumbnails con PHP?
Con la siguiente función podremos generar un thumbnail (imagen pequeña) de una original.

Código PHP:

<?php
//Autor: Víctor Simental
//http://port21.com.mx

$file "imagen.jpg";//Nombre de la imagen Original


function image_gd($file)
{
//Separamos las extenciones de archivos para definir el tipo de ext.
    
$extension explode(".",$file);
    
$ext count($extension)-1;
    
//Determinamos las extenciones permitidas.
        
if($extension[$ext] == "jpg" || $extension[$ext] == "jpeg")
        {
            
$image ImageCreateFromJPEG($file);
        }
        else if(
$extension[$ext] == "gif"){
            
$image ImageCreateFromGIF($file);
        }
        else if(
$extension[$ext] == "png"){
            
$image ImageCreateFromPNG($file);
        }
        else
        {
            echo 
"Error, extencion no permitida";
            die();
        }
        
    
$thumb_name substr($file,0,-5);//nombre del thumbnail
    
$width  imagesx($image);//ancho
    
$height imagesy($image);//alto
    
    
$nueva_anchura  100// Definimos el tamaño a 100 px
    
$nueva_altura = ($nueva_anchura $height) / $width // tamaño proporcional
    
        
if (function_exists("imagecreatetruecolor"))
        {
           
$thumb ImageCreateTrueColor($nueva_anchura$nueva_altura);//Color Real
        
}
        
//En caso de no encontrar la funcion, la saca en calidad media
        
if (!$thumb$thumb ImageCreate($nueva_anchura$nueva_altura);
        
    
ImageCopyResized($thumb$image0000$nueva_anchura$nueva_altura$width$height);
    
header("Content-type: image/jpeg");
    
ImageJPEG($thumb"t_".$thumb_name.".jpg"100);
    
imagedestroy($image);
    
return 
$image;
}
/* Forma de uso */
image_gd($file);    
?>

La forma de uso es image_gd($file); donde $file es la variable que tiene asignada el nombre de nuestra imagen original.
Bueno eso sería todo, suerte.
http://www.port21.com.mx/webmasters/manuales/gd.html :-D

Nefertiter 07/11/2004 17:29

aqui un pequeña contribucion que tenia hace muuuucho guardada por ahi...

Pregunta:Que es y para que sirve el Control de Salida?

Respuesta: Las funciones de Control de Salida nos permiten controlar las salidas producidas por el script.
Esto puede resultar util por ejemplo para trabajar para trabajar con con funciones que deben ser ejecutadas utilizando datos que se han "salido", pero deben ser ejecutadas sin que se halla enviado ninguna como setcookie() o header().
Acontinuacion haremos un script para tratar de explicar como el control de salida puede servirnos. Lo que el script hace es tomar unas variables definidas por nosotros, o por que no, proveninentes de algun formulario; realizar una salida determinada utilizando estos datos, transformar esa salida es una variable y enviarla como mensaje en un mail.

.mandar.php
Código PHP:

<?php 
ob_start
();
/*
La Funcion "ob_start()" hace que todos los datos que se empizan a emitir
queden guardados en un "buffer" y mientras este este "on" so se envian salidas del script
Declaremos algunas variables para el ejemplo
*/
$nombre="Pepito";
$apellido="Comilon";
$edad=48;
$para="[email protected]";
echo 
'<html>
<head>
<title>Vulcar with Output Control and Mail() function</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Nombre:</td>
<td>'
.$nombre.'&nbsp;</td>
</tr>
<tr>
<td>Apellido:</td>
<td>'
.$apellido .'&nbsp;</td>
</tr>
<tr>
<td>Edad:</td>
<td>'
.$edad .'&nbsp;</td>
</tr>
<tr>
<td colspan="2">Se le ah enviado un mail a su correo electronico: '
.$para.' con el contenido de esta pagina</td> 
</tr>
</table>
</body>
</html>'
;
$todo=ob_get_contents();
ob_end_clean();
echo 
$todo;
/*
la funcion "ob_get_contents()" devuelve todo salida provocada por el script.
La funcion "ob_end_clean()" da por terminado el almacenamiento ("off") de datos y los elimina.
Si no se especifica como debe finalizar el buffer del script por defecto se "agrega" "ob_end_flush()"
Fijense que curioso lo que pasa cuando el "echo $todo" se coloca antes que el ob_end_clean()
y que sucede cuando este no esta.
Podriamos no realizar el echo y usar la funcion mail, luego ob_end_clean() y luego un header("Location:algo.php")
pero esto es solo un ejemplo :P

Ahora mandamos el mail
Definamos algunas variables:*/
$de="[email protected]";
$tema="Tengo Tus Datos Aqui";
$mensaje=$todo;
$headers="From:".$de."\nReply-To:".$de."\n Mime-Version: 1.0\n Content-Type: text/html\n";
@
mail($para,$tema,$mensaje,$headers);
?>

Para el ejemplo anterior utilizamos un funcion escencial para el funcionamiento del script "ob_get_contents()" pero esa no es la unica funcion que veremos, en el ejemplo siguiente usaremos "ob_get_length()" que nos devuelve la longitud de contenidos almacenados dentro del buffer.
.peso.php
Código PHP:

<?php 
ob_start
();
?>
<html>
<head>
<title>Ejemplo de ob_get_length()</title>
</head>
<body>
ALGUN TEXTO PARA HACER PESO NUMAS :P<br>
<?php 
$peso
=(ob_get_length()/1024);
printf ("La pagina pesa: %01.2f Kbytes aproximadamente "$peso);
/*Notece que ob_end_flush es obviado pero pero el escript funciona igual*/
?>
</body>
</html>

Acabamos de ver como utilizar una funcion de control de salida para calcular el peso de la pagina, este no es exacto porque no se tiene en cuenta el peso de los caracteres posteriores a "ob_get_length" y si usamos este codigo al final, de la pagina a la cual le queremos medir, es peso estos ultimos caracteres es casi despreciable.

Espero les haya gustado, cualquier duda me pueden contactar a traves de mi emailo mejor posteen aqui :-D

Nefertiter 07/11/2004 17:44

una medio repetida pero nunca demas

Pregunta:Sesiones: Que y Para que?

-Respuesta: Las sesiones basicamente son varibles globales que nos permiten almacenar datos que necesiten volver a ser usados en otros accesos a la pagina. Cuando una persona entra a una pagina que utiliza sesiones automaticamente se crea un archivo de session en los archivos temporales del servidor y en este archivo es donde se guardan los datos que nosotros deseemos almecenar.
Para poder manejar las sesiones seria conveniente primero ver la manera que accedemos a estas y las usamos.
Como dijimos antes cuando el usuario entra a la pagina que usa sesiones se crea un archivo, este archivo posee el mismo nombre que su "id".
Para que una pagina utilice sesiones debemos inicializarla con la funcion "session_start(void)",que basicamente lo que hace es crear una nueva sesion o retomar una creada en otra pagina(del sitio). Las sessiones propagan su SID(SESSION ID) de dos posibles maneras, segun php.ini, por cookies o por url, es decir agregando a todos los posibles link el SID de la sesion.
Otra razon por la que la sesiones suelen ser muy utilizadas es para la "autentificacion", determinando el acceso a la pagina segun alguna variable especifica de la sesion.
Creemos dos archivos utiles para la explicacion:
-index.php
Código PHP:

<?php 
session_start
();
?>
<html>
<head>
<title>Las sesiones y Yo(Nefertiter)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><?php
if(isset($_POST['enviar'])){
if(empty(
$_POST['usuario']) || empty($_POST['password']))
echo 
'Debes llenar todos los datos'
elseif(
$_POST['usuario']==test and $_POST['password']==test){
$_SESSION['usuario']=$_POST['usuario'];
$_SESSION['password']=$_POST['password']; 
echo 
'Te haz loguedo como '.$_SESSION['usuario'];
}
}
?></td>
<td rowspan="2"><form name="login" method="post" action="index.php">
<table width="250" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Usuario:</td>
<td><input name="usuario" type="text" id="usuario"></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr align="center">
<td colspan="2"><input name="enviar" type="submit" id="enviar" value="Enviar"></td>
</tr>
</table>
</form></td>
</tr>
<tr>
<td><a href="segura.php">PAGINA SEGURA</a></td>
</tr>
</table>
</body>
</html>

-segura.php
Código PHP:

<?php 
session_start
();
if(!empty(
$_SESSION['usuario'])){
/* La funcion empty() devuelve verdadero si el argumento posee un valor vacio,
al usar !empty() devuelve verdadero no solo si la variable fue declarada sino 
ademas si contiene algun valor no nulo.
*/
echo 'Te haz logueado como :'.$_SESSION['usuario'];
echo 
'Haz logrado el acceso a una pagina segura';
}else{
echo 
'No estas logueado<br>';
echo 
'Esta pagina es restringida!';
}
?>

Como hemos visto es sumamente simple la manera que en las variables de sesiones son establecidas puesto que se las trabaja como variables comunes, ahora creemos otro archivo,en el que mostraremos como eliminarlas.
-logout.php
Código PHP:

<?php 
unset($_SESSION['usuario']);
unset(
$_SESSION['password']);
/* la funcion unset() destruye la varible que se le de como argumento*/
echo "Ya no te encuentras logueado"
?>

-Otras funciones
PHP no se limita solamente a una funcion en lo que a sesiones respecta. Tambien poseemos otras como "session_name()", que nos permiten darle algun nombre en especial a la session, "session_id()", que nos devuelve el id de la session y en caso de introducir un argumento la reemplaza. Tambien poseemos otra funcion llamada "session_cache_limiter()" que nos sirve para averiguar el limitador de cache actual, existen 3 modos: "nocache", "public" y "private"; cada una de estas posee una manera determinada de manejar la caducidad de las variables de sesion que se envian al navegador. Un detalle tanto "session_name()" como "session_cache_limiter()" deben ser declarados antes que "session_start()". Un ultimo ejemplo:

-sessions.settings.php
Código PHP:

<?php
session_name 
("recursofaqs");
session_cache_limiter ("private");
session_start(); 
echo 
"<br> El nombre de la sesion es: ".session_name();
echo 
"<br> El limitador de la sesion es: ".session_cache_limiter();
echo 
"<br> El id de la sesion es: "session_id();
?>

Bueno con este ultimo humilde ejemplo damos por finalizada la FAQ sobre sesiones

San Lorenzo 22/11/2004 03:26

Como Saber Si Me Visita Un Robot O Bot
 
Código PHP:

<?php

// Lista de robots

$robot[] = "googlebot";
$robot[] = "msnbot";
$robot[] = "overture";
$robot[] = "lycos";
$robot[] = "seek";
$robot[] = "inktomi";
$robot[] = "yahoo";
$robot[] = "altavista";
$robot[] = "alexa";
$robot[] = "crawler";

foreach(
$robot as $bot){

    if(
eregi($bot$HTTP_USER_AGENT)){

        echo 
"me esta visitando un bot: " $bot;

        
// puedes enviarte un mail para avisarte que te a visitado un robot

        
$destino "[email protected]";

        
$asunto "Me visito un robot";

        
$mensaje "Este robot: " $bot " me ha visitado mi pagina web";

        
$cabecera "From: webmaster@" $SERVER_NAME;

        
mail($destino$asunto"me visito: $bot"$cabecera);

    }

}

?>

Espero que les sea de utilidad :adios:

San Lorenzo 27/11/2004 03:57

¿Saber saber quien nos linkea?
 
Por medio de la variable $HTTP_REFERER

El codigo a continuacion guarda las datos en un archivo (referer.log).

Código PHP:

<?php

if(isset($HTTP_REFERER)){

    if(!
eregi($HTTP_HOST$HTTP_REFERER)){

        
$fp fopen("referer.log""a");

        
$referer .= "URL: " $HTTP_REFERER "\n";
        
$referer .= "---------------------------------------------------------------------------\n";

        
fwrite($fp$referer);

        
fclose($fp);

    }

}

?>

Espero que les sea de utilidad.

Takitei 08/12/2004 09:23

Tema: Mostrando resultados
Pregunta: ¿Cómo convertir los saltos de lineas invisibles por <br> en el código?
Respuesta:

Muy util cuando tenemos un texto que viene de un <textarea> o quizás cuando tenemos texto en nuestras bases de datos separados por ENTERs y queremos que se muestren igual en HTML.

Existen 2 formas de hacer esto:

Forma 1:
Código PHP:

$texto=str_replace(Chr(13), "<br />"$texto); 

Forma 2:
Código PHP:

$texto=nl2br($texto); 

Cualquiera es totalmente válida, es cuestión de gustos. Oviamente, nl2br() es una función específicamente diseñada para realizar ese trabajo, por lo tanto es recomendado usarla.

Dark_Fox 08/12/2004 20:50

Y bueno aqui estoi, voi a enseñarles a REgistrar usuarios en la Base de datos y logearlos!.
Aqui vamos :D.
Archivos necesarios:
- Conexion.inc.php
- Registrarse.php
- Registrado.php
- Logearse.php
- Logeado.php

--------------------------------------------------------------------------
Conexion.inc.php:
<?
$conn;
function conectar()
{
global $conn
$conn = mysql_connect("host","user","passwd") or die (mysql_error());
mysql_select_db("db",$conn) or die (mysql_error());
}
function desconectar() {
mysql_close($conn);
}
?>
Terminamos el conexion.inc.php.
--------------------------------------------------------------------------
Registrarse.php
Este es super simple, creamos 3 campos de texto
Usuario
Passwd
Mail
y a los campos les damos esos nombres
osea:
Usuario = $Usuario
Passwd = $Passwd
Mail = $Mail.
y hacemos un formulario! y al boton Submit le llamamos enviar.
Terminamos el Registrarce.php
--------------------------------------------------------------------------
Registrado.php
<?
requiere("Conexion.inc.php");
conectar()
if(isset($enviar))
{
mysql_query("INSERT INTO mi_base_de_datos (usuario,passw,mail) VALUE ('$Usuario', '$Passwd', '$Mail')");
echo "Registro Exitoso! Usuario: $Usuario Mail: $Mail";
}
?>
Terminamos el Registrado.php
--------------------------------------------------------------------------
Logearse.php
Este es super Simple es igual que el registrarse.php solo que aqui
hacemos 2 campos de Txt Usuario y Passwd ($Usuario y $Passwd)
y el boton Submit = enviar.
Terminamos el Logearse.php
--------------------------------------------------------------------------Logeado.php
<?
requiere("Conexion.inc.php");
conectar()
if(isset($enviar))
{
$a = mysql_quey("SELECT user, passwd FROM mi_base_de_datos WHERE user='$Usuario' AND passwd='$Passwd'",$conn);
if(mysql_num_rows($a) == 1) {
echo "Estas Registrado! Bienvenido $Usuario";
}
else {
echo "Error de Usuario Y/o Contraseña";
}
?>
Terminamos el Tutorial XD.
Ojo
$a = mysql_quey("SELECT user, passwd FROM mi_base_de_datos WHERE user='$Usuario' AND passwd='$Passwd'",$conn);
user, passwd fueron los nombres que le puse a los campos en la base de datos!! si uds les ponen a a usuario y b a passwd pos..remplazan!

Atte Dark_Fox ( www.teamcarrete.cl ) Cualquier duda me avisan!.

Takitei 11/12/2004 21:43

Tema: Tips & Tricks
Pregunta: ¿Cómo reemplazar palabras de una cadena?
Respuesta:

Como bien sabemos, tenemos la función str_replace(), muy útil para reemplazos sencillos. Pero cuando necesitamos de más complejidad, debemos recurrir a las expresiones regulares.

Supongamos que tenemos la siguiente cadena:

"Esta es la formacion del ion"

Y queremos reemplazar la palabra "ion" por "anion". Si usamos str_replace() obtendremos algo asi:

"Esta es la formacanion del anion"

Para que eso no ocurra, debemos aplicar preg_replace() con la siguiente expresión regular:

Código PHP:

$resultado preg_replace("/\bion(s)?\b/i""anion""Esta es la formacion del ion"); 

Y obtendremos lo que buscamos:

"Esta es la formacion del anion"

NOTA: La "i" que se encuentra después del slash indica "case insensitive".

stock 06/01/2005 01:14

Tema: Funciones

Pregunta: Como puedo optener la IP del Cliente??

Respuesta : Usa este algoritmo!!

Código PHP:

function Saber_IP(){
        if(
getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
                 
$ip getenv("HTTP_CLIENT_IP");
        }
           elseif(
getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
               
$ip getenv("HTTP_X_FORWARDED_FOR");
           }
           elseif(
getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){
               
$ip getenv("REMOTE_ADDR");
           }
           elseif(isset(
$_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")){

               
$ip $_SERVER['REMOTE_ADDR'];
           }
           else {
               
$ip "Unknown";
           }
          return 
$ip;
    }

//La forma para usarse es asi:

$IP Saber_Ip();

echo 
"Tu IP es: ".$IP


Takitei 10/01/2005 13:02

Tema: E-mails
Pregunta: ¿Cómo ocultar mi e-mail de contacto para evitar SPAM?
Respuesta:

Todos luchamos contra el SPAM. Si colocamos nuestro e-mail en nuestro sitio web para que los visitantes nos contacten... algún bot o crawler tomará nuestro correo para enviarnos basura.

Se me ocurrió una idea muy sencilla, y muy eficaz al mismo tiempo. Para ello comenzaremos creando un archivo llamado "contacto.php" el cual contendrá el siguiente código:

Código PHP:

<?php
echo '<meta http-equiv="Refresh" content="0;url=index.php">';
header('Location: mailto:[email protected]');
?>

Luego... en lugar de hacer un vínculo a nuestro e-mail, lo haremos a:

<a href="contacto.php">Contáctenos</a>

Tan sencillo como eso. Cuando el visitante de clic, se abrirá la famosa ventanita para enviar un correo, bien sea de Outlook, Thunderbird, etc.

Takitei 10/01/2005 13:15

Tema: Tips & Tricks
Pregunta: ¿Cómo crear etiquetas personalizadas para nuestra web?
Respuesta:

En algunas ocasiones nos preguntamos... ¿cómo hacer para resumir una etiqueta... <a href... bla bla bla... o una <img src="......?

Si usamos bases de datos, lo mejor será crear alguna etiqueta personalizada asi como la que usan estos foros, para no tener que usar código HTML directo. Esto es muy sencillo. Primeramente creamos un archivo que procesará nuestras etiquetas asi:

Código PHP:

//esta linea convierte las etiquetas [img]
$texto=preg_replace("`\[img](.*)?\[/img\]`is","<img src=\"$1\" />",$texto);

//esta linea convierte las etiquetas [url]
$texto=preg_replace("`\[url=(.*)?\](.*)?\[/url\]`is"'<a href="$1">$2</a>'$texto);

//$texto es la variable que contiene nuestro texto junto con las etiquetas, puede provenir de una base de datos o algo asi. 

Ahora... cada que almacenemos algo en nuestra BD, podremos insertar imágenes o vínculos con solo aplicar las siguientes etiquetas:

[img]url de la imagen[/img]

[url=vinculo]nombre del vinculo[/url ]

PHP se encargará de convertirlas a código HTML válido. Suerte!

zsamer 16/01/2005 10:43

¿Cómo puedo mostrar en un formulario select valores de un directorio?
 
Tema: Formularios
Créditos: Zsamer
Pregunta: ¿Cómo puedo mostrar en un formulario select valores de un directorio?
Respuesta:

Código PHP:

<?php
$content 
.=  "</br>";
$content .=  "<center>";
$content .=  "<form action=\"skins.php\" method=\"post\">";
$content .=  "<select name=\"skins\">";
$handle=opendir('skins');
while (
$file readdir($handle)) {
    if ( (!
ereg("[.]",$file)) ) {
            
$themelist .= "$file ";
    }
}
closedir($handle);
$themelist explode(" "$themelist);
sort($themelist);
for (
$i=0$i sizeof($themelist); $i++) {
        if(
$themelist[$i]!="") {
            
$content .=  "<option value=\"$themelist[$i]\" ";
        if(((
$userinfo[theme]=="") && ($themelist[$i]=="$Default_Theme")) || ($userinfo[theme]==$themelist[$i])) $content .=  "selected";
        
$content .=  ">$themelist[$i]\n";
        
    }}
$content .=  "</option>";
$content .=  "</select>";    
$content .=  "</br>";
$content .=  "</br>";
$content .=  "<input type=\"submit\" value=\"Cambiar\">";
$content .=  "</form>";
echo 
$content
?>


asinox 27/01/2005 18:47

Manejando archivos multiples con generacion ilimitada
 
TEMA: Manejo de Archivos Múltiples ilimitado.

PREGUNTA: ¿Cómo hago para subir mas de 1 archivo, o talvez las cantidad que yo desee sin limitaciones?

RESPUESTA:

Código PHP:

<form action="" method="post" enctype="multipart/form-data" name="form1">
      Cantidad: <select name="cantidad">
                    <script type="text/javascript">
                    for(x=1;x<=10;x++){
                    document.write("<option value="+ x +">"+ x+"</option>");
                    }
                    </script>
      </select>
      <input type="submit" name="Submit" value="Submit"><br>
      

<?php    
 $uploaddir
=$_SERVER['DOCUMENT_ROOT']."/upload/imagenes/";

if(isset(
$_POST['Submit'])){
        echo 
"Elegir Im&aacute;genes para Subir<br>";
            for(
$i=1;$i<=$_POST['cantidad'];++$i){
                echo 
"<input type=\"file\" name=\"archivo[]\"><br>";
            }
        echo 
"<input type=\"submit\" name=\"Submit2\" value=\"Submit2\">";
        echo 
"<input type=\"hidden\" name=\"cant1\" value=\"$i\">";
    }
    
    if(isset(
$_POST['Submit2'])){
        
$cantidad2 =count($_FILES["archivo"]);
        for (
$j=0;$j<=$cantidad2;$j++){
                
$archivo $_FILES["archivo"]["tmp_name"][$j]; 
                
$tamanio $_FILES["archivo"]["size"][$j];
                
$tipo    $_FILES["archivo"]["type"][$j];
                
$nombre  $_FILES["archivo"]["name"][$j];

                    
$x=$j;
             do{
             
$x++;
                if( 
$archivo != "" ){
                           
$fp fopen($archivo"rb");
                           
$contenido fread($fp$tamanio);
                           
$contenido addslashes($contenido);
                           
fclose($fp);
                           
//AQUI  INSERTE EN LA BASE DE DATOS
                           
                           
if(copy($archivo$uploaddir.$nombre))
                                {
                                   echo 
$nombre." Subido con Exito<br>";
                                }
                           }
                        }while(
$x<$j);
             }
        }
        
?>
</form>

Espero que sea de ayuda

Anarko 18/02/2005 16:47

El abc de crear una imagen Espectacular.
 
No se tu, pero cuando me pille esto en el manual de PHP, (buscando por imagecolorallocatealpha), quede anonadado, correlo, (y estudialo), solo necesitas tener la libreria GD, la imagen se crea TODA con estas lineas, nada de includes ni otras librerias:

Código PHP:

<?php
$size 
300;
$image=imagecreatetruecolor($size$size);

// something to get a white background with black border
$back imagecolorallocate($image255255255);
$border imagecolorallocate($image000);
imagefilledrectangle($image00$size 1$size 1$back);
imagerectangle($image00$size 1$size 1$border);

$yellow_x 100;
$yellow_y 75;
$red_x    120;
$red_y    165
$blue_x   187;
$blue_y   125
$radius   150;

// allocate colors with alpha values
$yellow imagecolorallocatealpha($image255255075);
$red    imagecolorallocatealpha($image2550075);
$blue   imagecolorallocatealpha($image0025575);

// drawing 3 overlapped circle
imagefilledellipse($image$yellow_x$yellow_y$radius$radius$yellow);
imagefilledellipse($image$red_x$red_y$radius$radius$red);   
imagefilledellipse($image$blue_x$blue_y$radius$radius$blue);

// don't forget to output a correct header!
header('Content-type: image/png');

// and finally, output the result
imagepng($image);
imagedestroy($image);
?>

Hermoso, verdad?.

Salu2!.

Nefertiter 23/02/2005 16:19

Libreria GD
 
Utilizando GD para crear Efectos Dinámico parte 1


Pregunta : Como hago para crear bordes a mis imágenes?

Respuesta : Es bastante simple pero para el que no sabe nada...primero un repasito por lo basico :P
para crear una imagen nueva dinamicamente, sin contenido y mostrarla

Código PHP:

<?php
  header
("Content-type: image/png");
  
//definimos el tamaño de la imagen
  
$alto 60;
  
$ancho 150;
  
$im imagecreatetruecolor($ancho,$alto);
  
$white imagecolorallocate($im255,255,255);
  
imagefill($im,0,0,$white);  
imagepng ($im);
imagedestroy($im);
?>

Por ejemplo si quisieramos usar una imagen ya existente

Código PHP:

<?php
  header
("Content-type: image/png");
  
//definimos el tamaño de la imagen
  
$archivo "imagen.png";   
  
$im imagecreatefrompng  ($archivo);
   
imagepng ($im);
  
imagedestroy($im);
  
?>

Es bastante facil en el siguiente ejemplo usare la funcion line y dibujare una imagen nueva

Código PHP:

<?php
  header
("Content-type: image/png");
  
//definimos el tamaño de la imagen
  
$alto 60;
  
$ancho 150;
  
$im imagecreatetruecolor($ancho,$alto);
  
//definimos algunos colores
  
$grey imagecolorallocate($im107,107,107);
  
$white imagecolorallocate($im255,255,255);
  
//creamos un primer fondo liso
  
imagefill($im,0,0,$white);
  
//creamos los bordes
  
imageline($im0,0$ancho0,$grey);
  
imageline($im$ancho-1,0$ancho-1$alto$grey);
  
imageline($im0$alto-$ancho$alto-1$grey);
  
imageline($im0,$alto00,$grey);
  
//realizamos la salida al navegador 
  
imagepng ($im);
  
imagedestroy($im);
  
?>

Ahora veremos como hacerlo con un borde "doble"

Código PHP:

<?php
  header
("Content-type: image/png");
  
//definimos el tamaño de la imagen
  
$alto 60;
  
$ancho 150;
  
$im imagecreatetruecolor($ancho,$alto);
  
//definimos algunos colores
  
$grey imagecolorallocate($im107,107,107);
  
$white imagecolorallocate($im255,255,255);
  
//creamos un primer fondo liso
  
imagefill($im,0,0,$white);
  
//creamos los bordes
  
imageline($im0,0$ancho0,$grey);
  
imageline($im$ancho-1,0$ancho-1$alto$grey);
  
imageline($im0$alto-$ancho$alto-1$grey);
  
imageline($im0,$alto00,$grey);
// bordes internos
imageline($im2,2$ancho-32,$grey);
imageline($im$ancho-3,2$ancho-3$alto-3$grey);
imageline($im2$alto-$ancho-3$alto-3$grey);
imageline($im2,$alto-322,$grey);

//realizamos la salida al navegador 
imagepng ($im);
imagedestroy($im);
?>

Como crear un borde con trazo no continuo (Ej: "- - - - - -")?
si bien existe una funciona llamada imagedashedline definiendo styles es mucho mejor.
Código PHP:

<?php
  header
("Content-type: image/png");
  
//definimos el tamaño de la imagen
  
$alto 60;
  
$ancho 150;
  
$im imagecreatetruecolor($ancho,$alto);
  
//definimos algunos colores
  
$grey imagecolorallocate($im107,107,107);
  
$white imagecolorallocate($im255,255,255);
  
//creamos un primer fondo liso
  
imagefill($im,0,0,$white);
  
/*
  cada color es un pixel esto dara una linea punteada de 4 pixeles grises y 4 pixeles blancos
  */
  
$style = array($grey,$grey$grey$grey$white$white$white$white);
  
imagesetstyle($im$style);  
  
//creamos los bordes
  
imageline($im0,0$ancho0,IMG_COLOR_STYLED);
  
imageline($im$ancho-1,0$ancho-1$altoIMG_COLOR_STYLED);
  
imageline($im0$alto-$ancho$alto-1IMG_COLOR_STYLED);
  
imageline($im0,$alto00,IMG_COLOR_STYLED);
//realizamos la salida al navegador 
imagepng ($im);
imagedestroy($im);
?>


Nefertiter 18/03/2005 11:38

Utilizando GD para crear Efectos Dinámico PARTE 2 - Fondos
 
Como logro crear un fondo en degradado lineal?

Si hablamos de un fondo en degradado lineal, la respuesta es bastante simple, podemos usar el metodo line y dibujar lineas con los colores que deseemos.
Estos primeros ejemplos nos serviran para ver como podes definir colores



Código PHP:

<?php
header
("Content-type:  image/png");
//definimos el tamaño de la  imagen
$alto 60;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
//definimos un color usando  imagecolorallocate 
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i 0$i $alto+$i  ++){ 
/*
int imageline ( int im,  int x1, int y1, int x2, int y2, int col) 
*/ 
imageline($im0$i$ancho$i,  imagecolorallocate($im255 -  $r,255 $g ,255 -$b) ); 
$r += 3;
$g += 3;
$b += 3;

imagepng ($im);
imagedestroy($im);
?>

Ahora simplemente cambiando la manera en que los r,g,b aumentan podemos conserguir "colores" como azules por ejemplo o aleatorios
Para obtener azules:



Código PHP:

<?php
header
("Content-type:  image/png");
$alto 60;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i 0$i $alto+$i  ++){ 
imageline($im0$i,  $ancho$iimagecolorallocate($im255 $r,255 $g ,255 -$b) ); 
if(
$r 255$r  += 3;
if(
$g 255)  $g += 2;
if(
$b 255$b += 1;

imagepng ($im);
imagedestroy($im);
?>

Para conseguir aleatorios :

Código PHP:

<?php
header
("Content-type:  image/png");
$alto 60;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i 0$i $alto +1$i  ++){ 
imageline($im0$i,  $ancho$iimagecolorallocate($im255 $r,255 $g ,255 -$b) ); 
/*
int rand ( [int min [, int max]]) 
*/  
if($r 255)  $r += Rand(0,5);
if(
$g <  255$g += Rand(0,5);
if(
$b <  255$b += Rand(0,5);

imagepng ($im);
imagedestroy($im);
?>

desde ya que pueden utilizar otras maneras para obtener colores aleatorios otra opcion viendo los dos codigos anteriores es poner un rand (0,4), rand (0,3) y rand (0,2) y de esa manera obtener variantes en un color mas determinado.

Como crear un degradado lineal inclinado?

Código PHP:

<?php
header
("Content-type:  image/png");
$alto 60;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i = -($alto0.5) ; $i $alto *  1.5 $i ++){ 
imageline($im0$i$ancho$i $alto/imagecolorallocate($im255 -  $r,255 $g ,255 -$b) ); 
if(
$r 255$r += 1;
if(
$g 255$g  += 1;
if(
$b 255)  $b += 2;

imagepng  ($im);
imagedestroy($im);
?>

Como realizar un degradado circular?

La manera mas facil sin duda seria poner un serie de circulos concentricos haciendo variar el color de cada uno, para eso tenemos la funcion imagefilledellipse que nos permite crear elipces

Código PHP:

<?php
header
("Content-type:  image/png");
$alto 150;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i $i < ($ancho 2) ; $i  ++){
$radio = ($ancho  /2) - $i;
/*
bool  imagefilledellipse ( resource image, int cx, int cy, int w, int  h, int color)
*/ 
imagefilledellipse($im$ancho /2$alto /$radio$radio,imagecolorallocate($im255 $r255 $g,  255 -$b));
if(
$r <  255$r += 3;
if(
$g 255$g  += 2;
if(
$b 255)  $b += 1;

imagepng  ($im);
imagedestroy($im);
?>

a notar que todos los circulos son concentricos si esto variara podemos obtener un efecto muy "divertido" y usando colores alpha podriamos observas las superpocisiones



Código PHP:

<?php
header
("Content-type:  image/png");
$alto 150;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i $i < ($ancho 2) ; $i  ++){
$radio = ($ancho  /2) - $i;
/*definimos un  color usando imagecolorallocatealpha , que es exactamente igual a  imagecolorallocate 
salvo que recibe un parametro extra que representa su  transparencia */
imagefilledellipse($imrand(20,$ancho), rand(20,$alto) , $radio$radio,imagecolorallocatealpha($im255 $r255 $g255 -$b,75));
if(
$r 255$r  += 3;
if(
$g <  255$g += 2;
if(
$b 255$b  += 1;

imagepng ($im);
imagedestroy($im);
?>

De manera muy similar a lo anterior se puede responder a la pregunta de como hacer un degradado cuadrado, y seria poniendo un seria de cuadrados concentricos y ir cambiandolos de color y para esto tenemos imagerectangle






Código PHP:

<?php
header
("Content-type:  image/png");
$alto 150;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i $i $ancho $i  ++){
/*
int imagerectangle ( int  im, int x1, int y1, int x2, int y2, int col) 
dibuja los bordes de un  rectangulo con coordenas de diagoan x1,y1 - x2y, y2 
*/ 
imagerectangle ($im$i ,$i $ancho $i ,  $alto $iimagecolorallocate($im255 $r,  255 $g255 -$b));
if(
$i == 0$r  += 3;
if(
$i == 0)  $g += 2;
if(
$b 255$b += 1;

imagepng ($im);
imagedestroy($im);
?>

Si quisieramos volver a hacer ese efecto "divertido" que usamos con los circulos tendriamos que usar imagefilledrectangle algo asi

Código PHP:

<?php
header
("Content-type:  image/png");
$alto 150;
$ancho 150;
$im imagecreatetruecolor($ancho,$alto);
$white imagecolorallocate($im255,255,255);
imagefill($im,0,0,$white);
for (
$i  $i $ancho $i ++){
/*
int  imagefilledrectangle ( int im, int x1, int y1, int x2, int y2,  int col) 
*/ 
imagefilledrectangle ($imrand(0,$ancho-50) ,rand(0,$ancho-50) , rand(30,$ancho) ,rand(30,$ancho), imagecolorallocatealpha($im255 $r255 $g255 -$b,90));
if(
$i == 0$r  += 3;
if(
$i == 0)  $g += 2;
if(
$b 255$b += 1;

imagepng ($im);
imagedestroy($im);
?>



nos quedaria pendiente como realizar fondo en degradado conicos

dwaks 28/04/2005 15:50

Como enviar mail desde localhost sin servidor smtp local
 
Para este fin utilizamos la clase phpmailer combinada con una funcion que adaptamos para que esta funcion sea nuestra nueva funcion de envio de email y asi no usar mail().

Debemos tomar en cuenta que se requiere la carpeta include que tiene las clases php mailer que las pueden bajar de aqui:
http://phpmailer.sourceforge.net/

La funcion se encarga de llamar por require a las clases desde esta estructura que puede ser cambiada dependiendo a la carpeta donde este ubicado el script que usara esta funcion.
Código HTML:

Estructura
./includes
./includes/class.phpmailer.php
./enviarmail.php
./functionmail.php

La funcion se le debe editar el smtp host, usuario y password que deben ser una cuenta de smtp real.

Código PHP:

function SendMAIL($para,$subject,$body,$altbody,$mailFROM,$mailNameCompany){
require 
"includes/class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir "includes/";
$mail->Mailer "smtp";
$mail->Host "mail.servicioweb.net"# Editar el Host smtp
$mail->SMTPAuth true;
$mail->Username "usuario"# editar el usuario
$mail->Password "password"# Editar el password
$mail->From $mailFROM;
$mail->FromName $mailNameCompany;
$mail->Subject $subject;
$email $para;
$body $body;

$mail->Body $body;
$mail->AltBody $altbody;
$mail->Timeout=20;
$mail->AddAddress($email);
$exito $mail->Send();
     
$intentos=1
       while((!
$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
       
sleep(5);
            
$exito $mail->Send();
            
$intentos=$intentos+1;                
       }
    
    if (
$mail->ErrorInfo=="SMTP Error: Data not accepted") {
       
$exito=true;
        }
return 
$exito;


Los valores que se le deben agregar son:
SendMAIL($para,$subject,$body,$altbody,$mailFROM,$ mailNameCompany)
$para = la persona a la que se le envia
$subject = Titulo del email
$body = Email con html
$altbody = aqui el email pero en solo texto, es bueno llenar las dos opciones porque si el webmail que ve el email no acepta html podra ver el email en formato texto.
$mailFROM = aqui el email de quien envia
$mailNameCompany = aqui el nombre de la persona que envia o de la empresa.

Y para usarla solo se emplea asi, se le puede colocar un if para verificar si el envio se hizo correctamente:
Código PHP:

<?php
$para 
"[email protected]";
$subject "Mensaje de Prueba";
$body "<font color=red>Hola esto es una prueba</font>";
$altbody "Hola esto es un mensaje de prueba";
$mailNameCompany "Mi Nombre";
if(
SendMAIL($para,$subject,$body,$altbody,$mailFROM,$mailNameCompany)){
 echo 
"Se envio correctamente";
}
else{
 echo 
"No se envio";
}
?>

Saludos,
By dwaks.

dwaks 06/05/2005 11:59

Como Paginar Registros de una base de datos.
 
Bueno aqui coloco un script que hize para manejar los registros y mostrarlos de forma ordenada una cantidad x de registros por paginas que usted le dara el valor necesario.

Quiero explicar como fue la estructura y como trabaja, para paginar registros es necesario saber:
1- cuantos registros se desean mostrar
2- cuantos registros mostrar por pagina
3- desde donde se mostraran los registros(aqui me baso en saber si va a iniciar a mostrar en la pagina 2 del registro 5 hasta el 10 ya que la pagina 1 muestra del 1 al 5)

Con estos datos obtenidos y estructurados se obtienen los resultados deseados.

EL SCRIPT:
Código PHP:

<?php
########################################################
## PAGINAR REGISTROS
## POR: Marco A. Castillo
## EMAIL: [email protected]
########################################################

# Funcion para conectar a la base de datos
function conectar($host,$user,$pass,$db){
$link = @mysql_connect($host,$user,$pass) or die("Error Conectando a la Base de datos");
@
mysql_select_db($db,$link) or die("Error Seleccionando base de datos.");
return 
$link;
}

$host "localhost";
$user "root";
$pass "";
$db "directorio";

# Se crea la variable $link que es para identificar la coneccion
# a la base de datos
$link conectar($host,$user,$pass,$db);

# aqui colocan la tabla que se utilizara para
# extraer los registros y paginarlos
$tabla "licencias";

# aqui se extrae la cantidad de registros totales
$rsC mysql_query("Select count(*) from ".$tabla);
$resultC mysql_fetch_array($rsC);
$count $resultC[0];

# Aqui se pone la cantidad de registros por pagina
# que se quieren mostrar
$hasta 2;

if(
$pag==""){
 
$desde 0;
 
$pag 1;    
}
else{
 
$pag $_GET["pag"];
 
$pagS $pag 1;
 
$desde $hasta $pagS;    
}

$rs mysql_query("select * from ".$tabla." limit $desde,$hasta");
if(
$count!=0){
 while(
$result=mysql_fetch_array($rs)){
  
# Aqui colocan su tabla html y sus datos a mostrar
  # solo se usa el array $result[""] y entre comillas
  # el nombre de la celda a mostrar.
  
echo $result["licencia"]."<br>\n";    
  
# fin del despliegue personalizado.
 
}
}
else{
 echo 
"No tenemos registros.";    
}
mysql_close($link);

# aqui se llama a la funcion que muestra los links por paginas
# la variable $extra_variables es para anexar mas variables al url
# si es necesario para los querys que hagan.
# Solo se debe concatenar los datos nombre1=valor1&nombre2=value2
# NOTA: puede ubicar en cualquier parte de su codigo esta funcion
# para que aparesca dentro de la celda que desee.
# link totales es una variable al ser definida le dices a la funcion
# cuantos links quieres que aparescan por pantalla ya que si tienes
# 100 paginas no deberas ver los 100 links y solo muestres los necesarios
$link_totales 4;
# se llama la funcion paginar
# los links si tiene un css podran tomar la estructura y color que le pongas
## Inicia Paginador
paginar($count,$hasta,$pag,$link_totales,$extra_variables);

# Funcion paginar
# Inicia
function paginar($count,$hasta,$pag,$link_totales,$extra_variables){
    if(
$link_totales==1)$link_totales=2;
    
$links $count $hasta;
    
$arriba $link_totales 2;
    
$abajo $pag 1;
    if(
$abajo==0)$abajo 1;
    
$temp_r $links $pag;
    if(
$temp_r>=$arriba){
     
$link_break $pag $arriba;
    }
    else{
     
$link_break $links;
     
$abajo $pag $arriba;
     if(
$pag==$links-1)$abajo $pag $arriba;
     if(
$pag==$links)$abajo $pag $arriba;
    }
    
    if(
$pag==1)$link_break $link_totales;
    if(
$abajo==0)$abajo=1;
    if(
strlen($extra_variables)!=0$extra_variables "&".$extra_variables;
    
    if(
$pag==1){
     
$anterior 1;    
    }
    else{
    
$anterior $pag 1;    
    }
    if(
$pag!=1){
    echo 
"<a href=".$_SERVER['PHP_SELF']."?pag=".$anterior.$extra_variables."><< Anterior | </a>";
    }
    
    for(
$i=$abajo;$i<=$links;$i++){
     if(
$link_break<$i){
      break;
     }
     else{
        if(
$pag==$i){
        echo 
$i." | ";    
        }
        else{
        echo 
"<a href='".$_SERVER['PHP_SELF']."?pag=".$i.$extra_variables."'>";
        echo 
$i;
        echo 
" | </a>";
        }
     }
    }
    if(
$pag==$links){
    
$siguiente $links;
    }
    else{
    
$siguiente $pag 1;
    }
    if(
$pag!=$links){
    echo 
"<a href=".$_SERVER['PHP_SELF']."?pag=".$siguiente.$extra_variables.">Siguiente >></a>";
    }
}
?>

Es importante saber que en esta parte del codigo:
Código PHP:

while($result=mysql_fetch_array($rs)){
  
# Aqui colocan su tabla html y sus datos a mostrar
  # solo se usa el array $result[""] y entre comillas
  # el nombre de la celda a mostrar.
  
echo $result["licencia"]."<br>\n";    
  
# fin del despliegue personalizado.
 


dentro del while se coloca el html que usted estructuren para mostrar las noticias bien elegantes a los usuarios y si quien mostrar el titulo en una parte del html solo deben poner en la parte html donde parecera el titulo esta variable:
$result["titulo"] tomando en cuenta que titulo se llama su campo.

NOTA: vean que aparece esta linea asi:
Código HTML:

# se llama la funcion paginar
# los links si tiene un css podran tomar la estructura y color que le pongas
paginar($count,$hasta,$pag,$link_totales,$extra_va  riables);

# Funcion paginar
function paginar($count,$hasta,$pag,$link_totales,$extra_va  riables){

no se porque parece asi ya que no lo escribi asi pero solo deben cambiar el nombre de la variable $extra_va riables que esta separada y ponerla asi solo en estas lineas: $extra_variables

Saludos,

pentiumonce 17/05/2005 15:14

Subir archivos grandes a MySQL en Windows/Linux
 
Tema: Configuraciones para subir archivos binarios grandes a MySQL.

Pregunta: ¿ Como subir archivos grandes a MySQL en Windows/Linux ?

Respuesta:

Que tal un saludo, aqui les escribo estas consideraciones que se me presentaron cuando quise subir archivos mayores a 1MB a MySQL y la verdad es que si me costo un buen solucionarlo, es por eso que les dejo esto, a alguien le servira se los aseguro:

Aqui les pongo los sistemas y las versiones de APM en lo que lo hice:

Windows Xp Profesional/Fedora Core 1
Apache: 2.0.48
Php: 4.3.4
Mysql: 5.0.0

chequen tambien este link:

http://www.forosdelweb.com/f18/subir-archivos-grandes-mysql-linux-294768/



PHP:

WINDOWS Y LINUX:

En el php.ini

file_uploads = On // en On

max_execution_time = 120 // los segundos que consideren

max_input_time = 120 // los segundos que consideren

memory_limit = 16M // por lo regular el mismo tamaño del archivo a subir o quizas mas

upload_tmp_dir = /xyz // su directorio temporal con permisos de R/W

post_max_size = 10M // el tamaño maximo de su archivo a subir

upload_max_filesize = 10M // el tamaño maximo de su archivo a subir


*** Hacer restricciones en su código a cerca del tamaño máximo de los archivos que quieren subir (para ver que en realidad sube a MySQL o NO)

SI LO VAN A HACER EN LINUX:

consideren lo siguiente:

PHP:

si no tienen este archivo (php.conf) en este directorio (conf.d) HAY QUE CREARLO:

Yo lo he creado aqui:

/usr/local/apache2/conf.d/php.conf


con el siguiente contenido en el php.conf:


# PHP Configuration for Apache
# Load the apache module
#LoadModule php4_module modules/libphp4.so

# Cause the PHP interpreter handle files with a .php extension.

### ESTO SERÁ LO IMPORTANTE
<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 10240000 // PARA 10MB o +
</Files>
### LO ANTERIOR FUE LO IMPORTANTE

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

# Add index.php to the list of files that will be served as directory
# indexes.
DirectoryIndex index.php



APACHE:

DENTRO DEL httpd.conf del Apache incluir el archivo que creamos de la siguiente manera como lo indico:

...
Listen 80

# Dynamic Shared Object (DSO) Support
# To be able to use the functionality of a module which was built as a DSO you ...

LoadModule php4_module modules/libphp4.so

### ASI LO INCLUYEN
Include conf.d/*.conf
...

REINICIAN EL APACHE: /usr/local/apache2/bin/
./apachectl restart




MYSQL:

WINDOWS:

Busquen el archivo de configuración de Mysql; se puede llamar así: my.ini y lo configuran:

//my.ini en mi caso y esta en c:\windows\my.ini


y agregarle la siguiente línea:

set-variable = max_allowed_packet=10M // para 10MB

la siguiente línea solo la descomente(le quite el #):

set-variable=key_buffer=10M

pero con la de arriba es mas que suficiente ya que lo comprobe, aunque al final deje la de abajo también configurada.


LINUX:

Hacer lo mismo que en Windows solo que haora el archivo se llama: my.cnf o my.cfg o my.conf

busquenlo desde la consola asi: locate my.cnf
si no lo encuentra el sistema busquenlo ustedes mismos, debe de estar ubicado en: /etc/my.cnf; una vez localizado lo configuramos:


en la sección [mysqld] editamos o agregamos (según su caso):

key_buffer = 16M
max_allowed_packet = 10M // los 10 MB
table_cache = 64
sort_buffer_size = 10M // Yo lo deje asi
read_buffer_size = 10M // Yo lo deje asi
myisam_sort_buffer_size = 8M

OJO: mysql tiene por default 4 archivos de configuración para que los editemos y estos son y estan en:

/usr/local/mysql/support-files/

my-huge.cnf
my-large.cnf
my-medium.cnf
my-small.cnf

CHEQUENLOS Y PUEDEN EDITARLOS LES ACONSEJO QUE LO HAGAN UNICAMENTE EN LA SECCIÓN de [mysqld]


*** EN DADO CASO DE QUE NO HAYAN ENCONTRADO EL ARCHIVO my.cnf (como fue mi caso) hay que crearlo o copiarlo asi:

cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

COMO LES DIJE ARRIBA ESA ES LA RUTA EN LA QUE DEBE DE ESTAR: /etc/my.cnf. Apartir de hay, modifican lo que les comento, pero principalmente estas 2 lineas:

key_buffer = 16M
max_allowed_packet = 10M // los 10 MB

REINICIAN EL MYSQL: /etc/init.d/
./mysql.server stop
./mysql.server start


ASI ES QUE SI USTEDES QUIEREN SUBIR ARCHIVOS A MYSQL MAYORES A 1 MB CON LO ANTERIOR LO PUEDEN RESOLVER YA QUE YO LO HE RESUELTO ASÏ, Y PRINCIPALMENTE PARA AQUELLOS QUE OCUPEN CÓDIGO SIMILAR AL SIGUIENTE:

<?
$archivo = $_FILES["archivito"]["tmp_name"];
$tamanio = $_FILES["archivito"]["size"];
$tipo = $_FILES["archivito"]["type"];
$nombre = $_FILES["archivito"]["name"];
$titulo = $_POST["titulo"];
if ( $archivo != "none" )
{
$fp = fopen($archivo, "rb");
$contenido = fread($fp, $tamanio);
$contenido = addslashes($contenido);
fclose($fp);

$qry = "INSERT INTO archivos ...

para los que NO quieran subir archivos a MySQL sino que los quieran subir a su disco duro solo configuren lo basico que encuentran en este mismo foro y con eso jala, les dejo el codigo, probado en WINDOWS/LINUX:


$upload = $_FILES[upload];
$upload_tmp = $_FILES['archivoCor']['tmp_name'];
$upload_name = $_FILES['archivoCor']['name'];
$destino ="{$_SERVER['DOCUMENT_ROOT']}/pentiumonce/".$areaArt."/{$_FILES['archivoCor']['name']}";
move_uploaded_file($upload_tmp,$destino) or DIE("Upload incorrecto");
echo "<BR><BR><BR>Archivo cargado correctamente";



Un saludo.

The_Dark_Roy 27/05/2005 17:40

Dar Formato a la salida de filesize()
 
Pregunta: como puedo dar formato a la salida de la funcion filesize() de tal forma que me muestre en Kb, Mb y con la precision que yo quiera?

Respuesta: con esta funcion.

Código PHP:

function tam_arch($tam,$pre){
    if(
$pre==0){
        
$pre=-1;
    }else if(
$pre<0){
        
$pre=2;
    }
    
$tam/=1024;
    if(
$tam>1048576){
        
$tam_a=$tam;
        
$tam_a/=1048576;
        if(
$tam_a>1000){
            
$tam_a=substr($tam_a,0,5+$pre)." GB.";
        }else if(
$tam_a>100){
            
$tam_a=substr($tam_a,0,4+$pre)." GB.";
        }else if(
$tam_a>10){
            
$tam_a=substr($tam_a,0,3+$pre)." GB.";
        }else{
            
$tam_a=substr($tam_a,0,2+$pre)." GB.";
        }
    }else if(
$tam>1024){
        
$tam_a=$tam;
        
$tam_a/=1024;
        if(
$tam_a>1000){
            
$tam_a=substr($tam_a,0,5+$pre)." MB.";
        }else if(
$tam_a>100){
            
$tam_a=substr($tam_a,0,4+$pre)." MB.";
        }else if(
$tam_a>10){
            
$tam_a=substr($tam_a,0,3+$pre)." MB.";
        }else{
            
$tam_a=substr($tam_a,0,2+$pre)." MB.";
        }
    }else{
        
$tam_a=$tam;
        if(
$tam_a>1000){
            
$tam_a=substr($tam_a,0,5+$pre)." KB.";
        }else if(
$tam_a>100){
            
$tam_a=substr($tam_a,0,4+$pre)." KB.";
        }else if(
$tam_a>10){
            
$tam_a=substr($tam_a,0,3+$pre)." KB.";
        }else{
            
$tam_a=substr($tam_a,0,2+$pre)." KB.";
        }
    }
    return 
$tam_a;


la salida sera dependiendo del tamaño y presicion con que se haya configurado, lo normal es que sea 12 decimales de presicion la salida de la funcion arroja algo como esto 123.45KB , 12.34MB, 123.345.GB.

como se usa??
Código PHP:

$tam_a=filesize('./galerias/imagen.jpg');
$pre=2;
$tam=tam_arch($tam_a,$pre); 

La variable $tam ya estara formateada

por ejemplo

presicion 0: 1 KB o 1 MB 1 GB
presicion 1: 12.3 KB o 123.2 MB o 1.2G B
presicion 2: 12.12 KB o 123.45 MB o 12.12 GB

Ojala les ayude es algo facil pero cuando uno esta apurado y con pega hasta el cuello.......

xcars 06/06/2005 14:12

Tema: Conexion a BD
Pregunta: ¿Como puedo ejecutar procedimientos almacenados desde php hacia MS SQL?

Respuesta:
Pues lo unico que se necesita es ejecutar un par de instrucciones del tipo mssql_xxxx y listo, les dejo un ejemplo.

Código PHP:

<?
$msuscriptor_numero
='79714306';
$msuscriptor_nombre="";
$db_conexionmssql_connect(hostuserpass) or die("No se pudo conectar a la Base de datos");
mssql_select_db("base de datos") or die(mssql_error());

   
$stmt=mssql_init("buscarXnumero",$db_conexion); //buscar por numero es el nombre del procedimiento almacenado 
[b]//aqui agregados los parametros de entrada[/b]
   
mssql_bind($stmt,"@suscriptor_numero",$msuscriptor_numero,SQLINT4);

[
b]//aqui agregamos los parametros de salida[/b]
mssql_bind($stmt,"@suscriptor_nombre",&$msuscriptor_nombre,SQLVARCHAR,TRUE,False,50);

[
b]//aqui agregamos el parametro return del procedimiento almacenado[/b]

   
mssql_bind($stmt,"RETVAL",&$filas,SQLINT4);

[
b]aqui ejecutamos el procedimiento almacenado [/b]
   
mssql_execute($stmt);
    echo 
"<h2>numero ".$msuscriptor_numero." Nombre ".$msuscriptor_nombre." </h2>";
   
mssql_close($db_conexion);
?>

bueno basicamente con la instruccion INIT inicializamos la llamada al procedimiento almacenado.
con bind agregamos nuestros parametros, ojo, si son de entrada, enviamos nuestras variables PHP directamente mssql_bind($stmt,"@suscriptor_numero",$msuscriptor _numero,SQLINT4);
pero si nos va a retornar un valor, debemos pasarlo por referencia mssql_bind($stmt,"@suscriptor_nombre",&$msuscripto r_nombre,SQLVARCHAR,TRUE,False,50);

dudas o comentarios hstanleycrow AT hotmail PUNTO com

elangelcaido 22/06/2005 09:09

Tema: Especificaciones documentacion PHP
Pregunta: ¿Donde puedo conseguir informacion de cómo documentar mis programas PHP?
Respuesta:
En la siguiente direccion www.phpdoc.org podras ver todas las especificaciones para poner tus comentarios, y demás cosas, en tus programas PHP.

DarioDario 02/07/2005 22:27

Tema: Imagenes
Pregunta: ¿Como puedo insertar marcas de agua o logos a las imagenes?
Respuesta:
Bueno aqui esta el script, no es dificil solamente ingenio. Se usa 2 imagenes en el script, el logo con extención PNG (ya que la extención GIF ya no es soportada en las ultimas verciones de GD) he optado por por esta extención ya que soporta transparencias que es lo mejor para colocar una marca de agua. Y la otra imagen es JPG puede ser cualquier extención es indiferente. El script esta comentado para que sea lo mas claro y entendible.

Código PHP:

<?php

// Esta imagen es el logo que se pondra.
$imagen_logo imagecreatefrompng("logo.png");
// Defino ancho, alto del logo.
$ancho_logo imagesx($imagen_logo);
$alto_logo imagesy($imagen_logo);

// Creo la imagen a cual se le pondra el logo.
$imagen_dest imagecreatefromjpeg("prueba.jpg");
// Defino ancho, alto de la imagen que se le colocara el logo.
$ancho_dest imagesx($imagen_dest);
$alto_dest imagesy($imagen_dest);

// Defino la posicion donde se mostrara el logo dejando
// 10 pixeles de espacio. Se mostrara en la parte
// inferior derecho.
$ancho_muestra = ($ancho_dest $ancho_logo) - 10;
$alto_muestra = ($alto_dest $alto_logo) - 10;

//Envio la cabecera para mostrar la imagen.
header("Content-type: image/jpeg");

// Sobre pongo el logo a la imagen.
imagecopyresized($imagen_dest,$imagen_logo,$ancho_muestra,$alto_muestra,0,0,$ancho_logo,$alto_logo,$ancho_logo,$alto_logo);

// Guardo la imagen que ya tiene el logo.
imagejpeg($imagen_dest,"prueba.jpg",75);
// Muestro la imagen.
imagejpeg($imagen_dest,"",75);

// Destruyo las imagenes.
imagedestroy($imagen_dest);
imagedestroy($imagen_logo);

?>

Aclaracion: Creo que es claro que el logo tiene que ser menor en dimenciones que a la imagen que se le pondra, porque sino no se comportara como se desea. Lo aclaro por es un error darlo por echo.

Para los que no sepan:
http://ar2.php.net/manual/es/functio...opyresized.php

The_Dark_Roy 11/07/2005 16:22

Thumnails para cualquier formato
 
Tema: Generacion de imagenes con gd2
Requisitos: tener cargada la libreria gd2(descomentada en php.ini)
Pregunta: Como genero thumnails de las imagenes de mis galerias?
Respuesta: con este script:
thumnails.php
Código PHP:

<?php
    $ext_file
=split("[.]",$file);
    
$ext strtolower($ext_file[2]);
    
$tam=getimagesize($file);
    if((
$tam[1]/$tam[0])>10){
        
$n_alto=80;
        
$n_ancho=($n_alto*($tam[0]/$tam[1]));
    }else{
        
$n_ancho=80;
        
$n_alto=($n_ancho*($tam[1]/$tam[0]));
    }
    if(
$ext=="jpg" || $ext=="jpeg"){     
        
$origen  imagecreatefromjpeg($file); 
         
$imagen  imagecreatetruecolor($n_ancho,$n_alto); 
         
imagecopyresampled($imagen,$origen,0,0,0,0,$n_ancho,$n_alto,$tam[0],$tam[1]); 
        
header("Content-type: image/jpeg");  
         
imagejpeg($imagen); 
    }else if(
$ext=="png"){ 
         
$origen  imagecreatefrompng($file); 
         
$imagen  imagecreatetruecolor($n_ancho,$n_alto); 
      
imagecopyresampled($imagen,$origen,0,0,0,0,$n_ancho,$n_alto,$tam[0],$tam[1]);
        
header("Content-type: image/png"); 
        
imagepng($imagen); 
    }else if(
$ext=="gif"){ 
      
$origen  imagecreatefromgif($file); 
      
$imagen  imagecreatetruecolor($n_ancho,$n_alto); 
      
imagecopyresampled($imagen,$origen,0,0,0,0,$n_ancho,$n_alto,$tam[0],$tam[1]); 
      
header("Content-type: image/gif"); 
        
imagegif($imagen);  
    }else{ 
            return 
false
    }
?>

como usarla bueno se hace de la siguiente forma:

Código HTML:

<img src="thumnails.php?file=./galerias/queseyo/usuarios/yo.jpg">
nota:
si no se cuenta con la libreria gd2 y solo tienes la gd entonces tienes que reeplazar las funciones imagecreatetruecolor por imagecreate, imagecopyresampled por imagecopyresized

oajal les sirva

jam1138 04/08/2005 00:34

Tema: Registro de Usuarios / Base de Datos
Pregunta: ¿Cómo evitar guardar registros duplicados en mi BD?
Respuesta:

Siguiendo estos pasos:
  1. Obtener los datos que se quieren guardar.
  2. Buscarlos en la Base de Datos.
  3. Ver si hubo coincidencias. Para esto se usa la función mysql_num_rows() que devuelve el número de resultados de una consulta.
    1. Si: Evita que se guarde el registro
    2. No: Guarda...

Código PHP:

<?php
/* Para este código (simplemente ilustrativo) suponemos se recive un formulario dónde se ingresó un "usuario" y un "password" para ser agregados en la BD.
Queremos evitar haya 2 usuarios iguales.

Nuestra Tabla tendría que tener 3 campos:
                     - id (INT autonumerico)
                     - usuario (VACHAR)
                     - password (VACHAR)
*/

// Paso 1: Recibimos el formulario:
$user$_POST['user'];
$passwordmd5($_POST['password']); // www.php.net/md5

// Obviamente conectamos
mysql_connect("servidor""usuario""contraseña");
mysql_select_db("nombre_dela_BD");

// Paso 2: Hacemos la consulta a la Tabla por el usuario
$busquedamysql_query("SELECT usuario FROM tabla WHERE usuario='$user'");


// Paso 3: vemos si hubo coincidencias
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver
      // Inciso a: 
      
echo "El nombre de usuario no se encuentra disponible. Por favor intente con otro.<br>";
      echo 
"<a href=\"javascript:history.back()\">Regresar</a>";
} else {
      
// Inciso b:
      
mysql_query("INSERT INTO tabla(usuario, password) VALUES ('$user', '$password')");
      echo 
"$user ha sido registrado.";
}

Igual faltarían cosas como valiaciones y demás, pero son otros temas.

K3NNY 09/09/2005 13:18

Gracias sergiold
 
Tematica: Web Multilingüe
Pregunta: Como pueda hacer una web multilingüe, que los visitantes puedan elegir el idioma y la web recuerde la eleccion?
Respuesta: Usando el siguiente codigo:

[root]
  • Index.php
    Código PHP:

    <?php
        session_start
    ();
        if(!isset(
    $_SESSION['varIdioma']) || !empty($_GET['lang'])){
            
    $lang=$_GET['lang'];
            if(empty(
    $lang)){
                
    $lang="es";
            }
            
    $_SESSION['varIdioma']=$lang;
        }
        switch (
    $_SESSION['varIdioma']) {
        case 
    $_SESSION['varIdioma']: require("lang/".$_SESSION['varIdioma'].".inc.php"); break; }
    ?>
    <html>
    <head>
        <title>Web bilingue / Bilingual web</title>
    </head>
    <body>
        <a href="index.php?lang=es">Español</a>
        <a href="index.php?lang=en">English</a>
        <br />
        <?php echo $TEST1;?>
    </body>
    </html>

  • [lang]
    • [es]
      • lang.inc.php
        Código PHP:

        <?php
            $TEST1
        ="Esto es una prueba";
        ?>

    • [en]
      • lang.inc.php
        Código PHP:

        <?php
            $TEST1
        ="This is a test";
        ?>


Nota: En el archivo Index.php el codigo PHP tiene que estar antes que el tag <HTML>.

turco_7 14/09/2005 19:45

Tematica: Generar ComboBox dinamicamente!!!
Pregunta: Como puedo hacer para generar combobox dinamicamente con datos de una DB ?
Respuesta:
Cargar_combo.php
Código PHP:

<?php
include("funciones.php");
cargar_combo("tabla","id","opcion");
?>

Bueno en el doc cargar_combo.php lo que hago es incluir el archivo con las funciones, en este caso con el mismo nombre. y llamamos a la funcion cargar_combo("LA_TABLA","VALOR_QUE_OBTIENE_EL_VALU E","OPCION_A_MOSTRAR");
Código PHP:

<?php
function cargar_combo($tabla,$value,$opt){
$enlace mysql_connect("localhost""root""") or die("No pudo conectarse : " mysql_error());
    
mysql_select_db("prueba") or die("No pudo seleccionarse la BD.");
    
$sql "select * from ".$tabla;
    
$res mysql_query($sql) or die (mysql_error());
    echo 
"<select name='$tabla' class='botones'>";
    while(
$fila mysql_fetch_assoc($res)){
        echo 
"<option value='$fila[$value]'>$fila[$opt]</option>";
    }
    echo 
"</select>";
             
mysql_close($enlace);
}
?>

La función se encarga de generar el campo con los datos que nosotros pasamos como parametros, y el nombre del select es el nombre de la tabla... Saludos, y espero que les sea util!!!

AGREGADO EL 07/02/06

gonazalezmfrank me ha mandado una modificacion del codigo, que permite establecer un valor selecionado si lo hubiera ... y tambien nos deja que le mandemos el nombre que queremos que tenga el select, por si llegamos a necesitar hacer el mismo select mas de una ves ...

La funcion ...
Código PHP:

<?
#################################################################################################
#
#  filename              : config.php
#
#################################################################################################

function cargar_combo($tabla,$varform,$old_valor,$value,$opt){
    
$sql "select * from ".$tabla;
    
$res mysql_query($sql) or die (mysql_error());
    if (
mysql_num_rows($res) != ) {
        echo 
"<select name=\"$varform\">\n";
        echo 
"<option value=\"\"> Seleccione ... </option>\n"
        while(
$fila mysql_fetch_assoc($res)){
            if (
$old_valor == $fila[$value]){
                echo 
"<option value=\"".$fila[$value]."\" selected>".$fila[$opt]."</option>\n";
            } else {
                echo 
"<option value=\"".$fila[$value]."\">".$fila[$opt]."</option>\n";
            }
        }
        echo 
"</select>";
        
mysql_free_result($res);
        return 
$varform;
    }else{
        echo 
"No Existen Registros en la Base de Datos..";
    }
}
?>

el codigo aqui ...
Código PHP:

<?php
// incluye la funcion del combobox
require("config.php");
// conecta a la BD
require("conectar.php");

// Muestra el Combobox para seleccionar el valor de la BD
//
// Considera que existe la funcion en el archivo de funciones o configuracion
// Considera que tiene un script para conectarse a la BD - es  utilizado segun se quiera
//
// Variables que se le pasan a la funcion 
// 1. Nombre de la Tabla
// 2. Nombre de la Variable que requiere retorno en el Form
// 3. Variable que contiene el valor del <Selected> en la Sentencia <Select> de la funcion
// 4. Valor del Campo Indice para la Tabla
// 5. Valor que se quiere mostrar en el Front-END
//
// Si tiene un valor seleccionado este se coloca en la variable $old_valor para pasarlo a
// la funcion si no existe o es vacio simplemente no pasa nada.....
// 
if (empty($_POST['muestra'])){
    
$old_valor $_POST['tipoobs'];
    echo 
"<form action='combotest.php' method='POST'>";
    
cargar_combo("tipo_observa","tipoobs",$old_valor,"ID","tipo_obs");
    echo 
"<input type='submit' value='mostrar' name='muestra'>
    </form>"
;
}else{
    
// Muestra el resultado
    
echo " Valor Seleccionado : ".$tipoobs;
    echo 
"<form action='combotest.php' method='POST'>";
    echo 
"<input type='hidden' name='tipoobs' value='$tipoobs'>";
    echo 
"<input type='submit' name='submit' value='Otro Valor'>
    </form>"
;
}
// cierro la BD
mysql_close();
?>

gracias gonazalezmfrank

Vaalegk 19/10/2005 14:27

Tema: Recursividad/Arboles
Pregunta: Como crear un arbol jerarquico a partir de una tabla en la DB
Respuesta:

Este metodo funciona para tablas con referencias a ellas mismas,como por ejemplo en un sistema que se desee mantener relaciones padre hijo sin usar tablas intermedias

Ejemplo de estructura (sin ninguna DB en mente):

Tabla:
catetoria
--cat_id //indice
--parent_id //indice al id del padre (en este caso una referencia a cat_id)
--nombre
--...mas campos

Cabe destacar que con esta estructura se restringe a un solo padre por elemento, los nodos padre o raiz tendran su campo "parent_id" en 0.

ahora bien para construir/imprimir un arbol con esos datos, la manera mas facil es utilizar una funcion recursiva asi:

Código PHP:

/*
funcion generica
Parametros:
    $tabla     = Nombre de la tabla en la DB
    $id_field  = Nombre del campo llave de la tabla
    $show_data = Campo a mostrar en el arbol
    $link_field= Campo que establece la relacion padre hijo
    $parent       = padre actual
    $prefix    = string con un campo a mostrar en cada entrada del arbol
*/
function crearArbol($tabla,$id_field,$show_data,$link_field,$parent,$prefix){
    
/*Armar query*/
    
$sql='select * from '.$tabla.' where '.$link_field.'='.$parant;

    
/*Asumiendo que se usa MySQL (se puede cambiar facilmente a otra db)*/

    
$rs=@mysql_query($sql);
    if(
$rs){
           
/*Recorrer todos las entradas */
           
while($arr=mysql_fetch_array($rs)){
        
/* Imprimir campo a mostrar*/
                
echo($prefix.$arr[$show_data].'<br>');
        
        
/* imprimir arbol the "hijos" de este elemento*/
                
crearArbol($tabla,$id_field,$show_data,
                               
$link_field,$arr[$id_field],$prefix.$prefix);
           }
    }    



Código PHP:

/*
ahora, asumiendo que se tiene una tabla con una estructura
como la mencionada anteriormente se utilizaria asi:
*/

crearArbol('categoria','cat_id','nombre','parent_id',0,'-'); 

/*
  lo cual tendra un output algo asi (dependiendo de los datos):

 -categoria1
 --categoria2
 -categoria3
 --categoria4
 ----categoria5 

*/ 

Ahora, Como y porque funciona?:

Dadas las condiciones de la estructura de datos, donde el padre siempre es "0" para los elementos raiz, al llamar la funcion el query devuelve todos los elementos raiz en su primera llamada, al recorrer cada elemento, la funcion es llamada para imprimir todos los elementos hijos de este elemento, y asi "recursivamente" hasta terminar con
todos los elementos.

trabajare en otra funcion para un escenario de muchos a muchos padre<->hijos, lo cual seria bastante parecido


Saludos,

atak 27/10/2005 20:25

Consultas a un Archivo de texto
 
Tema : Manejo de archivos de texto con PHP
Pregunta : ¿Cómo puedo hacer una consulta a un TXT?
Respuesta: Con la siguiente guía y algoritmo
========================
Muchos de nosotros tenemos sistemas que se ejecutan en D.O.S. como el FOXPRO por ejemplo y los cuales nos pueden exportar una tabla a un formato TXT y nosotros queremos hacer consultas desde nuestra WEB a éste archivo (txt).

Bien les diré que si es posible hacer la consulta de la siguiente manera.

1. Tenemos nuestro archivo de texto por ejemplo que lo llamaremos data.txt
con las siguientes columnas:
CODIGO : (03 caracteres)
FECHA : (10 carateres)
CLIENTE : (25 caracteres)

data.txt
Cita:

de la siguiente manera

xxx xx/xx/xxxx xxxxxxxxxxxxxxxxxxxxxxxxx

algunos datos de ejemplo :
254 12/10/2005 Juan Casqui Rios
124 01/10/2005 Marco Villanes Soza
144 05/05/2005 Luciana Marquez Castillo
235 17/11/2005 Jose Santillan Vera
014 16/02/2005 Simon Laurente Saenz

(mantener siempre la estructura)


Ahora nuestro archivo html

pguno.html
Código PHP:


<HTML>
<
HEAD>
<
TITLEConsulta </TITLE>
</
HEAD>
<
BODY>
    <
FORM METHOD=POST ACTION="pgdos.php">
        
CODIGO:<br>
        <
INPUT TYPE="text" NAME="codigo" size="6" maxlength="3"> <br>
        <
INPUT TYPE="submit" value="Enviar" name="Enviar">    
    </
FORM>
</
BODY>
</
HTML

ahora pgdos.php
Código PHP:


<?php
$i
=0// variable Inicial para comprobar si se encontró algun valor
//Si no está vacio  y si la  variable  existe
if((!empty($_POST['codigo']))|| isset($_POST['codigo'])){
// abriendo el archivo de texto que se encuentra en el mismo directorio 
//que los archivos html  y php
$file fopen ("data.txt""r");
//Para el indice de mi array
$v=0;
//recorrido del archivo  TXT
while (!feof($file)) {    
    
// consideramos linea por linea
    
$linea fgets($file,41);
    
//linea por linea enviamos a un array
    
$cadena[$v]=$linea;
    
//contador incremental
    
$v++;    
}
//obtenido los datos del archivo cerramos el archivo
fclose ($file); 
// recorremos nuestro array  y trabajarlo con nuestro algoritmo
foreach($cadena as $pasar)
{
    
// comparamos si el codigo ingresado en el TEXTBOX
    //coincide con alguno que tenemos en nuestro TXT
    
if($_POST['codigo']==substr($pasar,0,3))
        {
        
// si es asi mostramos los datos que corresponden
            
echo "<br>";
            echo 
"CODIGO  :".substr($pasar,0,3);
            echo 
"<br>";
            echo 
"FECHA : ".substr($pasar,4,10);
            echo 
"<br>";
            echo 
"CLIENTE : ".substr($pasar,15,25);
            echo 
"<br>";
            
// indica que encontró algo
            
$i=1;
        }
}
}
// Si no se encontró nada  simplemente mostramos este texto
if($i=='0')
{
    echo 
"Su Nro de CODIGO  no fué encontrado ....";
    echo 
"<br> Intente nuevamente ";
    echo 
'<A HREF="pguno.html">Anterior</A>';
}
?>

Los tres archivos (txt,html,php) deberán estar en el mismo directorio.

Eso es todo amigos espero que les sirva de algo.
Cualquier sugerencia, critica, etc. espero su mensaje.

Salu2 a to2
:aplauso: :aplauso:

vic_mx 21/11/2005 16:46

Una sencilla
 
Pregunta:¿como encripto con md5 una contraseña?

Respuesta: Con el siguiente Script

Código PHP:

<?php
$clave_md5 
"clave";//Esta sera la cadena a encriptar
$md5_result md5($clave_md5); 
$sql "INSERT into tabla (campo_clave)
VALUES ('$md5_result')"
;

mysql_query($sql);

?>

Nota: El campo: campo_clave debe tener una longitud de 32 caracteres.

si queremos ver el resultad impreso solo ponemos:
Código PHP:

echo $md5_result


K3NNY 01/12/2005 09:51

Como mostrar citas aleatorias guardadas en un txt?
 
Poniendo este codigo donde queres mostrar las citas...

Código PHP:

<?php
$archivo 
"carpeta/archivo.txt"#Aca tenes que poner la URL donde esta el archivo TXT.
$lineas file($archivo);
$numero rand(0,sizeof($lineas) -1);
echo 
$lineas[$numero];
?>

...y el archivo TXT que contiene las citas tiene que tener una cita por linea (puede contener codigo XHTML)...

Código:

<strong>Cita numero 1</strong>
Cita numero 2
<a href="http://www.google.com">Cita numero 3</a>

PD: Gracias a alvlin por el codigo. ;-)

Cluster 03/12/2005 16:03

Tema: Configuración instalación PHP
Pregunta: He configurado un .htaccess para personalizar la configuración de PHP para mi sitio. Obtengo este error: The server encountered an internal error or misconfiguration and was unable to complete your request (error 500)

Respuesta:

Sucede cuando se instala PHP activando el PHPsuexec. De esta forma, cada usuario en el servidor tiene su própia configuración de PHP (php.ini) que podría modificar a su gusto fuera de la que el servidor usa de forma global para todos los usuarios por defecto.

PHPsuexec implica que nuestros scripts PHP se ejecutan como CGI y tienen las mismas políticas de restricción de uso que los scripts en Perl y otros CGI. En ese caso es el usuario que crea el archivo es su dueño y no el que usa Apache o "nobody" como sucede cuando se ejecuta PHP como módulo de Apache. El "dueño" de nuestros scripts en este caso será el usuario que nos asignan para nuestro sitio, suele ser el mismo que usariamos para conectarse por FTP, es decir, un usuario concreto del Sistema Operativo de ese servidor .. no uno común.

Los permisos de archivos (scripts .php .. etc) serán como máximo de: 755

¿Como saber si nuestro servidor está configurado como PHPsuexec?:

¿ PHP corre como módulo de Apache o como CGI ?

- Cuando PHP corre como CGI, en phpinfo() Server API muestra: 'CGI'
- Cuando PHP corre como un Módulo de Apache, en phpinfo() Server API muestra: 'Apache' o 'Apache + versión' o 'Apache Handler' o cualquiera de las combinaciones de ellos.

¿ Tenemos control sobre php.ini ?

- Si en phpinfo() Configuration File (php.ini) Path lo muestra dentro de un directorio al que tenemos acceso (ej.: '/home/domain/public_html/php.ini'), tenemos control sobre él.

En resumen:
* PHP corriendo como CGI no podemos usar .htaccess para modificar configuración de PHP. Debemos usar php.ini bajo nuestro DocumentRoot asignado. (Este detalle de la ruta concreta que tenemos asignada también la podemos ver con un phpinfo())
* Revisar los permisos de ejecución de los scripts involucrados .. no pueden ser mayor que 755.

FAQ relacionada:
http://www.forosdelweb.com/showpost....&postcount=123

Autor orginal:
Shockly

Referencia y nacimiento de esta FAQ:
http://www.forosdelweb.com/f18/duda-sobre-upload_max_filesize-353895/


La zona horaria es GMT -6. Ahora son las 06:39.

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