Foros del Web » Programando para Internet » PHP »

A ver si alguien me echa un cable (PHP - MySQL)

Estas en el tema de A ver si alguien me echa un cable (PHP - MySQL) en el foro de PHP en Foros del Web. Hola a todos!! Os comento mi situación. Estoy desarrollando una aplicación PHP contra MySQL en la que los usuarios, mediante un formulario, podrán introducir sus ...
  #1 (permalink)  
Antiguo 03/02/2008, 04:42
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 2 meses
Puntos: 0
A ver si alguien me echa un cable (PHP - MySQL)

Hola a todos!!

Os comento mi situación. Estoy desarrollando una aplicación PHP contra MySQL en la que los usuarios, mediante un formulario, podrán introducir sus aficiones rellenando los siguientes campos:

"afición", "descripción", "desde cuando la practico" y "cuanto tiempo dedico a la semana".

Estos campos se rellenarían para cada una de las aficiones de los usuarios.

Mi duda es, ¿cómo lo hago para no limitar el número de aficiones que pueda introducir cada usuario?, me explico. Me parece algo cutre preparar el formulario para que se puedan introducir por ejemplo 5 aficiones, lo que me gustaría es que los usuarios decidieran si introducir 3 o 8. Pero no se me ocurre como hacerlo ni en el formulario, ni en la base de datos, porque de alguna forma habrá que adaptarla para que pueda guardar un número indeterminado de aficiones por usuario.

No se si me he explicado bien, pero si alguien pudiera darme una solución factible se lo agradecería mucho.

Saludos a todos y gracias de antemano.
  #2 (permalink)  
Antiguo 03/02/2008, 05:36
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: A ver si alguien me echa un cable (PHP - MySQL)

tendras que añadir dinamicamente los campos mediante Javascript.

Una pista, a los campos ponles nombres con []
ejemplo:
Código HTML:
<input type="text" name="aficion[]" ...
asi los recogeras mediante un array ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 03/02/2008, 06:34
 
Fecha de Ingreso: agosto-2005
Mensajes: 18
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: A ver si alguien me echa un cable (PHP - MySQL)

