Soporte » WordPress Avanzado » Como cargo un combobox sin plugin

  • ahias13

    (@ahias13)


    lo que sucede es que necesito cargar un combobox con la información de una tabla de la Base De Datos, la cuestión es que lo he intentado de varias formas y de esta es la que mas me he acercado, el código esta incompleto ya que esta en construcción

    
    <?php
    get_header();
            if (!empty($_POST)) 
    {
            global $wpdb;
                $table = 'formulario';
                $data = array(
                    'nombre'  => sanitize_text_field( $_POST['nombre']),
                    'apellido' => sanitize_text_field( $_POST['apellido']),
                    'telefono'  => sanitize_text_field( $_POST['telefono']),
                    'email' => sanitize_text_field( $_POST['email']),
                    'consulta' =>sanitize_text_field( $_POST['consulta'])
                );
                $format = array(
                    '%s',
                    '%s',
                    '%d',
                    '%s',
                    '%s'
                );
                $success=$wpdb->insert( $table, $data, $format );
                if($success)
        {
                echo 
                '
            <div id="primary" class="wrap">
             <div id="content" role="main">
                 <div id="center">
                  <h2>Se guardo el Curriculum</h2>
                 </div>      
             </div>
            </div>
                ' 
                ; 
        }
    }
    else   
    {
    ?>
    <?php
    // aqui es donde intento hacer la captura de los datos que están la Base de Datos
    if ($wpdb->connect_error) //verificamos si hubo un error al conectar, recuerden que pusimos el @ para evitarlo
    {
        die('Error de conexión: ' . $wpdb->connect_error); //si hay un error termina la aplicación y mostramos el error
    }
     
    $sql="SELECT * from wp_nacionalidad";
    $result = $wpdb->query($sql); //usamos la conexion para dar un resultado a la variable
     
    if ($result->num_rows > 0) //si la variable tiene al menos 1 fila entonces seguimos con el codigo
    {
        $combobit="";
        while ($row = $result->fetch_array(MYSQLI_ASSOC)) 
        {
            $combobit .=" <option value='".$row['id_nacionalidad']."'>".$row['gentilicio_nac']."</option>"; //concatenamos el los options para luego ser insertado en el HTML
        }
    }
    else
    {
        echo "No hubo resultados";
    }
    
    ?>
           <div class="wrap">
                   <p>
                    <center>
        <img src="/../curriculum/wp-content/themes/twentyseventeen/CALESA.png" width="135" height="135"alt="CALESA" />
              </center>
              </p>
           <p>
        <img src="/../curriculum/wp-content/themes/twentyseventeen/INGENIO.png" width="100" height="100"alt="INGENIO OFELINA" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/CEGRACO.jpg" width="100" height="100"alt="CEGRACO" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/SECOSA.png" width="100" height="100"alt="SECOSA" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/CAMACO.png" width="100" height="100"alt="CAMACO" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/GANACO.png" width="100" height="100"alt="GANACO" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/CASA.png" width="100" height="100"alt="CASA" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/LARRO.png" width="100" height="100"alt="LARRO" />
        <img src="/../curriculum/wp-content/themes/twentyseventeen/ALTRIX.png" width="100" height="100"alt="ALTRIX" />
          </p>
         </div>
            <div id="primary" class="wrap">
    
        <div id="content" role="main">
            <div id="center">
                <p>
    Grupo CALESA mantiene una política que promueve el crecimiento de sus 
    colaboradores dentro de la compañía, brindándoles oportunidades de 
    superación y capacitación constante.</p>
    <p>Complete el siguiente formulario o envíenos su hoja de vida a reclutamiento@grupocalesa.com</p>
    
    <h2>Fromulario De Registro De Curriculum</h2>
            <form method="post" enctype="multipart/form-data">
    <div class="row">
        <div class="col-md-6">
     <label>Primer Nombre</label>
     <input type="text" name="nombre"  placeholder="Primer Nombre" required>
    <br><br>
     <label>Segundo Nombre</label>
     <input type="text" name="nombre"  placeholder="Primer Nombre" required>
    <br><br>
     <label>Ingrese Apellidos</label>
     <input type="text" name="apellido"  placeholder="Apellido Paterno" required>
     <input type="text" name="apellido"  placeholder="Apellido Materno" required>
     <input type="text" name="apellido"  placeholder="Apellido De Casada" >
    <br><br>
    <label>Telefono</label>
     <input type="text" name="telefono"  placeholder="Telefono" required>
    <br><br>
    <label>No. SS </label>
     <input type="text" name="segurosocial"  placeholder="No. Seguro Social" required>
    <br><br>
    <label>Sexo</label>
    <input type="text" name="sexo"  placeholder="Sexo" required>
    <br><br>
    </div>
        <div class="col-md-6">
     <label>E-Mail</label>
     <input type="text" name="email"  placeholder="E-Mail" required>
    <br><br>
     <label>Fecha De Nacimiento</label>
     <input type="date" name="cumpleanios" step="1" value="<?php echo date("d-m-Y");?>">
    <br><br>
    <label>Estado Civil</label>
     <input type="text" name="estadocivil"  placeholder="Estado Civil" required>
    <br><br>
    <label>Cant. De Dependientes</label>
     <input type="text" name="dependientes"  placeholder="Dependientes" required>
    <br><br>
    <label>Nacionalidad</label>
    <!--  Aqui es donde trato de mostrar la información en el combobox -->
        <select name="estado">
           <?php echo $combobit; ?>
       </select>
    <br><br>
    </div>
    </div>
    <input type="submit" value="Enviar">            
            </form>
    
            </div>        
        </div>
    </div>
           <?php }  ?>
           <?php get_footer(); ?>

    como se pudieron dar cuenta estoy tratando de hacer el formulario sin la ayuda de ningun plugin. De antemano gracias por la ayuda

Viendo 1 respuesta (de 1 total)
  • Hola @ahias13 es complicado sin la estructura de la base de datos. En primer lugar para escribir un buen código deberías seguir los estándares de WordPress https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/

    No deberías poner los prefijos de las tablas directamente, sino obtenerlos del propio WordPress ($wpdb->prefix) y utilizar nonces https://codex.wordpress.org/WordPress_Nonces

    Para el desplegable, suponiendo que la tabla wp_nacionalidad tenga las columnas id_nacionalidad y gentilicio_nac deberías hacer algo como:

    
    $combobit  = ''; // Si no inicializamos la variable tendremos un NOTICE en la primera concatenación.
    $res= $wpdb->get_results( 
    	"SELECT id_nacionalidad, gentilicio_nac
    	FROM {$wpdb->prefix}nacionalidad
    	ORDER BY gentilicio_nac"
    );
    
    foreach ( $res as $row ) {
    	$combobit .= $fivesdraft->post_title;
            $combobit .=" <option value='" . $row->id_nacionalidad . "'>" . $row->gentilicio_nac . "</option>"; // Concatenamos el los options para luego ser insertado en el HTML.
    }
    

    Mira las opciones de la Base de datos en https://codex.wordpress.org/Class_Reference/wpdb

Viendo 1 respuesta (de 1 total)
  • Debes estar registrado para responder a este tema.