Foros del Web » Programando para Internet » PHP »

Recargar sin perder datos y recuperar de mysql

Estas en el tema de Recargar sin perder datos y recuperar de mysql en el foro de PHP en Foros del Web. Hola a todos, tengo dos problemillas, a ver si alguien me puede ayudar. Problema número 1: En un formulario (dar de alta un libro) tengo ...
  #1 (permalink)  
Antiguo 08/05/2005, 09:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Recargar sin perder datos y recuperar de mysql

Hola a todos, tengo dos problemillas, a ver si alguien me puede ayudar.
Problema número 1:
En un formulario (dar de alta un libro) tengo varios campos a rellenar, y cuando se van a añadir los autores del libro (pueden ser varios) los pongo en una lista con esta funcion:

<table width="608" border="0">
<tr>
<td><? if(isset($_POST["AnyadirAutor"]))
{
foreach($_POST["nombreAut"] as $nomAut)
{
//echo "<br>DNI: "."$dni";
?>
<input type="hidden" name="nombreAut[]" value="<? echo $nomAut; ?>" >
<tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"; ?></td></tr>
<?
}
}
?>
</td>
<td width="135">Nombre y Apellidos:</td>
<td width="463"><input type="text" name="nombreAut[]" width="450"></td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td>&nbsp;</td>
</tr>
</table>
<table width="487" border="0">
<tr>
<td width="481"><div align="right">
<input type="submit" name="AnyadirAutor" value="Añadir Autor">
</div></td>
</tr>
</table>

Resumiendo... cuando le doy al boton añadir autor me sale el autor en una lista, le problema es que se recarga la pagina y los datos que ya tenia escritos anteriormente desaparecen, que puedo hacer para que no desaparezcan???

Problema número 2:
Cuando recupero con PHP algun dato de MySQL solo me recupera hasta el primer espacio en blanco y yo quiero que me recupere todo... El dato esta declarado como VARCHAR, lo he probado con TEXT pero me pasa lo mismo. Alguna otra ayuda???

GRACIAS!!!!!
  #2 (permalink)  
Antiguo 08/05/2005, 09:17
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
Al código q pusiste le falta el form y el /form... agregando eso yo prueba y cada uno q agrego aparece nuevamente en la lista, incluso si pongo actualizar, así que creo que deberías especificar un poco más cual es el problema si podés...

El problema numero 2 me suena raro.... ¿Podrías poner el código que utilizás?
  #3 (permalink)  
Antiguo 08/05/2005, 09:35
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Seppo, funcionar funciona, esta claro, pero no es solo ese el codigo que tengo. El problema es, que yo relleno los campos anteriores y cuando le doy a añadir autor, pues todos los campos anteriormente rellenados desaparecen... Por ejemplo con este codigo:
<table width="596" border="0">
<tr>
<td width="102" height="100">Resumen:</td>
<td width="484"><textarea name="resumen" cols="75" rows="5"></textarea></td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td>&nbsp;</td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td><div align="center"><strong><span class="style1">AUTORES</span></strong></div></td>
</tr>
</table>
<table width="608" border="0">
<tr>
<td><? if(isset($_POST["AnyadirAutor"]))
{
foreach($_POST["nombreAut"] as $nomAut)
{
//echo "<br>DNI: "."$dni";
?>
<input type="hidden" name="nombreAut[]" value="<? echo $nomAut; ?>" >
<tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"; ?></td></tr>
<?
}
}
?>
</td>
<td width="135">Nombre y Apellidos:</td>
<td width="463"><input type="text" name="nombreAut[]" width="450"></td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td>&nbsp;</td>
</tr>
</table>
<table width="487" border="0">
<tr>
<td width="481"><div align="right">
<input type="submit" name="AnyadirAutor" value="Añadir Autor">
</div></td>
</tr>
</table>

Si rellenas el area de texto resumen, luego un autor y das a añadir autor, lo que has escrito en resumen desaparece...

El segundo problema, el codigo es:
<form name="form1" method="post" action="ResultadoModificarRegistro.php">
<?
@ $db = mysql_pconnect("localhost", "root");

mysql_select_db("digitalbook");

@ session_start();
$login = $_SESSION['valid_user'];

//$login = "admin";
$datos_reg = "select *from usuario_registrado where login ='".$login."'";
$res_datos_reg = mysql_query($datos_reg);
$num_results = mysql_num_rows($res_datos_reg);
if($num_results == 0)
{
echo "El usuario con login: "."$login"." NO existe";
exit;
}

$row = mysql_fetch_array($res_datos_reg);
$login = $row["login"];
$pass = $row["pass"];
$tipo = $row["tipo"];
$nombre = $row["nombre"];
$apellidos = $row["apellidos"];
$email = $row["email"];
$direccion = $row["direccion"];
$poblacion = $row["poblacion"];
$CP = $row["CP"];
$pais = $row["pais"];
$fecha_nacimiento = $row["fecha_nacimiento"];
if($fecha_nacimiento)
{
$dia=substr($fecha_nacimiento,8,2);
$mes=substr($fecha_nacimiento,5,2);
$anio=substr($fecha_nacimiento,0,4);
$fecha_nacimiento=$dia."-".$mes."-".$anio;
}

