Comunidad de diseño web y desarrollo en internet online

Alertar, encriptar y actualizar auto incremet

Citar            
MensajeEscrito el 22 Oct 2009 01:46 pm
Hola, continuando con mi labor de aprendizaje de php y mysql, me surgen en este momento 3 dudas,que espero sean faciles de responder.

1ºTengo una tabla dinamica que saca todos los datos de la tabla de cada usuario.Uno de los campos es una fecha, la cual avisara que ese usuario tiene que renovar el registro , ¿se puede hacer que cuando falte por ejemplo un mes para que se cumpla esa fecha, las letras de la tabla cambien por ejemplo de color?por supuesto no todos usuarios tendran la misma fecha por lo que cambiara en unos si y otros no.

2ºTengo la duda de que por ejemplo creamos un formulario de accso de usuarios, te pide clave y acceso y entras por ejemploa una pagina llamada restriccion.php. , pero resulta que si una persona de chiripa da con ese nombre puede saltarse el formulario de acceso sin problemas, poniendo en navegador: www.dominio.es/restriccion.php, ¿como puedo evitar esto?


3ºTengo una tabla de usuarios con un campo id_usuario que es auto_increment.Cual es el problema?que depsues de hacer pruebas creando y borrando usuarios pues ahora por ejemplo me los crea en el numero que se quedo,es decir, tengo 3, pero el cuarto no me lo crea con id_usuario4, sino 24 por ejemplo y aunque lo cambien een phpmyadmin, a 4 el siguiente me lo crea con id_usuario25.


Gracias de ante mano.

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 23 Oct 2009 05:08 pm
Amigo lo que debes hacer es:

1. lo que debes hacer es una operacion en mysql y luego procesarla en php asi:
sentencia en mysql:

SELECT ((
floor( (
UNIX_TIMESTAMP( ) - UNIX_TIMESTAMP( fecha ) ) /86400
)
)
) AS dias_pasados, nomusu, fecha
FROM usuarios


Donde la funcion UNIX_TIMESTAMP nos devuelve la fecha actual en donde nos encontramos.
y se la restamos a la fecha de los usuarios de la tabla como esto me devuelve un valor con decimales la redondeo con la funcion floor y luego le coloco un alias a un campo cualquiera que es donde me colocara el valor del tiempo transcurrido y los demas campos de la tabla usuarios.

en php hago una consulta para traerme ese campo y almacenarlo en una variable donde tu por ejemplo la compararas con el valor de 30 para realizar la accion que quieras, es decir en php seria asi:

<html>
<center>
<h1> Modulo de Usuarios que han Expirado Pepito Piscinas</h1>
<form name=f method=get action="">

</form>
</html>
<?php
require("conex.php");/* script donde esta la conexion*/


echo "<table border=1>";
echo "<tr> <th> Usuario <th> fecha <th>Dias";




/*ESTA ES LA CONSULTA QUE DEVUELVE LOS DIAS QUE HAN PASADO*/
$sql = "SELECT ((
floor( (
UNIX_TIMESTAMP( ) - UNIX_TIMESTAMP( fecha ) ) /86400
)
)
) AS dias_pasados, nomusu, fecha
FROM usuarios ";

/*ESTA ES LA CONSULTA QUE DEVUELVE LOS DIAS QUE HAN PASADO*/


$cursor = mysql_query( $sql, $local );
while( $row = mysql_fetch_array( $cursor ) ){
$nom = $row["nomusu"];
$fecha = $row["fecha"];
$dias = $row["dias_pasados"];

if($dias>30){
$color="#005B99' ";
}
else{
$color="#228b22";
}

echo "<tr> <td bgcolor='$color'> $nom <td bgcolor='$color'> $fecha <td bgcolor='$color'> $dias";
}
echo "</table>";





?>

y listo: :)


2) Como tu te autentificas por sesiones en tu pagina principal de usuarios no hay problemas porque al acesar a otra que tambien tenga autentificacion por sesiones si el usuario no tiene activa la sesion no podra entrar.



3)Prueba con esta sentencia

ALTER TABLE nombre_tabla AUTO_INCREMENT=1 (para reiniciarla).

Cualquier cosa comentame.. :?
El servir nos hace grandes :cool:

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Oct 2009 10:05 pm
hola, de nuevo gracias.El apartado 2 y 3 estan solucionados,gracias a tus consejos.en cambio con el uno sigo teniendo problemillas.suponiendo que tengo el siguiente codigo, no se donde debo poner lo que me dices.He probado poner elcodigo en una pagina nueva y da error sobre todo en las lineas de $cursor,por supuesto he mdificado los campos.

Código PHP :

