Foros del Web » Programando para Internet » PHP »

Insertar valores en MySQL con PHP: Duplicados

Estas en el tema de Insertar valores en MySQL con PHP: Duplicados en el foro de PHP en Foros del Web. Hola a todos. El siguiente código es un formulario HTML que me permite recoger variables de un usuario: Cita: <FORM ACTION="procesar.php"> <TABLE> <TR> <TD>Nombre del ...
  #1 (permalink)  
Antiguo 07/12/2009, 10:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Insertar valores en MySQL con PHP: Duplicados

Hola a todos. El siguiente código es un formulario HTML que me permite recoger variables de un usuario:

Cita:
<FORM ACTION="procesar.php">
<TABLE>
<TR>
<TD>Nombre del Sitio :</TD>
<TD><INPUT TYPE="text" NAME="nombre" SIZE="50" MAXLENGTH="50"></TD> <!--Ingresa la variable $nombre-->
</TR>
<TR>
<TD>Descripción del Sitio :</TD>
<TD><INPUT TYPE="text" NAME="descripcion" SIZE="250" MAXLENGTH="250"></TD> <!--Ingresa la variable $descripcion-->
</TR>
<TR>
<TD>URL:</TD>
<TD><INPUT TYPE="text" NAME="url" SIZE="100" MAXLENGTH="100"></TD> <!--Ingresa la variable $url-->
</TR>
</TABLE>
</FORM>
Ahora tomo los datos en variables:

Cita:
<?php
include("conexion.php");
$link=conectar();
mysql_query ("SET NAMES 'utf8'");
$nombre=$_GET['nombre'];
$descripcion=$_GET['descripcion'];
$tipo_de_juego=$_GET['tipo_de_juego'];
$url=$_GET['url'];
Ahora el tema es que el $url del formulario quiero compararlo con todos los valores url de la base de datos. He intentado mil formas y no he podido.
Pensé en hacer un bucle pero no salió. En el siguiente código intenté algo, pero no salió:

Cita:
$url=$_GET['url'];
$variableurl="SELECT * FROM rank WHERE url=$url";
$intermedia = mysql_query($variableurl);
$urlsql = mysql_fetch_assoc($intermedia);

