Foros del Web » Programando para Internet » PHP »

Se me duplican registros desde firefox (PHP/MySQL)

Estas en el tema de Se me duplican registros desde firefox (PHP/MySQL) en el foro de PHP en Foros del Web. Hola, soy nuevo en el foro y se podría decir que tambien en PHP y MySQL, desde hace 2 dias que estoy detenido con un ...
  #1 (permalink)  
Antiguo 17/01/2007, 08:56
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Se me duplican registros desde firefox (PHP/MySQL)

Hola, soy nuevo en el foro y se podría decir que tambien en PHP y MySQL, desde hace 2 dias que estoy detenido con un problema que me tiene a tras perder.

He hecho un formulario para dar de alta datos a mi BD en MySQL, si dicho formulario lo utilizo desde IE guarda un registro sin problemas, ahora si el mismo formulario lo uso desde firefox me guarda cada registro 2 veces.

Dado que tengo un ID auto_increment en la BD, me crea 2 registros con distintos ID pero con el mismo contenido.

Anoche me volví loco pensando que podía ser algún postback que se me había pasado por alto, pero por más que miro el código no veo nada erroneo.

Lo único que hace de especial este form es que utiliza 2 combos combinados, al estilo PAIS/PROVINCIA con lo cual cada vez que se selecciona en el primer combo se hace un submit, lo que no sé es si cuando se hace un submit con el boton enviar, tambien se vuelve a hacer un submit desde el combo y con la misma info por haber cambiado este.

Dejo aqui debajo el código para que algún alma noble me pueda decir que ve de raro.

<!--
Formulario para Alta de letras
-->
<p>
<?php require_once('Connect.php'); ?>
<?php
if ($_GET['btnEnviar']="Enviar") {
if ($_GET['ID_Artista']!="" && $_GET['ID_Album']!="" && $_GET['txtCancion']!="") {
echo "Alta de nueva letra<br>\n";
// Toma los datos del GET
$idArtista=$_GET['ID_Artista'];
$idAlbum=$_GET['ID_Album'];
$Cancion=$_GET['txtCancion'];
$Letra=$_GET['txtLetra'];
// Graba la Cancion
$SQL=" INSERT INTO Canciones (ID_Artista, ID_Album, Cancion) ";
$SQL.="VALUES($idArtista, $idAlbum, '$Cancion')";
echo $SQL."<br>\n";
$SQL = mysql_query($SQL,$conexion) or die(mysql_error());
// Extrae el valor del campo Auto-Incremental
$ult_id = mysql_insert_id($conexion);
echo $ult_id."<br>\n";
// Graba la letra de dicha cancion
$SQL="INSERT INTO Letras (ID_Artista, ID_Album, ID_Cancion, Idioma, Letra) ";
$SQL.="VALUES ($idArtista, $idAlbum, $ult_id, 'SPA','$Letra')";
echo $SQL."<br>\n";
$SQL = mysql_query($SQL,$conexion) or die(mysql_error());
}
}
$SQL = "Select * from Artistas Order by Artista ASC";
$Artistas = mysql_db_query($base,$SQL) or die(mysql_error());
$row_Artistas = mysql_fetch_assoc($Artistas);
$totalRows_Artistas = mysql_num_rows($Artistas);
$colname_Albumes = 0;
if (isset($_GET['ID_Artista']) && $_GET['ID_Artista']!="") {
$colname_Albumes = $_GET['ID_Artista'];
}
$SQL = "Select * FROM Albumes Where ID_Artista=".$colname_Albumes." Order by Album ASC";
echo $SQL."<br>\n";
$Albumes = mysql_db_query($base,$SQL) or die(mysql_error());
$row_Albumes = mysql_fetch_assoc($Albumes);
$totalRows_Albumes = mysql_num_rows($Albumes);
?>
<span class="style56">Si no encuentra la letra que busca y tampoco puede agregar aqui la letra que usted desea ver,</span><span class="style56">sea paciente por favor, estamos trabajando para usted.</span>
</p>
<form name="AltaDeLetras" method="GET" action="">
<table width="630" height="236" border="0" class="style50">
<tr>
<td width="28">&nbsp;</td>
<td width="92"><div align="right">Interprete:</div></td>
<td width="462" align="left" valign="top"><select name="ID_Artista" id="ID_Artista" onChange="submit()">
<option value="" <?php if (!(strcmp("", $_GET['ID_Artista']))) {echo "SELECTED";} ?>>Seleccionar</option>
<?php
do {
?>
<option value="<?php echo $row_Artistas['ID']?>"<?php if (!(strcmp($row_Artistas['ID'], $_GET['ID_Artista']))) {echo "SELECTED";} ?>><?php echo $row_Artistas['Artista']?></option>
<?php
} while ($row_Artistas = mysql_fetch_assoc($Artistas));
$rows = mysql_num_rows($Artistas);
if($rows > 0) {
mysql_data_seek($Artistas, 0);
$row_Artistas = mysql_fetch_assoc($Artistas);
}
?>
</select></td>
<td width="30">&nbsp;</td>

