Foros del Web » Programando para Internet » PHP »

Por que me repite el id? ronda los 5 ultimos ids

Estas en el tema de Por que me repite el id? ronda los 5 ultimos ids en el foro de PHP en Foros del Web. Por que el id se me repite si lo tengo perfectamente incluse le ise un where para comprobar que no me lo repita Código PHP: ...
  #1 (permalink)  
Antiguo 21/01/2011, 20:26
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Pregunta Por que me repite el id? ronda los 5 ultimos ids

Por que el id se me repite si lo tengo perfectamente incluse le ise un where para comprobar que no me lo repita

Código PHP:




$sql 
"SELECT * FROM tabla ORDER BY id_sql ASC";

$res mysql_query($sql); 
$num mysql_num_rows($res);
 
$id $num+1

where:


Código PHP:


// Paso 2: Hacemos la consulta a la Tabla por el usuario 
$busquedamysql_query("SELECT id_sql FROM tabla WHERE id_sql='$id'"); 
 
 
// 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: 

    
$sql=mysql_query("INSERT INTO tabla SET ".$dentro_2.",".$dentro_1.""  ",$link) or die(mysql_error());
            

                                                                
      echo "
$id ha sido registrado."; 

  #2 (permalink)  
Antiguo 21/01/2011, 23:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

En el paso 1 lo unico que estas haciendo es leer toooodos los registros de la tabla y despues solo contarlos.

$id = $num+1;

No te almacena una id de usuario, sino el total de registros en la tabla mas uno.

Para verificar que no se dupliquen nombres de usuario lo correcto seria:
Paso1
Código PHP:
Ver original
  1. $sql = "SELECT id_sql FROM tabla WHERE campo_de_nombre_de_usuario = 'nombre que se quiere registrar'";
  2. $res = mysql_query($sql); // Ejecutas la consulta
  3. if(mysql_num_rows($res) > 0) { // Se obtuvieron registros?
  4.     // Nombre de usuario ya registrado!!!
  5. } else {
  6.     // Todo bien, continua el proceso
  7. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/01/2011, 04:34
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Pero hay un problema muy grave al contener dos nombre distintos el mismo id , solo me motrara la descripcion del primer id puesto , ya que lo tengo por metodo get a la siguiente pagina ,.

-En conclucion si tengo 2 ids solo me muestra una descripcion que corresponde al primero .

Que puedo hacer? esto nome habia pasado antes.


-Por otro lado si lo ago por nombre de usuario , fastidiaria la url amigable por guion.
  #4 (permalink)  
Antiguo 22/01/2011, 04:56
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Atiendo a esta solucion , no entiendo que le ocurre al mysql_query_num_rows .

-Pero esta otra solucion es muy efectiva y conside que es aprueba de fallos se las recomiendo a todos aquellos que esten usan num_row para contar los registros.


Código PHP:





$sql 
"SELECT * FROM tabla ORDER BY id_sql DESC LIMIT 1 ";


$res=mysql_query($sql);

$result=mysql_fetch_array($res);

$id=$result['id_sql']+1
  #5 (permalink)  
Antiguo 22/01/2011, 11:10
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Con ese codigo no cuentas el numero de registros, sino que obtienes el ultimo ID y le sumas 1.

Que el ultimo ID sea 541, no significa que hayan 541 registros.

Usa:

Código PHP:
Ver original
  1. $result = mysql_query("SELECT COUNT(*) AS numero_registros FROM tabla");
  2. $row = mysql_fetch_assoc($result);
  3. $id = $row['numero_registros'];
  #6 (permalink)  
Antiguo 22/01/2011, 12:09
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Es mejor hacerlo con un while para imprimir todos los datos de la bd
  #7 (permalink)  
Antiguo 22/01/2011, 12:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Me parece que tienes una idea erronea sobre el procedimiento que estas haciendo:

1- Si quieres contar los registros en la tabla, usa el codigo sugerido por Ronruby
2- Si quieres verificar si un nombre de usuario esta disponible o no, usa el codigo que te sugeri, obviamente el nombre de usuario lo obtienes desde $_POST, no desde $_GET y no tienen porque fastidiarse tus URL's amigables
3- Si quieres desplegar la id del nuevo usuario registrado y tu llave primaria es entero y auto incrementable, investiga sobre mysql_insert_id()
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 22/01/2011, 17:09
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Lose :

Cita:

$result = mysql_query("SELECT COUNT(*) AS numero_registros FROM tabla");
$row = mysql_fetch_assoc($result);
$id = $row['numero_registros'];
Pero el mysql_fetch_row , en ocaciones duplica un id obtenido de la tabla , por que lo hace , sinceramente no lose .


Lose :

Cita:
2- Si quieres verificar si un nombre de usuario esta disponible o no, usa el codigo que te sugeri, obviamente el nombre de usuario lo obtienes desde $_POST, no desde $_GET y no tienen porque fastidiarse tus URL's amigables

Pero tratandose de conseguir el nombre muchos tienen parecido , el %20 interfiere para encontrar el resultado y tambien la id significa mucho ya que no se equivoca.

Muy buena opcion esta , esto depara lo equivocados que stamos quienes usamos estas alternivas expuestas antes , sin duda tomaria este ejemplo muy atractivo.
Código PHP:

<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Could not connect: ' mysql_error());
}
mysql_select_db('mydb');

mysql_query("Select * FROM mytable name");

printf("Obtenemos el ultimo id %d\n"mysql_insert_id());

//muy rapida la verda.

?>
  #9 (permalink)  
Antiguo 22/01/2011, 19:02
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 10 meses
Puntos: 26
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Cita:
Iniciado por yooom Ver Mensaje
Pero hay un problema muy grave al contener dos nombre distintos el mismo id , solo me motrara la descripcion del primer id puesto , ya que lo tengo por metodo get a la siguiente pagina ,.

-En conclucion si tengo 2 ids solo me muestra una descripcion que corresponde al primero .

Que puedo hacer? esto nome habia pasado antes.


-Por otro lado si lo ago por nombre de usuario , fastidiaria la url amigable por guion.
como nota de normalizacion, no, ni siquiera alcanza para normalizacion, si los datos como la id son primary key, quiere decir que son datos unicos y por ende no deben repetirse =/.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #10 (permalink)  
Antiguo 22/01/2011, 21:19
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

pues a mi me pasa. obra de php my admin id tipo int y mysql num rows.
  #11 (permalink)  
Antiguo 23/01/2011, 17:40
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 10 meses
Puntos: 26
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

entonces eres un mal programador (:

ya que por lo mismo el atributo que es primary key son para datos unicos e inrepetibles.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #12 (permalink)  
Antiguo 26/01/2011, 17:33
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 293
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Por que me repite el id? ronda los 5 ultimos ids

Eso dicen...............

Etiquetas: ids, ultimo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.