<?php include('Connections/dcool.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_dcool, $dcool);
$query_dcool = "SELECT * FROM clientes";
$dcool = mysql_query($query_dcool, $dcool) or die(mysql_error());
$row_dcool = mysql_fetch_assoc($dcool);
$totalRows_dcool = mysql_num_rows($dcool);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<table border="1">
  <tr>
    <td>id_cliente</td>
    <td>dominio</td>
    <td>fecha_prox_renovacion</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_dcool['id_cliente']; ?></td>
      <td><?php echo $row_dcool['dominio']; ?></td>
      <td><?php echo $row_dcool['fecha_prox_renovacion']; ?></td>
    </tr>
    <?php } while ($row_dcool = mysql_fetch_assoc($dcool)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($dcool);
?>

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 24 Oct 2009 05:59 pm
Bueno Amigo quedaria asi:


<?php
include('Connections/dcool.php');
echo "<center>";
echo "<table border=1>";
echo "<tr> <th>id_cliente <th>Dominio<th> fecha <th>Dias";




/*ESTA ES LA CONSULTA QUE DEVUELVE LOS DIAS QUE HAN PASADO*/
$sql = "SELECT ((
floor( (
UNIX_TIMESTAMP( ) - UNIX_TIMESTAMP( fecha_prox_renovacion ) ) /86400
)
)
) AS dias_pasados, id_cliente, dominio,fecha_prox_renovacion
FROM clientes ";

/*ESTA ES LA CONSULTA QUE DEVUELVE LOS DIAS QUE HAN PASADO*/


$cursor = mysql_query( $sql, $dcool );
while( $row = mysql_fetch_array( $cursor ) ){
$nom = $row["id_cliente"];
$dom = $row["dominio"];
$fecha = $row["fecha_prox_renovacion"];
$dias = $row["dias_pasados"];

if($dias>30){
$color="#005B99' ";
}
else{
$color="#228b22";
}

echo "<tr> <td bgcolor='$color'> $nom<td bgcolor='$color'> $dom <td bgcolor='$color'> $fecha <td bgcolor='$color'> $dias";
}
echo "</table>";



?>

y listo. :) Comentame como te fue.

El servir nos hace grandes :cool:

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Oct 2009 07:55 pm
Hola, gracias por tu ayuda nuevamente,a continuacion te pongo el error que me tira cuando pongo la pagina en el servidor, dentro de la tabla debajo de "dias"pone esto:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homepages/xx/xxxxxxxxxxx/htdocs/xxxxxx/expire2.php on line 23

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Oct 2009 04:01 pm
Amigo esto se puso Bueno :shock:, de los errores aprendemos todos, no te preocupes cuando te sale esta linea:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homepages/xx/xxxxxxxxxxx/htdocs/xxxxxx/expire2.php on line 23

Resulta que la consulta que tu envias de tu tabla a la variable $sql es leida en esta linea
$cursor = mysql_query( $sql, $dcool );
y si los campos que envias en la consulta no son validos aparece este error.
para verificar que la consulta esta bien puedes hacer lo siguiente.
En phpmyadmin en tu base de datos, en la pestaña sql en la parte de arriba da click en ella y te aparecera un textarea donde puedes hacer consultas tipo sql copia lo siguiente:

SELECT ((
floor( (
UNIX_TIMESTAMP( ) - UNIX_TIMESTAMP( fecha_prox_renovacion ) ) /86400
)
)
) AS dias_pasados, id_cliente, dominio,fecha_prox_renovacion
FROM clientes

Si te sale error significa que debes acomodar los campos de la consulta a los campos de tu tabla.

Para probar tu script cree la siguiente tabla en mysql :

CREATE TABLE `clientes` (
`id_cliente` int(11) NOT NULL auto_increment,
`dominio` varchar(35) collate latin1_general_ci NOT NULL,
`fecha_prox_renovacion` date NOT NULL,
PRIMARY KEY (`id_cliente`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;

--
-- Volcar la base de datos para la tabla `clientes`
--

INSERT INTO `clientes` (`id_cliente`, `dominio`, `fecha_prox_renovacion`) VALUES
(1, 'www.soyabeja.com', '2009-09-21'),
(2, 'www.sisinteligentes.com', '2009-09-25'),
(3, 'www.soychichipato.com.arg', '2009-10-15'),
(4, 'www.pepitopiscinas.com', '2009-10-15');


y lo probe en mi server. mira el ejemplo en esta direccion:

http://www.sisinteligentes.com/usuarios/clientes.php

Comentame que estamos para ayudarnos. :)


El servir nos hace grandes :cool:

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Oct 2009 05:01 pm
hola de nuevo gracias , ya lo he conseguido, el problema era que no tenia la columna de dias_pasados creada en la tabla.
ahora dos pequeños detales:

me funciona pero me genera un error esto "mysql_free_result($dcool);" lo he puetso comocomntario y funciona ,pasara algo?
Y otra cosa, como podria hacer esto mismo pero a la inversa?es decir que me avise antes y no despues.

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Oct 2009 08:40 pm
Bueno,
Mysql_free_result() se usa para liberar la memoria empleada al realizar una consulta, lo que podraias hacer es colocar
mysql_free_result($sql); donde $sql es la variable donde esta la consulta de sql que haces a la tabla. El otro punto no te entendi muy bien:
si lo que quieres es esto :
http://www.sisinteligentes.com/usuarios/clientes.php

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Oct 2009 09:03 pm
gracias lo quete decia es que en vez de cambiar de color pasado un plazo, cambiara antes de cumplir la fecha

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Oct 2009 09:18 pm
Hoy estoy un poco lento mi procesador 386 esta lento :oops: pon un ejemplo.

Por crmauricio

52 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Oct 2009 02:20 pm
nada gracias, ya esta, lo que queria era que en vez de ponerse de otro color pasado una fecha , cambiara antes de que llegara esa fecha.
Lo que he hecho ha sido cambiar el >30 por >=-30

Por pepito piscinas

106 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.