Con este codigo, hago eso que pides y algo mas.
Ahora es cuestion de que pruebes y hagas los cambios pertinentes.
Tambien hay algunos fallos, ya que estaba preparado para otra cosa, ademas asi me aseguro que estudias el codigo
Código HTML:
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Pagina nueva 1</title>
  </head>
  <body>
  <style>
   .even{background-color: Lavender}
  </style>

  <script language="javascript" type="text/javascript">
  function cambia_estado( fila , campo)
  {
    var estado=fila.checked;
    estado= (estado) ? 'on' : '';
    var td = fila.parentNode;
    for(a=0;a<td.childNodes.length;a++)
    {          
      var objeto = td.childNodes.item(a);
      if(objeto.name==campo)
      {
        objeto.value=estado;
      }
    }        
  }
    
  function mueve( el, x )
  {
    while ( el.parentNode && 'tr' != el.nodeName.toLowerCase() )
    {
        el = el.parentNode;
      }
    var inicial=el.rowIndex;
    var destino=inicial + x;
    var t = el.parentNode;
    var i = el.rowIndex + x;
    if (i==-1 || i== t.rows.length) { return; }
    var filadestino=document.getElementById(t.id);
    if (filadestino.rows[destino].id != 'fila') { return; }
    var destino=el
    t.removeChild(el);
    var nRow = t.insertRow( i );
    t.replaceChild(el, nRow);
  }
  
  function mas( el )
  {
    while ( el.parentNode && 'tr' != el.nodeName.toLowerCase() )
    {
        el = el.parentNode;
    }
    var t = el.parentNode;
    var i = el.rowIndex ;
    if (i== t.rows.length)
    {
      i = t.rows.length;
    }
    else
    {
      i = el.rowIndex+1;
    }
    var copia=el.cloneNode(true);
    var inputs=copia.getElementsByTagName('input');
    var selects=copia.getElementsByTagName('select');
    for(a=0;a<inputs.length;a++)
    {
      inputs[a].value='';
    }
    for(a=0;a<selects.length;a++)
    {
      var opciones=selects[a].options;
      for (b=0;b<opciones.length;b++)
      {
        opciones[b].selected=false;
      }
    }
    el.parentNode.appendChild(copia);       
  }
    
  function borra( el )
  {
    while ( el.parentNode && 'tr' != el.nodeName.toLowerCase() )
    {
         el =el.parentNode;
    }
    var t = el.parentNode;
    var i = t.rows.length;
    var hay = 0;
    for(a=0;a<i;a++)
    {
      if (t.rows.item(a).id=='fila')
      {
        hay++;
      }
    }    
    if(hay==1) { return false; }
    t.removeChild(el);
  }  
  
  function cambia_estado( fila , campo)
  {
    var estado=fila.checked;
    estado= (estado) ? 'on' : '';
    var td = fila.parentNode;
    for(a=0;a<td.childNodes.length;a++)
    {          
      var objeto = td.childNodes.item(a);
      if(objeto.name==campo)
      {
        objeto.value=estado;
      }
    }        
  }    
  </script>

  <table border='1px'>
    <tr id='fila' onmouseover="this.className = 'even'" onmouseout="this.className = ''">
      <td style='text-align:center'>
        <select class='tbox' name='nombre_campo[]' style='width:210px'></select>
      </td>    
      <td style='text-align:center'>
        <input style='padding-left:2px;' class='tbox' name='texto_campo[]' value='' size='41' type='text'>
      </td>
      <td style='text-align:center'>
        <input style='text-align:center' class='tbox' name='ancho_campo[]' value=''  size='6' type='text'>
      </td>
      <td >
        <input id='buscar_campo' name='buscar_campo[]' value='' type='hidden' size='1'>
        <input class='tbox' ".$checked." type='checkbox' onclick="cambia_estado(this,'buscar_campo[]');">
      </td>
      <td width='18px'>
        <center><img src='images/up.png' title='Subir una posicion' onclick='mueve(this, -1);' name='arriba'></center>
      </td>
      <td width='18px'>
        <center><img src='images/down.png' title='Bajar una posicion' onclick='mueve(this, 1);' name='abajo'></center>
      </td>      
      <td ><center><img src='images/delete_16.png' title='Eliminar Campo' onclick='borra(this);' style='border:none'></center></td>
      <td ><center><img src='images/add_16.png' title='Añadir otro Campo' onclick='mas(this);' style='border:none'></center></td>
    </tr>  
  </table>
  </body>
</html> 
Suerte
  #4 (permalink)  
Antiguo 03/02/2008, 15:25
 
Fecha de Ingreso: febrero-2008
Mensajes: 31
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: A ver si alguien me echa un cable (PHP - MySQL)

Muchas gracias a los dos, lo miraré con detenimiento y os comento que tal.

Saludos.
  #5 (permalink)  
Antiguo 15/02/2008, 09:00
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Re: A ver si alguien me echa un cable (PHP - MySQL)

tengo una consulta sobre el codigo para agregarle otras cosas....

el codigo javascript me quedo asi....