if ( $url == $urlsql )
// Es para reinicializar las variables del formulario, introducidas anteriormente.
$nombre="";
$descripcion="";
$url="";
}
else {.....................
(ACA CONTINUA LO QUE TIENE QUE HACER SI NO HAY URL REPETIDAS)
¿En qué parte está fallando el código?
  #2 (permalink)  
Antiguo 07/12/2009, 10:23
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Insertar valores en MySQL con PHP: Duplicados

$urlsql es un array (es lo que devuelve mysql_fetch_assoc), tienes que comprarar $url con un elemento del array, no con el array entero

Ademas en la consulta, $url es texto (supongo) por lo que deberia ir entre comillas simples (')
  #3 (permalink)  
Antiguo 07/12/2009, 10:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Insertar valores en MySQL con PHP: Duplicados

Excelente, pero, sigo, darkasecas, como puedo hacer? Porque pensé con LIMIT n y hacer un bucle con n=1, n=2, etc. (no se si es muy eficiente), e ir comparando uno con uno. Sería así?
  #4 (permalink)  
Antiguo 07/12/2009, 10:59
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Insertar valores en MySQL con PHP: Duplicados

No estoy seguro para que necesitas un limit, si solo quieres que no inserte si existe una url igual en la bd, la idea del codigo de tu primer post (con las correcciones que te menciono) es suficiente
  #5 (permalink)  
Antiguo 07/12/2009, 11:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Insertar valores en MySQL con PHP: Duplicados

Entonces, no se como comparar la variable $url con una variable del array $urlsql y repetir la cosa. No se.
  #6 (permalink)  
Antiguo 07/12/2009, 12:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Insertar valores en MySQL con PHP: Duplicados

Intenté el siguiente código:

Cita:
include("conexion.php");
$link=conectar();
mysql_query ("SET NAMES 'utf8'");
$nombre=$_GET['nombre'];
$descripcion=$_GET['descripcion'];
$tipo_de_juego=$_GET['tipo_de_juego'];
// Consigue la URL de la base de datos y la compara con la URL del formulario. Si son iguales, reinicializa las variables
$url=$_GET['url'];
$variableurl="SELECT url FROM rank";
$intermedia = mysql_query($variableurl);
while ($urldatabase = mysql_fetch_assoc($intermedia));
{
if ($url == $urldatabase["url"])
// Si la url del formulario es idéntica a la url de la base de datos, entonces reinicializa las variables (las pone en " ").
$nombre="";
$descripcion="";
$url="";
}
//ACA SIGUE OTRO CODIGO
if ( $tipo_de_juego == 1 ) {
$q = "UPDATE rank SET nombre='$nombre', descripcion='$descripcion', url='$url' WHERE nombre='' AND id>0 AND id<1001 LIMIT 1";
}
El tema es que ahora no me inserta NINGUN dato en la base de datos, tenga o no el URL idéntico. Por favor, me podrían ayudar? Gracias
  #7 (permalink)  
Antiguo 07/12/2009, 12:33
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Insertar valores en MySQL con PHP: Duplicados

Sabes como funciona mysql_fetch_assoc? Sabes trabajar con arrays asociativos?
Ok parece que si, pero

Sigo sin entender por que quieres "repetir la cosa", con la idea de tu codigo original sabes si ya existe en la bd o no la url que envia en usuario con esa sola consulta
  #8 (permalink)  
Antiguo 07/12/2009, 12:49
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Insertar valores en MySQL con PHP: Duplicados

Yo estoy aprendiendo. Mirá, el tema es que si yo lleno un array con muchas url (ponele 10000) y tengo que compararlo con una, creería que necesito hacer un while que me compare cada una de ellas con la variable url del formulario.
O vos decís que con:

Cita:
$url=$_GET['url'];
$variableurl="SELECT * FROM rank WHERE url=$url";
$intermedia = mysql_query($variableurl);
$urlsql = mysql_fetch_assoc($intermedia);

if ( $url == $urlsql )
// Es para reinicializar las variables del formulario, introducidas anteriormente.
$nombre="";
$descripcion="";
$url="";
}
else {.....................
(ACA CONTINUA LO QUE TIENE QUE HACER SI NO HAY URL REPETIDAS)
Específicamente con :

Cita:
if ( $url == $urlsql )
Fijate en
Cita:
$variableurl="SELECT * FROM rank WHERE url=$url";
Acá está el problema. Le digo que seleccione todos los registros donde la url de la db es igual a la url del formulario. Eso está ok. Pero pensandolo bien, usaría mejor un COUNT, que opinás? Gracias
Es decir, si el valor de la variable $urlsql me da mayor que 0 (1, 2) significa que la url ya está en la base de datos y reinicializa las variables
  #9 (permalink)  
Antiguo 07/12/2009, 12:52
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Insertar valores en MySQL con PHP: Duplicados

Creo que no me estoy explicando bien. Tu segundo codigo (post 6) pero usando la consulta de tu post original deberia funcionarte
  #10 (permalink)  
Antiguo 07/12/2009, 13:04
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Insertar valores en MySQL con PHP: Duplicados

tu codigo esta fatal....... reemplazalo por este aver que tal te va...

Código php:
Ver original
  1. include("conexion.php");
  2. $link=conectar();
  3. mysql_query ("SET NAMES 'utf8'");
  4. $nombre=$_GET['nombre'];
  5. $descripcion=$_GET['descripcion'];
  6. $tipo_de_juego=$_GET['tipo_de_juego'];
  7. // Consigue la URL de la base de datos y la compara con la URL del formulario. Si son iguales, reinicializa las variables
  8. $url=$_GET['url'];
  9. $variableurl="SELECT url FROM rank";
  10. $intermedia = mysql_query($variableurl);
  11. $estado = true;
  12. while ($urldatabase = mysql_fetch_assoc($intermedia) and $estado){
  13.  if($url == $urldatabase["url"]){
  14.   $nombre="";
  15.   $descripcion="";
  16.   $url="";
  17.   $estado = false;
  18.   break;
  19.  }
  20. }
  21. if ( $tipo_de_juego == 1 and $estado) {
  22.  $q = "UPDATE rank SET nombre='$nombre', descripcion='$descripcion', url='$url' WHERE nombre='' AND id>0 AND id<1001 LIMIT 0,1";
  23. }

ahora, ese codigo lo que haria es limpiar los valores apenas encuentre una url en la bd igual a la que viene del formulario y coloca un estado de falso si este cumple...... de ser verdadero y el tipo de juego 1, recien actualiza...

espero sea lo que buscabas............

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #11 (permalink)  
Antiguo 07/12/2009, 13:09
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Insertar valores en MySQL con PHP: Duplicados

he arreglado mi codigo segun tu ultimo post.

Código php:
Ver original
  1. include "conexion.php";
  2. conectar();
  3. mysql_query ("SET NAMES 'utf8'");
  4. $nombre=$_GET['nombre'];
  5. $descripcion=$_GET['descripcion'];
  6. $tipo_de_juego=$_GET['tipo_de_juego'];
  7. $url=$_GET['url'];
  8. $rs= mysql_query("SELECT * FROM rank WHERE url='$url'");
  9. if(mysql_num_rows($rs) > 0){
  10.   $nombre="";
  11.   $descripcion="";
  12.   $url="";
  13. }elseif ( $tipo_de_juego == 1) {
  14.  $q = "UPDATE rank SET nombre='$nombre', descripcion='$descripcion', url='$url' WHERE nombre='' AND id>0 AND id<1001 LIMIT 0,1";
  15. }

ahora, ese codigo lo que haria es limpiar los valores si encuentra una url igual a la que viene del formulario, pero si no encuentra ninguna y el tipo de juego 1, recien actualiza...

espero sea lo que buscabas ahora si............

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
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 05:17.