1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Solucionado buscador php mysql usando between

Tema en 'Temas Solucionados' comenzado por stand_soul, 10 de Julio de 2015.

  1. stand_soul

    stand_soul Nuevo Miembro

    Se incorporó:
    9 de Julio de 2015
    Mensajes:
    5
    Me gusta recibidos:
    1
    Puntos de trofeos:
    3
    Género:
    Hombre
    hola, soy nuevo en esto de los foros y necesito su ayuda:
    yo tengo un pequeño proyecto donde tengo que hacer un, digamos un informe semanal o despliegue semanal de alumnos que hallan terminado cierta cantidad de actividades, en la tabla estan los campos de:
    numero de control
    nombre
    apellido paterno
    apellido materno
    actividad
    numero_regitro
    fecha_registro

    estos dos ultimos los utilizo para que, en el buscador que tengo al hacer un select a la base de datos me despliegue en una tabla los que en el lapso de una semana muestre solo los que hayan completado 5 actividades, por eso el numero de registro deben ser del 1 al 5, se duplican 5 veces cada alumno, ya que tengo otro buscador que con poner el numero de control del alumno despliega cuantos registros lleva.
    bueno, ahora la parte que no logro entender es como hacer eso del informe semanal, el select que hago para esto es
    select * from alumno where numero_registro = 5 and fecha_registro BETWEEN "%'$busca'%" and "%'$busca2'%""); pero no me sale en el php del buscador

    los pongo el codigo aqui para mejor vista

    <script language="JavaScript">

    </script>
    <style type="text/css">
    body p {
    font-family: Verdana, Geneva, sans-serif;
    }
    </style>
    <form name="form1" method="get" action="reportesemanal.php" id="cdr1" >
    <h3>Buscar Alumno </h3>
    <p>
    <input name="busca" type="text" id="busqueda">
    <input type="submit" name="Submit" value="buscar" />
    </p>
    </p>
    </form>

    <form name="form1" method="get" action="reportesemanal.php" id="cdr1" >
    <h3>Buscar Alumno </h3>
    <p>
    <input name="busca2" type="text" id="busqueda">
    <input type="submit" name="Submit" value="buscar" />
    </p>
    </p>
    </form>
    <p>
    <style type="text/css">
    input{outline:none;border:0px;}
    #busqueda{background:#585858;color:#fff;}
    #cdr1{padding:5px;background:grey;width:220px;border-radius:10px 0px 0px 10px;}
    #tab{background:#CCC;;border-radius:10px 10px 10px 10px;}
    </style>

    <?php
    $busca="";
    $busca2="";
    $busca=$_GET['busca'];
    $busca2=$_GET['busca2'];
    mysql_connect("localhost","sistema","sistemaescolares");
    mysql_select_db("sisteman");
    if($busca!=""){
    $busqueda=mysql_query("SELECT * FROM alumno WHERE numero_registro= 5 and fecha_registro '%".$busca."%' and '%".$busca2."%'");
    ?>
    <table width="1166" border="1" id="tab">
    <tr>
    <td width="19">NO. CONTROL </td>
    <td width="19">NOMBRE </td>
    <td width="61">APELLIDO PATERNO</td>
    <td width="157">APELLIDO MATERNO</td>
    <td width="221">CARRERA</td>
    <td width="176">ACTIVIDAD</td>
    <td width="73">PERIODO</td>
    <td width="118">CREDITOS</td>
    <td width="67">FECHA DE REGISTRO</td>
    <td width="107">NUMERO DE REGISTRO</td>
    </tr>
    <?php

    while($f=mysql_fetch_array($busqueda)){
    echo '<tr>';
    echo '<td width="19">'.$f['no_control'].'</td>';
    echo '<td width="61">'.$f['nombre'].'</td>';
    echo '<td width="157">'.$f['apellido_pat'].'</td>';
    echo '<td width="221">'.$f['apellido_mat'].'</td>';
    echo '<td width="176">'.$f['carrera'].'</td>';
    echo '<td width="73">'.$f['actividad'].'</td>';
    echo '<td width="67">'.$f['fecha_registro'].'</td>';
    echo '<td width="107">'.$f['numero_registro'].'</td>';
    echo '</tr>';
    }

    }
    ?>
    </table>

    lo pongo pero no sale nada
    aparte en el campo de fecha_registro no lo tengo como date sino como varchar, que debo hacer para arreglar ese problema y que me pueda desplegar los alumnos que lleven el numero de registro 5 con esa condicion

    un saludo y espero su respuesta.
     
  2. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    769
    Me gusta recibidos:
    320
    Puntos de trofeos:
    63
    Género:
    Hombre
    Hola prueba hacer la busqueda primero con la consola de mysql para probar si tu codigo está bien pero igual creo saber cual es tu error:
    en el codigo que has pasado tienes los signos de porcentaje (%) quitaselo y buscalo otra vez.
    ("select * from alumno where numero_registro = 5 and fecha_registro BETWEEN "'.$busca'" and "'.$busca2.'" ")
     
    A stand_soul le gusta esto.
  3. stand_soul

    stand_soul Nuevo Miembro

    Se incorporó:
    9 de Julio de 2015
    Mensajes:
    5
    Me gusta recibidos:
    1
    Puntos de trofeos:
    3
    Género:
    Hombre
    muchas gracias gammafpintentare hacer la prueba en consola, otra duda que tenia era que si debo quitarle el segundo form de buscar? porue como veras en la parte del form hay dos y no se si este bien asi, lo he probado e igual no sale, pero aun asi gracias por tu respuesta
     
  4. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    769
    Me gusta recibidos:
    320
    Puntos de trofeos:
    63
    Género:
    Hombre
    Si pudieses subir la base de datos estaria bien.
     
  5. stand_soul

    stand_soul Nuevo Miembro

    Se incorporó:
    9 de Julio de 2015
    Mensajes:
    5
    Me gusta recibidos:
    1
    Puntos de trofeos:
    3
    Género:
    Hombre

    como soy nuevo publicando en esto no pude adjuntar la base de datos pero puedo dejarte el codigo sql uso phpmyadmin

    CREATE DATABASE sistema

    luego solo esta tabla

    CREATE TABLE alumno
    (
    id_alumno INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,

    no_control int (8) NOT NULL,

    nombre varchar(35) NOT NULL,

    apellido_pat varchar(35) NOT NULL,

    apellido_mat varchar(35) NOT NULL,

    carrera varchar(50) NOT NULL,

    actividad varchar(50) NOT NULL,

    periodo varchar(12) NOT NULL,

    fecha_registro varchar(20) NOT NULL,

    numero_registro int(1) NOT NULL,

    CONSTRAINT PK_alumno_id_alumno PRIMARY KEY(id_alumno)
    )

    (no se si para usar el buscador tiene que quedarse como date o como varchar, ya que buscando un solo valor osea con un LIKE si funciona pero cuando quiero usar el select con BETWEEN que puse en el anterior mensaje no lo hace)
     
  6. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    769
    Me gusta recibidos:
    320
    Puntos de trofeos:
    63
    Género:
    Hombre
    bueno estuve trasteando un rato y lo que querias creo que lo he conseguido, tu querias que si alguien cumple 5 actividades y tenga un registro superior a una semana (de cinco días) te lo muestre en una tabla. Para hacerlo te recomiendo que cambies la fecha_registro por un date ya que así puedes manejar los numeros de fecha con funciones de mysql y así con funciones puedes recuperar cosas y me ha salido con esto:

    luego te pondré unas cuantas funciones para manejar fecha, por el momento mirate esto, el cinco del final puedes cambiarselo por los dias de la semana. Saludos

    PHP:
    select * from alumno where actividad = 5 and datediff(now(), fecha_registro) > 5;
    Y diras: bueno esto que me has pasado es para saber si el usuario ya tiene una semana de antiguedad y que tal si quiero solo hacer un reporte semana donde cada domingo me muestre los usuarios que han superado las cinco actividades, pues acá lo tienes:
    PHP:
    select * from alumno where actividad = 5 and weekday(fecha_registro) = 6;
    donde 6 es el dia de la semana empiesaria el lunes = 0 martes = 1 .... domingo = 6, cambia el seis por el numero que quieras que sea el reporte.

    Y acá tienes lo que he modificado en el mysql.

    PHP:

    CREATE TABLE IF NOT EXISTS 'alumno' (
      'id_alumno' int(5) unsigned NOT NULL,
      'no_control' int(8) NOT NULL,
      'nombre' varchar(35) NOT NULL,
      'apellido_pat' varchar(35) NOT NULL,
      'apellido_mat' varchar(35) NOT NULL,
      'carrera' varchar(50) NOT NULL,
      'actividad' varchar(50) NOT NULL,
      'periodo' varchar(12) NOT NULL,
      'fecha_registro' date NOT NULL,
      'numero_registro' int(1) NOT NULL
    )
     
     
    A stand_soul y Maddenamy les gusta esto.
  7. stand_soul

    stand_soul Nuevo Miembro

    Se incorporó:
    9 de Julio de 2015
    Mensajes:
    5
    Me gusta recibidos:
    1
    Puntos de trofeos:
    3
    Género:
    Hombre
    gracias por el aporte, intentare aplicarlo, solo un problema mas que me dieron
    PHP:
    <body>
        <div id="container">
            <h1>Agregar nuevo alumno</h1>
            <form id="form-insertar" action="" class="form" method="POST">
                <div class="form-container">
                    <label for="no_control">No. Control</label>
    <input type="text" id="no_control" name="no_control" placeholder="numero de control" class="form-control">
    </div>
    <div class="form-container">
    <label for="nombre">Nombre</label>
    <input type="text" id="nombre" name="nombre" placeholder="nombre del alumno" class="form-control">
        </div>
        <div class="form-container">
    <label for="apellido_pat">Apellido paterno</label>
    <input type="text" id="apellido_pat" name="apellido_pat" placeholder="apellido paterno" class="form-control">
        </div>
        <div class="form-container">
    <label for="apellido_mat">Apellido materno</label>
    <input type="text" id="apellido_mat" name="apellido_mat" placeholder="pellido materno" class="form-control">
        </div>
        <div class="form-container">
            <label for="carrera">Carrera:<select name="carrera" input type="text" id="carrera" class="form-control"></label>

    <div class="form-container">
    <label for="actividad">Actividad</label>
    <input type="text" id="actividad" name="actividad" placeholder="actividad" class="form-control">
        </div>
        <div class="form-container">
    <label for="periodo">Periodo:<select name="periodo" input type="text" id="periodo" class="form-control"></label>

                  if ($link)
                    {
    echo "<option value= ' ENE-JUN 2015 '>ENE-JUN 2015</option>";
                        echo "<option value= ' AGO-DIC 2015 '>AGO-DIC 2015</option>";
                       
                        echo "<option value= '  '> </option>";
                       
                        echo "<option value= ' ENE-JUN 2016 '>ENE-JUN 2016</option>";
                        echo "<option value= ' AGO-DIC 2016 '>AGO-DIC 2016</option>";
                       
                        echo "<option value= '  '> </option>";
                       
                        echo "<option value= ' ENE-JUN 2017 '>ENE-JUN 2017</option>";
                        echo "<option value= ' AGO-DIC 2017 '>AGO-DIC 2017</option>";
                       
                        echo "<option value= '  '> </option>";
                       
                        echo "<option value= ' ENE-JUN 2018 '>ENE-JUN 2018</option>";
                        echo "<option value= ' AGO-DIC 2018 '>AGO-DIC 2018</option>";
                       
                        echo "<option value= '  '> </option>";
                       
                        echo "<option value= ' ENE-JUN 2019 '>ENE-JUN 2019</option>";
                        echo "<option value= ' AGO-DIC 2019 '>AGO-DIC 2019</option>";
                       
                        echo "<option value= '  '> </option>";
                       
                        echo "<option value= ' ENE-JUN 2020 '>ENE-JUN 2020</option>";
                        echo "<option value= ' AGO-DIC 2020 '>AGO-DIC 2020</option>";
    }
                      <option value=""> </option>
          </select><br/>  
                </div>
                <div class="form-container">
                    <label for="creditos">Creditos:<select name="creditos" input type="text" id="creditos" class="form-control"></label>

                    if ($link)
                    {
                        echo "<option value= ' 1 '>1</option>";
                        echo "<option value= ' 2 '>2</option>";
                        echo "<option value= ' 3 '>3</option>";
                        echo "<option value= ' 4 '>4</option>";
                        echo "<option value= ' 5 '>5</option>";
                    }
    <option value=""> </option>
    </select><br/>
    </div>
    <div class="form-container">
    <label for="fecha_registro">Fecha de registro</label>
    <input type="date" id="fecha_registro" name="fecha_registro" placeholder="fecha en que se inserto en registro" class="form-control">
    </div>
    <div class="form-container">
    <label for="numero_registro">Numero de registro</label>
    <input type="text" id="numero_registro" name="numero_registro" placeholder="numero de registro" class="form-control">
    </div>
    <div class="form-container">
    <input type="submit" id="insertar_alumno" value="Insertar" class="form-control btn btn-primary">
    </div>
    <div class="form-container">
    <input type="reset" value="limpiar" class="form-control btn btn-primary">
    </div>
    </form>
    me pasaron este formulario para insertar esos datos, cambie la fecha de registro por un date, lo malo es que en la base de datos me salen 0000-00-00 me salen puros ceros y si lo cambio a text si me sale pero lsi quiero hacer el select que me dices, que lo cambie a date me saldria ese problema, como lo soluciono?, jeje una disculpa si si pido mucha ayuda en esto, no soy muy bueno en el campo, apenas me defiendo jeje. Saludos
     
  8. stand_soul

    stand_soul Nuevo Miembro

    Se incorporó:
    9 de Julio de 2015
    Mensajes:
    5
    Me gusta recibidos:
    1
    Puntos de trofeos:
    3
    Género:
    Hombre


    hola de nuevo, bueno despues de modificar unas cuantas cosas y de utilizar los select que me dejaste, me sirvieron de mucho, en especial
    select * from alumno where actividad = 5 and datediff(now(), fecha_registro) > 5; este fue el select que me dio la solucion y en cuanto al formulario ya lo corregi para que no me salgan ceros, gracias por la ayuda, es la primera vez que pedia ayuda en algun foro y fue la mejor idea, de nuevo gracias por la ayuda al resolver mi duda. Saludos
     
    A gammafp le gusta esto.
  9. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    769
    Me gusta recibidos:
    320
    Puntos de trofeos:
    63
    Género:
    Hombre
    Bueno, siento no poderte haber dicho que cuando cambias a date tienes que respetar el formato de fecha, se me habrá pasado ya que tambien paso por otros temas del foro, lo siento. Hasta luego.
     

Comparte esta página