
17/01/2007, 08:56
|
 | | | Fecha de Ingreso: enero-2007 Ubicación: SNicolas, BsAs, Argentina
Mensajes: 96
Antigüedad: 18 años, 2 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"> </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"> </td>
</tr>
<tr>
<td width="28"> </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"> </td>
</tr>
<tr>
<td width="28"> </td>
<td><div align="right">Cancion:</div></td>
<td align="left" valign="top"><input name="txtCancion" type="text" size="50"> </td>
<td width="30"> </td>
</tr>
<tr>
<td height="26"> </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> </td>
</tr>
<tr>
<td width="28" height="122"> </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"> </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
--> |