</tr>
<tr>
<td width="28">&nbsp;</td>
<td><div align="right">Album:</div></td>
<td align="left" valign="top"><select name="ID_Album" id="select">
<option value="" <?php if (!(strcmp("", $_GET['ID_Album']))) {echo "SELECTED";} ?>>Seleccionar</option>
<?php
do {
?>
<option value="<?php echo $row_Albumes['ID']?>"<?php if (!(strcmp($row_Albumes['ID'], $_GET['ID_Album']))) {echo "SELECTED";} ?>><?php echo $row_Albumes['Album']?></option>
<?php
} while ($row_Albumes = mysql_fetch_assoc($Albumes));
$rows = mysql_num_rows($Albumes);
if($rows > 0) {
mysql_data_seek($Albumes, 0);
$row_Albumes = mysql_fetch_assoc($Albumes);
}
?>
</select></td>
<td width="30">&nbsp;</td>
</tr>
<tr>
<td width="28">&nbsp;</td>
<td><div align="right">Cancion:</div></td>
<td align="left" valign="top"><input name="txtCancion" type="text" size="50"> </td>
<td width="30">&nbsp;</td>
</tr>
<tr>
<td height="26">&nbsp;</td>
<td valign="top"><div align="right">Idioma: </div></td>
<td align="left" valign="top"><select name="ID_Idioma" id="ID_Idioma">
<option value="SPA">Espanol</option>
<option value="ENG">Ingles</option>
</select></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="28" height="122">&nbsp;</td>
<td valign="top"><div align="right">Letra: </div></td>
<td align="left" valign="top"><textarea name="txtLetra" cols="45" rows="6"></textarea> </td>
<td width="30">&nbsp;</td>
</tr>
</table>
<p>
<input name="btnEnviar" type="submit" id="btnEnviar" value="Enviar">
<input name="btnReset" type="reset" id="btnReset" value="Limpiar campos">
</p>
</form>
<p>
<?php
mysql_free_result($Artistas);
mysql_free_result($Albumes);
?>
<!--
Fin del Formulario para Alta de letras
-->
  #2 (permalink)  
Antiguo 17/01/2007, 11:22
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Se me duplican registros desde firefox (PHP/MySQL)

Al menos coloca el codigo entre etiquetas para que sea mas legible...

__________________
Federico.

Mi página: www.jourmoly.com.ar
  #3 (permalink)  
Antiguo 17/01/2007, 11:45
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Se me duplican registros desde firefox (PHP/MySQL)

Cita:
Iniciado por Fridureiks Ver Mensaje
Al menos coloca el codigo entre etiquetas para que sea mas legible...

Lo coloco de esta forma para que no se corten las lineas y quede más legible, aunque se supone que el que sepa PHP/MySQL y quiera darme una mano lo va a llevar a Macromedia u otro editor con lo cual como esté posteado aqui es lo de menos.

Lo rarisimo es que solo se me dá este problema con el FireFox1.5, ya que en IE6 no tengo problemas.
  #4 (permalink)  
Antiguo 17/01/2007, 12:07
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Se me duplican registros desde firefox (PHP/MySQL)

No soy del todo experto en el uso de firefox , pero me imagino que lo que pasa es que firefox esta tomando el valor de tu boton submit sin que lo hayas presionado, y IE si esta tomando el valor a su debido tiempo. Lo que podrias intentar - aparte de validar el boton- es validar que algun campo no venga vacio, para saber que se va a realizar la inserción.

Saludillos.
  #5 (permalink)  
Antiguo 17/01/2007, 12:26
Avatar de FabianSN  
Fecha de Ingreso: enero-2007
Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Se me duplican registros desde firefox (PHP/MySQL)

Cita:
Iniciado por mauled Ver Mensaje
No soy del todo experto en el uso de firefox , pero me imagino que lo que pasa es que firefox esta tomando el valor de tu boton submit sin que lo hayas presionado, y IE si esta tomando el valor a su debido tiempo. Lo que podrias intentar - aparte de validar el boton- es validar que algun campo no venga vacio, para saber que se va a realizar la inserción.

Saludillos.
Me parece que tenes razon, yo tambien lo estaba mirando por ese lado pero no pude hallar la forma de evaluar la situacion de acuerdo al contenido de los campos enviados, lo cual en cierta forma es lógico dado que cada submit es un envío distinto al anterior pero con los mismos datos, o sea, son como 2 submit uno detras del otro y con la misma info.

La verdad es que de tanto analizarlo ya se me está secando el cerebro.
De todas formas, gracias por tu aporte.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:51.