Foros del Web » Programando para Internet » PHP »

Insertar en base de datos

Estas en el tema de Insertar en base de datos en el foro de PHP en Foros del Web. Hola de nuevo!!! Tengo un problema, manejo listas independientes con php y uso el refresh. El problema es que cada vez que se hace el ...
  #1 (permalink)  
Antiguo 21/04/2006, 15:59
 
Fecha de Ingreso: septiembre-2005
Mensajes: 141
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Insertar en base de datos

Hola de nuevo!!!

Tengo un problema, manejo listas independientes con php y uso el refresh. El problema es que cada vez que se hace el refresh se hace la inserción a la base de datos, y como consecuencia de esto se van metiendo los datos por partes.

Por ejemplo si tengo en la pagina los select pais, estado, ciudad y en mi base de datos es necesario tener los tres datos, elijo el pais y ese se inserta en la base de datos en el registro 1, luego elijo el estado y se inserta en la base de datos pero en el registro 2 y asi, no sé de que manera lograr tener los 3 datos y luego hacer la inserción.

Alguna idea???
__________________
:ojotes: A n I t A :ojotes:
  #2 (permalink)  
Antiguo 21/04/2006, 16:02
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
En el codigo de insercion verifica que estén los tres datos, asi:

Código PHP:
<?php
if(isset($_POST['select1']) && isset($_POST['select2']) && isset($_POST['select3']))
{
    
//codigo para guardar en la bd
}
?>
  #3 (permalink)  
Antiguo 21/04/2006, 17:50
 
Fecha de Ingreso: septiembre-2005
Mensajes: 141
Antigüedad: 18 años, 7 meses
Puntos: 0
No charcho alguna otra sugerencia???
__________________
:ojotes: A n I t A :ojotes:
  #4 (permalink)  
Antiguo 21/04/2006, 18:00
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Ahh, es que quizas los select siempre tiene un valor por defecto. Deberias colocar un valor "X", ejemplo: "seleccione opcion" en cada select y luego hacer el if asi:

Código PHP:
<?php
if(isset($_POST['select1']) && isset($_POST['select2']) && isset($_POST['select3']))
{
   if(
$_POST['select1']!="seleccione opcion" && $_POST['select2']!="seleccione opcion" &&  $_POST['select3']!="seleccione opcion")
   {
          
//codigo para guardar en la bd
   
}
}
?>
Aprovecha de mostrar el codigo que estás usando, para no adivinar.
  #5 (permalink)  
Antiguo 21/04/2006, 18:03
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 5 meses
Puntos: 2
Cuando refrescas la pagina seguramente usas javascript, no? en ese caso no estas usando el boton submit, y la variable $_POST['id_del_boton'] no deberia tener nada... en cambio cuando usas el boton esta seteada con el valor que le pusiste en "value" por lo que podrias hacer algo como:

if (!empty($_POST['id_del_boton'])){} (puedes probar con isset en lugar de !empty no recuerdo bien que envia...)

saludos
__________________
JmN
  #6 (permalink)  
Antiguo 22/04/2006, 06:18
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Cita:
Aprovecha de mostrar el codigo que estás usando, para no adivinar.
Jaja, es cierto, puras adivinanzas.

Te aconsejo que en la hoja de tu formulario cargues una variable de sesión con algún dato y luego lo verifiques en la página en la que insertas en la DB.

Digamos en la página del formulario:

$_SESSION["estoy_en_form"] = true;

y luego en la página en la que insertas el contenido del form:

if( $_SESSION["estoy_en_form"] != true ) exit;

Así al menos aseguras que el que envía las variables del formulario lo está haciendo desde tu página web y no con algún script malicioso para llenarte tu DB de basura.

Es opcional, por seguridad.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #7 (permalink)  
Antiguo 25/04/2006, 12:26
 
Fecha de Ingreso: septiembre-2005
Mensajes: 141
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta

A ver ahi esta el código, pero nunca me hace la inserción en la bd no sé porque y tengo un boton submit y tampoco con eso

En los select inicio
Código PHP:

<select name="disciplina" size="1" id="disciplina" onChange="this.form.submit()">
             <
option value="0" selected >Seleccione una Disciplina</option>


<
select name="categoria" size="1" id="categoria" onChange="this.form.submit()">
        <
option value="0" selected >Seleccione una Categoría</option>

<
select name="hora" size="1" id="hora" onChange="this.form.submit()">
          <
option value="0" selected >Seleccione el Horario</option
Código PHP:
      if( $_POST['disciplina'];!= &&  $_POST['categoria'];!=&& $_POST['hora'];!=0)
      {
          
$insertar"INSERT INTO inscripciones (NoSocio, Inscribio, Nombre, Apellido, Disciplina, Horario, Periodo) values ('$id','$name','$nom_alum','$apellido','$clase','$horario','$periodo')";
        
          
mysql_select_db($database_PAGINA$PAGINA);
          
$Result1 mysql_query($insertar$PAGINA) or die(mysql_error());
      }
    else
    {echo 
$_POST['disciplina']." ".$clase." "$horario." ".$periodo;  } 