$sexo = $row["sexo"];
$telefono = $row["telefono"];
?>

<table width="200" border="0">
<tr>
<td><div align="center"><u><strong><span class="style1">CAMBIAR DATOS </span></strong></u></div></td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td>&nbsp;</td>
</tr>
</table>
<table width="218" border="0">
<tr>
<td width="61"><span class="Estilo1">*</span> Login: </td>
<td width="147"><input name="login" type="text" disabled="disabled" value= <? echo "$login" ?> ></td>
</tr>
</table>

Lo que hago es conectarme y despues copiar lo he que recuperado en el campo de texto correspondiente

Última edición por CapiCapi; 08/05/2005 a las 09:42
  #4 (permalink)  
Antiguo 08/05/2005, 09:44
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
Sobre el primero, lo que buscás es mantener el valor del area de texto? en ese caso es fácil: <textarea name="resumen" cols="75" rows="5"><?php echo $_POST['resumen']; ?></textarea>

En el prob 2 el error q veo es q ponés primero el <form ...> y después inicias la session, y ésta se tiene que iniciar antes de haber enviado nada... Probablemente por ese error pusiste la @
Código PHP:
<?
$db mysql_pconnect("localhost""root");

mysql_select_db("digitalbook");

session_start();
$login $_SESSION['valid_user'];

//$login = "admin";
$datos_reg "select * from usuario_registrado where login ='".$login."'";
$res_datos_reg mysql_query($datos_reg);
$num_results mysql_num_rows($res_datos_reg);
if(
$num_results == 0)
{
echo 
"El usuario con login: ".$login." NO existe";
exit;
}

$row mysql_fetch_array($res_datos_reg);
$login $row["login"];
$pass $row["pass"];
$tipo $row["tipo"];
$nombre $row["nombre"];
$apellidos $row["apellidos"];
$email $row["email"];
$direccion $row["direccion"];
$poblacion $row["poblacion"];
$CP $row["CP"];
$pais $row["pais"];
$fecha_nacimiento $row["fecha_nacimiento"];
if(
$fecha_nacimiento)
{
$dia=substr($fecha_nacimiento,8,2);
$mes=substr($fecha_nacimiento,5,2);
$anio=substr($fecha_nacimiento,0,4);
$fecha_nacimiento=$dia."-".$mes."-".$anio;
}

$sexo $row["sexo"];
$telefono $row["telefono"];
?>
<form name="form1" method="post" action="ResultadoModificarRegistro.php">
<table width="200" border="0">
<tr>
<td><div align="center"><u><strong><span class="style1">CAMBIAR DATOS </span></strong></u></div></td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td>&nbsp;</td>
</tr>
</table>
<table width="218" border="0">
<tr>
<td width="61"><span class="Estilo1">*</span> Login: </td>
<td width="147"><input name="login" type="text" disabled="disabled" value= <? echo "$login" ?> ></td>
</tr>
</table>

Última edición por Seppo; 08/05/2005 a las 09:51
  #5 (permalink)  
Antiguo 08/05/2005, 09:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Seppo habia editado la contestacion, ya que tambien habia comprabado que la pagina no funcionaba, lo que pasa que has sido mas rapido. Lo he editado y he puesto otra cosa, hechale un vistazo.

Respecto al problema 2 ahora te digo algo...
  #6 (permalink)  
Antiguo 08/05/2005, 09:53
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
yo tb edité :P
  #7 (permalink)  
Antiguo 08/05/2005, 09:58
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Muchisimas gracias, el problema 1 ya lo tengo solucionado, si que me funciona ya.

El problema 2 sigue igual, he puesto el form despues pero no funciona; si hago un echo de la variable si que me sale toda con espacios y todo, pero cuando la voy a colocar en un campo de texto solo me sale hasta el primer espacio.
  #8 (permalink)  
Antiguo 08/05/2005, 10:02
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
Ahora veo... es un error de HTML. Para poder poner espacios necesitas poner comillas sino te pone <input ... value=hola que tal>

entonces las otras palabras no aparecen...

<input name="login" type="text" disabled="disabled" value="<? echo "$login" ?>">
  #9 (permalink)  