Código HTML:
<script language="javascript" type="text/javascript">
  function cambia_estado( fila , campo)
  {
    var estado=fila.checked;
    estado= (estado) ? 'on' : '';
    var td = fila.parentNode;
    for(a=0;a<td.childNodes.length;a++)
    {          
      var objeto = td.childNodes.item(a);
      if(objeto.name==campo)
      {
        objeto.value=estado;
      }
    }        
  }
  
  function mas( el )
  {
    while ( el.parentNode && 'tr' != el.nodeName.toLowerCase() )
    {
        el = el.parentNode;
    }
    var t = el.parentNode;
    var i = el.rowIndex ;
    if (i== t.rows.length)
    {
      i = t.rows.length;
    }
    else
    {
      i = el.rowIndex+1;
    }
    var copia=el.cloneNode(true);
    var inputs=copia.getElementsByTagName('input');
    var selects=copia.getElementsByTagName('select');
    for(a=0;a<inputs.length;a++)
    {
      inputs[a].value='';
    }
    for(a=0;a<selects.length;a++)
    {
      var opciones=selects[a].options;
      for (b=0;b<opciones.length;b++)
      {
        opciones[b].selected=false;
      }
    }
    el.parentNode.appendChild(copia);       
  }
    
  function borra( el )
  {
    while ( el.parentNode && 'tr' != el.nodeName.toLowerCase() )
    {
         el =el.parentNode;
    }
    var t = el.parentNode;
    var i = t.rows.length;
    var hay = 0;
    for(a=0;a<i;a++)
    {
      if (t.rows.item(a).id=='fila')
      {
        hay++;
      }
    }    
    if(hay==1) { return false; }
    t.removeChild(el);
  }  
  
  function cambia_estado( fila , campo)
  {
    var estado=fila.checked;
    estado= (estado) ? 'on' : '';
    var td = fila.parentNode;
    for(a=0;a<td.childNodes.length;a++)
    {          
      var objeto = td.childNodes.item(a);
      if(objeto.name==campo)
      {
        objeto.value=estado;
      }
    }        
  }    
  </script> 
Pero quiero hacer lo siguiente... quiero conectarme a una base de datos trear los datos de una tabla y ponerlos en un imput y digamos que me toma la primer fila de la tabla... ahora al agregar otra fila que me consulte en la base de dato sy me cargue la fila 2 y despues la fila tres y asi sucesivamente es para modificar los campos de una tabla.. o simplemente para agregar...

el codigo php que use es asi...

Código PHP:
<?php
$Conexion
mysql_connect ('localhost''examen''examen');
        
$database 'examen';
        
mysql_select_db($database$Conexion);
        
$query "SELECT id,pregunta,respuesta FROM preguntas LIMIT 0,5";
        
$res mysql_query($query);
        
$array mysql_fetch_array($res);
        
        do {
$datos[] =$array;
        } while(
$array mysql_fetch_array($res)) ;
        
        
?>
con la respectiva tabla para que funcione...

Código HTML:
<form action="envio_preguntas.php" method="post" name="form"><table width="900" border='1' bordercolor="F4F4F4">
    <tr id='fila2' onmouseover="this.className = 'even'" onmouseout="this.className = ''">
      <td width="703" height="29" style='text-align:center'><?php echo $datos[0]['id']; ?>
          <input name='<?php echo $datos[0]['id']; ?>' type='text' class='tbox ' style='padding-left:2px;' value='<?php echo $datos[0]['pregunta']; ?>' size='100' /> </td>
      <td width="102" style='text-align:center'><p class="style12">
          <label> <?php echo $datos[0]['respuesta']; ?>
          <input type="radio" name="<?php echo $datos[0]['id']; ?>" value="Si" id="respuestas[]_0" />
            Si</label>
          <label>
          <input type="radio" name="<?php echo $datos[0]['id']; ?>" value="No" id="respuestas[]_1" />
            No</label>
      </p></td>
      <td width="33" ><center>
        <img src='../../../../imagenes/delete.jpg' alt="BORRAR FILA" style='border:none' title='Eliminar Campo' onclick='borra(this);' />
      </center></td>
      <td width="34" ><center>
        <img src='../../../../imagenes/sumar.jpg' alt="AGREGAR FILA" style='border:none' title='Añadir otro Campo' onclick='mas(this);' />
      </center></td>
    </tr>  
  </table>
      <?php $datos = urlencode(serialize($datos)); ?>
                <input name="datos" type="hidden" value="<?php echo $datos ?>" />
                </form> 
el tema es que en los imput de tipo radio, no me funcionan correctamente ya que al seleccionar uno en vez de cambiarse por fila, se puede elejir entre todos los agregados uno solo independientemente de la fila en que lo selecciones....

Como puedo solucionar esto...

gracias
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 01:59.