Si le pongo comillas a los 0 no me toma en cuenta esa condicion y hace lo que mencione en el mensaje que abrio este tema

Alguna sugerencia?????
__________________
:ojotes: A n I t A :ojotes:
  #8 (permalink)  
Antiguo 25/04/2006, 14:23
 
Fecha de Ingreso: septiembre-2005
Mensajes: 141
Antigüedad: 18 años, 7 meses
Puntos: 0
Encontre el detalle que me causa todo el problema, pero no sé como resolverlo.

Resulta que en los select no me toma el valor que tiene el item seleccionado inicialmente, el que dice seleccione disciplina, seleccione categoria...

Hay una parte donde imprimo los valores que van tomando los select ( $clave, $clave2, $clave3) para checar las claves que van tomando, y se supone que inicialmente deberia de imprimirme 3 ceros, pero no imprime nada hasta que hago clic para seleccionar los items de seleccione disciplina y demas, es hasta entonces cuando se toma el valor de 0 por eso no me funcionan las condiciones para hacer la insercion en la bd.

Alguien me podria ayudar????


Código PHP:

....
<?php
if( $_POST['disciplina']!= '0'){ echo "Primer if";}
          if(
$_POST['categoria']!='0'){ echo "Segundo if";} 
                if(
$_POST['hora']!='0')
                  {
                      echo 
"Ni  matrix";
                      
$insertar"INSERT INTO inscripciones (NoSocio, Inscribio, Nombre, Apellido, Disciplina, Horario, Periodo) values ('$id','$name','$nom_alum','$apellido','$clase','$horario','$periodo')";
                    
                      
mysql_select_db($database_PAGINA$PAGINA);
                      
$Result1 mysql_query($insertar$PAGINA) or die(mysql_error());
                  }
            
                
/*else
                {echo $_POST['disciplina']." ".$clase." ". $horario." ".$periodo;  }*/
  
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<div align="right">
<table width="200" border="0">
  <tr>
    <td><div align="center" class="Estilo2">
      <?php  
      
      
if(!isset($_SESSION["MM_Username"]) ) //Si no existe la sesion lo mandamos al login
             
Header("Location: http://www.clubtresmarias.com.mx");
      echo 
$_SESSION["MM_Username"];
        
?>
    </div></td>
  </tr>
  <tr>
    <td><div align="center"><a href="../logout.php" onMouseOut="window.status='Tres Marias Residential Golf Club ©'"  onMouseOver="window.status='Tres Marias Residential Golf Club ©';return true"class="Estilo1">Cerrar Sesión Socio
      
    </a></div></td>
  </tr>
</table>
</div>
<p align="center" class="Estilo3">inscripciones</p>
<form name="form1" method="POST" action="<?php echo $editFormAction?>">
  <table width="414" border="0" align="center">
    <tr>
      <td width="131" height="30"><span class="Estilo3">nombre</span></td>
      <td width="273"><span class="Estilo3"><span class="Estilo5">
      <?php
      
if(isset($_POST['nombre'])) 
        echo 
"<input name='nombre' type='text' id='nombre' size='40' maxlength='40' value=".$_POST['nombre'].">";
      else
        echo 
"<input name='nombre' type='text' id='nombre' size='40' maxlength='40' >"
    
?>
      </span></span></td>
    </tr>
    <tr>
      <td height="29"><span class="Estilo3"><span class="Estilo5">apellido</span></span></td>
      <td width="273"><?php
      
if(isset($_POST['nombre'])) 
        echo 
"<input name='apellido' type='text' id='apellido' size='40' maxlength='40' value=".$_POST['apellido'].">";
      else
        echo 
"<input name='apellido' type='text' id='apellido' size='40' maxlength='40' >"
    
?>     </td>
    </tr>
    <tr>
      <td height="39"><span class="Estilo3">disciplina</span></td>
      <td><span class="Estilo5">
        <select name="disciplina" size="1" id="disciplina" onChange="this.form.submit()">
             <option value="0" selected >Seleccione una Disciplina</option>
              <?php
            
do {  
                
$clave=$_POST['disciplina'];
                
                if(
$clave==$row_disciplina['CveClase']){ 
                  echo 
"<option value=\"".$row_disciplina['CveClase']."\" selected>".                        $row_disciplina['Nombre']."</option>\n";
                }
               else{ 
                 echo 
"<option value=\"".$row_disciplina['CveClase']."\" >"$row_disciplina[                       'Nombre']."</option>\n";
                }
            } while (
$row_disciplina mysql_fetch_assoc($disciplina));
                  