Antiguo 08/05/2005, 10:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Ok, lo del problema 2, ya esta, lo que pasa que el problema 1 (parece un trabalenguas) no esta del todo porque, si por ejemplo tengo lo de añadir autor, pero con dos cosas distintas..., es decir:
Código PHP:

  <table width="608" border="0">
    <tr>
      <td><? if(isset($_POST["AnyadirAutor"]))
            {
                foreach(
$_POST["nombreAut"] as $nomAut)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>" >
    <tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="135">Nombre y Apellidos:</td>
      <td width="463"><input type="text" name="nombreAut[]" width="450"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="487" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirAutor" value="Añadir Autor">
      </div></td>
    </tr>
  </table>
  
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="521" border="0">
    <tr>
      <td width="224" height="38"><div align="center"><strong><span class="style1">CAT&Aacute;LOGO/S ASOCIADOS </span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><? if(isset($_POST["AsignarCatalogo"]))
            {
                foreach(
$_POST["nomCat"] as $nomCat)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
    <tr><td>CATÁLOGO: </td><td><? echo $nomCat; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="67">Nombre:</td>
      <td width="157"><input type="text" name="nomCat[]"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
          <input type="submit" name="AsignarCatalogo" value="Asignar Catálogo">
      </div></td>
    </tr>
  </table>
Es decir, hay un añadir autor, y añadir catalogo, cuando uno se añade y luego vas al otro, pues desaparece...
Donde deberia colocar en este caso el $_POST['resumen']???

Gracias!!
  #10 (permalink)  
Antiguo 08/05/2005, 10:33
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
A ver....... Si entiendo bien sería algo así
Código PHP:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table width="608" border="0">
    <tr>
      <td><? 
                
if (count($_POST['nomCat']) > 0) {
                    foreach(
$_POST["nomCat"] as $nomCat)
                    {
                        
//echo "<br>DNI: "."$dni";
                    
?>
                        <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
                    <?
                    
}
                }
 
            if (
count($_POST['nombreAut']) > 0) {
                foreach(
$_POST["nombreAut"] as $nomAut)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>" >
                    <tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"?></td></tr>
                <?
                
}
            }
        
?>
       </td>
      <td width="135">Nombre y Apellidos:</td>
      <td width="463"><input type="text" name="nombreAut[]" width="450"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="487" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirAutor" value="Añadir Autor">
      </div></td>
    </tr>
  </table>
  </form><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="521" border="0">
    <tr>
      <td width="224" height="38"><div align="center"><strong><span class="style1">CAT&Aacute;LOGO/S ASOCIADOS </span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><?    if (count($_POST['nombreAut']) > 0) {
                    foreach(
$_POST["nombreAut"] as $nomAut)
                    {
                        
//echo "<br>DNI: "."$dni";
                    
?>
                        <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>" >
                    <?
                    
}
                }

                if (
count($_POST['nomCat']) > 0) {
                    foreach(
$_POST["nomCat"] as $nomCat)
                    {
                        
//echo "<br>DNI: "."$dni";
                    
?>
                        <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
                        <tr><td>CATÁLOGO: </td><td><? echo $nomCat; echo "<br>"?></td></tr>
                    <?
                    
}
                }
        
?>
       </td>
      <td width="67">Nombre:</td>
      <td width="157"><input type="text" name="nomCat[]"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
          <input type="submit" name="AsignarCatalogo" value="Asignar Catálogo">
      </div></td>
    </tr>
  </table> 
  </form>
De nada
  #11 (permalink)  
Antiguo 08/05/2005, 10:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Vale, he hecho mas o menos como tu has dicho, pero el problema es que si le das por ejemplo tres veces al boton añadir de autor... en el otro sale:
CATALOGO: (y en blanco)
CATALOGO: (y en blanco)
CATALOGO: (y en blanco)

Código PHP:
<table width="608" border="0">
    <tr>
      <td><? if(count($_POST['nombreAut']) > 0)
            {
                foreach(
$_POST["nombreAut"] as $nomAut)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>">
    <tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="135">Nombre y Apellidos:</td>
      <td width="463"><input type="text" name="nombreAut[]" width="450"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="487" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirAutor" value="Añadir Autor">
      </div></td>
    </tr>
  </table>
  
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="521" border="0">
    <tr>
      <td width="224" height="38"><div align="center"><strong><span class="style1">CAT&Aacute;LOGO/S ASOCIADOS </span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><? if(count($_POST['nomCat']) > 0)
            {
                foreach(
$_POST["nomCat"] as $nomCat)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
    <tr><td>CATÁLOGO: </td><td><? echo $nomCat; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="67">Nombre:</td>
        <td width="157"><input type="text" name="nomCat[]"></td>
      </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
          <input type="submit" name="AsignarCatalogo" value="Asignar Catálogo">
      </div></td>
    </tr>
  </table>
Y otra cosa relacionada con esto, para mantener el valor de los radiobutton y checkbox es igual??

Gracias!!

PD: hay algo que no sepas en PHP.... :P
  #12 (permalink)  
Antiguo 08/05/2005, 11:23
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
El error q me decís no me pasa... no sé q será
Para mantener los checkbox y radios es parecido, te paso un ejemplo básico para q veas
Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="radio" value="hola" name="saludo" <?php if ($_POST['saludo'] == "hola") { echo "checked"; } ?>>Hola
<br /><input type="radio" value="chau" name="saludo" <?php if ($_POST['saludo'] == "chau") { echo "checked"; } ?>>chau
<br /><input type="checkbox" name="si" <?php if ($_POST['si'] == "on") { echo "checked"; } ?>>Si
<br /><input type="submit" value="Enviar">
</form> 
PD: en realidad no sé nada... El manejo de formularios es muy básico, después en este foro vas a ver gente q sepa de verdad
  #13 (permalink)  
Antiguo 08/05/2005, 12:03
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
A ver, lo que quiero decir es que cuando yo añado un AUTOR, tambien se añade un CATALOGO a la lista con nombre en blanco...
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 06:41.