$rows mysql_num_rows($disciplina);
                  if(
$rows 0) {
                      
mysql_data_seek($disciplina0);
                      
$row_disciplina mysql_fetch_assoc($disciplina);
               }
        
          
?>
        </select>
      </span></td>
    </tr>
    <tr>
      <td height="44" class="Estilo3">Categoria</td>
      <td><font color="#0066CC">
        <select name="categoria" size="1" id="categoria" onChange="this.form.submit()">
        <option value="0" selected >Seleccione una Categoría</option>
          <?php
            
            mysql_select_db
($database_PAGINA$PAGINA);
            
$query_categoria "SELECT * FROM subcategorias WHERE CveClase='$clave' ORDER BY Nombre ASC";
            
$categoria mysql_query($query_categoria$PAGINA) or die(mysql_error());
            
$row_categoria mysql_fetch_assoc($categoria);
            
$totalRows_categoria mysql_num_rows($categoria);
            
            do {  
            
                
$clave2=$_POST['categoria'];
                    
                if(
$clave2==$row_categoria['CveSub']){ 
                  echo 
"<option value=\"".$row_categoria['CveSub']."\" selected>".                        $row_categoria['Nombre']."</option>\n";
                }
               else{ 
                 echo 
"<option value=\"".$row_categoria['CveSub']."\" >"$row_categoria[                       'Nombre']."</option>\n";
                }
         
            } while (
$row_categoria mysql_fetch_assoc($categoria));
              
$rows mysql_num_rows($categoria);
              if(
$rows 0) {
                  
mysql_data_seek($categoria0);
                  
$row_categoria mysql_fetch_assoc($categoria);
              }
            
?>
        </select>
      </font></td>
    </tr>
    <tr>
      <td height="44" class="Estilo3">HORARIO</td>
      <td><font color="#0066CC">
        <select name="hora" size="1" class="Estilo5" id="hora" onChange="this.form.submit()">
          <option value="0" selected >Seleccione el Horario qwerty</option>
          <?php
            
            $clave3
=$_POST['hora'];
            
            
mysql_select_db($database_PAGINA$PAGINA);
            
$query_horario "SELECT * FROM horarios WHERE CveSub='$clave2' ORDER BY Hora ASC";
            
$horario mysql_query($query_horario$PAGINA) or die(mysql_error());
            
$row_horario mysql_fetch_assoc($horario);
            
$totalRows_horario mysql_num_rows($horario);
            
            do {  

              
$row_horario['Hora']= substr($row_horario['Hora'], 0,-3);

              if(
$clave3==$row_horario['CveHr']){ 
                  echo 
"<option value=\"".$row_horario['CveHr']."\" selected>".                        $row_horario['Hora']."</option>\n";
                }
               else{ 
                 echo 
"<option value=\"".$row_horario['CveHr']."\" >"$row_horario[                       'Hora']."</option>\n";
                    }
          
                } while (
$row_horario mysql_fetch_assoc($horario));
                  
$rows mysql_num_rows($horario);
                  if(
$rows 0) {
                      
mysql_data_seek($horario0);
                      
$row_horario mysql_fetch_assoc($horario);
                  }
  
            
?>
        </select>
      </font></td>
    </tr>
    <tr>
      <td height="33" class="Estilo3">PERIODO</td>
      <td><span class="Estilo3"><span class="Estilo5">
        <select name="periodo" size="1" id="periodo" >
          <option value="Mayo-Julio" selected>Mayo - Julio</option>
        </select>
      </span></span></td> 
    </tr>
  </table> 
  <p><?php echo $clave." ".$clave2." ".$clave3;
      
?>&nbsp;</p>
  <div align="center">
    <p class="Estilo3">
      <input name="inscribir" type="submit" id="inscribir" value="Inscribir">
    </p>
  </div>
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p align="center" class="Estilo3">&nbsp;</p>
<p align="left" class="Estilo3"><a href="../inicio_socio.php" class="Estilo2">Regresar</a></p>
</body>
</html>
__________________
:ojotes: A n I t A :ojotes:
  #9 (permalink)  
Antiguo 25/04/2006, 14:26
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Este if por que tiene ; entre las condiciones?

if( $_POST['disciplina'];!= 0 && $_POST['categoria'];!=0 && $_POST['hora'];!=0)

Debes quitarlos.
  #10 (permalink)  
Antiguo 25/04/2006, 14:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 141
Antigüedad: 18 años, 7 meses
Puntos: 0
Sip, ya cambie eso, ahora el codigo está como lo puse en el ultimo mensaje
__________________
:ojotes: A n I t A :ojotes:
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 18:08.