21
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re:HTML PHP MySQl Buscador con combobox que despliegue información de base datos
« en: 25 de Septiembre 2016, 18:27 »
Buen código dranxz88.
Importante para recién llegados: en este hilo están las normas, sugerencias y políticas para escribir en los foros: https://aprenderaprogramar.com/foros/index.php?topic=1460.0 ¡Léelo antes de escribir!
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
$opciones .= "<option value='".$NCategoria['NombreCategorias']."'>".$NCategoria['NombreCategorias']."</option>";
$opcionesSubcategoria .= <option value='".$NCategoria['NombreSubCategorias']."'>".$NCategoria['NombreSubCategorias']."</option>";
<label for="sltcategoria"></label>
<select name="sltcategoria" id="sltcategoria">
<?= $opciones ?>
</select>
<label for="sltSubcategoria"></label>
<select name="sltSubcategoria" id="sltSubcategoria">
<?= $opcionesSubcategoria ?>
</select>
<label for="sltcategoria"></label>
<select name="sltcategoria" id="sltcategoria">
<?PHP while($NCategoria = mysql_fetch_array($tabla_NCategorias))
{echo "<option value='".$NCategoria['NombreCategorias']."'>".$NCategoria['NombreCategorias']."</option>";}
//obtener los datos
//quiero obtener el id de la categoria seleccionada
$tabla_IDCategorias = mysql_query("SELECT ID_Categorias FROM tbl_Categorias WHERE NombreCategorias = '$NCategoria[NombreCategorias]' ORDER BY ID_Categorias ASC",$Conexion);
//quiero obtener los Nombres de las subcategorias segun el id ($tabla_IDCategorias) que obtuve en categoria
$tabla_NSubCategorias = mysql_query("SELECT NombreSubCategorias FROM tbl_SubCategorias WHERE ID_Categorias = '$tabla_IDCategorias' ORDER BY ID_SubCategorias ASC",$Conexion);
?>
</select>
<?PHP
$opciones ='';
while($NCategoria = mysql_fetch_array($tabla_NCategorias))
{
$opciones .= "<option value='".$NCategoria['NombreCategorias']."'>".$NCategoria['NombreCategorias']."</option>";
}
//obtener los datos
//quiero obtener el id de la categoria seleccionada
$tabla_IDCategorias = mysql_query("SELECT ID_Categorias FROM tbl_Categorias WHERE NombreCategorias = '$NCategoria[NombreCategorias]' ORDER BY ID_Categorias ASC",$Conexion);
//quiero obtener los Nombres de las subcategorias segun el id ($tabla_IDCategorias) que obtuve en categoria
$tabla_NSubCategorias = mysql_query("SELECT NombreSubCategorias FROM tbl_SubCategorias WHERE ID_Categorias = '$tabla_IDCategorias' ORDER BY ID_SubCategorias ASC",$Conexion);
?>
include 'rutaDelHtml.htm';
HTML<label for="sltcategoria"></label>
<select name="sltcategoria" id="sltcategoria">
<?= $opciones ?>
</select>
SELECT ID_Categorias ,ID_SubCategorias, NombreSubCategorias
FROM tbl_Categorias
INNER JOIN tbl_SubCategorias ON tbl_Categorias.ID_Categorias = tbl_SubCategorias.ID_Categorias
WHERE tbl_Categorias.NombreCategorias = '$NCategoria[NombreCategorias]
ORDER BY ID_Categorias ASC, ID_SubCategorias ASC
<div id="agregador" style=" width: auto; max-width:800px; ma
<div style="margin-bottom: 15px; background-color: #
<form id="agregar_encuesta_form" role="form" style="t
<div class="form-group">
<div class="fl titulo" style="margin-right: 20px;">
<label>Titulo:</label>
<input name="titulo" type="text" val
</div>
<br/>
<div style="margin-right: 20px;">
<label id="desc">Descripcion:</label>
<textarea id ="desc" name="descripci
</div><br/>
<?php
// esto es simplemente un formulario, pero aqui hacem
if(isset($_POST ['opc' ])){
$num = $_POST ['opciones' ]; // guardamos el v
for($i =1 ;$i <= $num ; $i++){ // hacemos el bucle
?>
<div class="cf">
<label>Opcion <?php echo $i; ?> : </label>
<input name="opc <?php echo $i ; ?> " type="tex
</div>
<?php } // aqui termina el bucle ?>
<div class="cf">
<br/><input name="enviar" type="submit" class="btn b
<input name="opciones" type="hidden" value=" <?php ech
<input name="cont" type="hidden" value=" <?php echo co
</div>
<?php }else{ // sino se ha definido nro de opciones:
<div class="fl">
<label>Nยบ de opciones:</label>
<input name="opciones" type="number" min="2" max ="9
</div>
<br/>
<div class="cf">
<input name="opc" type="submit" class="btn btn-succe
</div>
<?php } // Sino se han definido opciones, que en vez d
</div>
</form>
</div>
include '../net/agregar.php';
<script src="script_encuesta_opciones.js" type="text/javascript"></script>
<?php
$cont = 0;
$titulo = ''; if(isset($_POST['titulo'])){ $titulo = trim($_POST['titulo']); } // definimos $titulo para evitar errores, y guardamos su valor por el ingresado.
$desc = ''; if(isset($_POST['descripcion'])){ $desc = trim($_POST['descripcion']); } // definimos $desc para evitar errores, y guardamos su valor por el ingresado.
if(isset($_POST['enviar'])){
if($titulo != ""){
$num = $_POST['opciones']; // este valor lo vamos a obtener de lo que el usuario ingrese como numero de opciones al crear la encuesta
$fecha = date("Y-m-d H:i:s");
$idComunidadEncuesta = $_SESSION['id_comunidad'];
$sql= "INSERT INTO `encuestas` (`id` ,`titulo`, `descripcion`,`fecha`, `id_comunidad`, `activa`) VALUES (NULL , '$titulo', '$desc', '$fecha', '$idComunidadEncuesta', '1');"; // si han ingresado si quiera un titulo insertamos esta encuesta en la tabla
$mysqli->query($sql);
$sql = "SELECT MAX(id) as id FROM encuestas"; // ahora obtenemos el id de la ultima fila,
// la que acabamos de ingresar,
// esto lo hacemos para poder asociarle las opciones
$req = $mysqli->query($sql);
while($result = $req->fetch_array(MYSQLI_ASSOC)){
$id_encuesta = $result['id']; // con el resultado obtenido hacemos un bucle y definimos los resultados como id_encuesta.
}
$sql = "INSERT INTO `opciones_encuesta` (`id` ,`id_encuesta` ,`nombre` ,`valor`) VALUES "; // En esta parte estamos armando un query SQL dinamico el cual sera modificado de acuerdo a lo que el usuario ingrese en el formulario.
for($i=1;$i<=$num;$i++){
$opcnativa = trim($_POST['opc'.$i]); // obtenemos el nombre de cada opcion indivudalmente.
if($opcnativa != ""){
$sql .= "(NULL , '$id_encuesta', '$opcnativa', '0')"; // el id de la opcion ira null para que se ponga automaticamente, en id_encuesta pues ira el id de la encuesta que acabamos de crear, en 'nombre' ira el nombre de la opcion y valor ira 0, puesto que es una nueva opcion sin votos, esto se repetira con todas las opciones que el usuario haya definido.
$cont++;
}
if($i == $num){
$sql .= ";"; // si es que se llega al final, termina la consulta
}else{
$sql .= ", "; // sino se pone una , y se continua.
}
}
if($cont < 2){ // si el usuario no definio ninguna opcion, se elimina la encuesta recien creada, esto es poco probable que suceda ya que la definicion de opciones la haremos con un select, y aqui se seleccionara el valor de 2 por defecto.
$sql = "DELETE FROM `encuestas` WHERE id = ".$id_encuesta;
echo "<div class='error'>Tiene que llevar por lo menos 2 opciones.</div>";
}else{
echo "<script language='javascript'>window.location='index.php?p=charts'</script>"; // por ultimo si todo salio bien, redireccionamos al index para que el usuario vea su encuesta recien creada.
}
$mysqli->query($sql); // y ejecutamos el query
}
}
?>
<div id="agregador" style=" width: auto; max-width:800px; margin:auto; margin-top: 10px; border: 1px solid #E0E0E0;">
<div style="margin-bottom: 15px; background-color: #f5f5f5; font-size: 21px; border-bottom: 1px solid #DDD; padding-bottom: 5px; text-align: center; font-weight:bold;">Agregar Encuesta</div>
<form id="agregar_encuesta_form" role="form" style="text-align: center;">
<div class="form-group">
<div class="fl titulo" style="margin-right: 20px;">
<label>Titulo:</label>
<input name="titulo" type="text" value="<?= $titulo; ?>" size="26" class="form-control">
</div>
<br/>
<div style="margin-right: 20px;">
<label id="desc">Descripcion:</label>
<textarea id ="desc" name="descripcion" rows="3" cols="50" class="form-control"><?= $desc; ?></textarea>
</div><br/>
<?php
// esto es simplemente un formulario, pero aqui hacemos una condicion, identificamos si se ha definido un numero de opciones, si es si hacemos un bucle, si es no mostramos el select para definir un numero de opciones, como es obvio por defecto se mostrara el bucle:
if(isset($_POST['opc'])){
$num = $_POST['opciones']; // guardamos el valor del numero de opciones
for($i=1;$i<=$num;$i++){ // hacemos el bucle mostrando los campos respectivos.
?>
<div class="cf">
<label>Opcion <?php echo $i; ?>: </label>
<input name="opc<?php echo $i; ?>" type="text" size="43" class="form-control">
</div>
<?php } // aqui termina el bucle ?>
<div class="cf">
<br/><input name="enviar" type="submit" class="btn btn-success center-block" value="Enviar" style="padding: 8px 16px; border: 0; width:90px; height:42px; font-weight: bold; color: white; ">
<input name="opciones" type="hidden" value="<?php echo $num; // le pasamos el valor de num al proceso del formulario mediante un campo oculto. ?>">
<input name="cont" type="hidden" value="<?php echo cont; ?>">
</div>
<?php }else{ // sino se ha definido nro de opciones: ?>
<div class="fl">
<label>Nยบ de opciones:</label>
<input name="opciones" type="number" min="2" max ="999"/>
</div>
<br/>
<div class="cf">
<input name="opc" type="submit" class="btn btn-success center-block" value="Continuar" style="padding: 8px 16px; border: 0; width:90px; height:42px; font-weight: bold; color: white; ">
</div>
<?php } // Sino se han definido opciones, que en vez de salir el boton de Enviar, salga uno que sea Continuar. ?>
</div>
</form>
</div>
$( document ).ready(function() {
$("#agregar_encuesta_form").submit( function(e) {
e.preventDefault();
$.ajax({
data: $("#agregar_encuesta_form").serialize(),
type: "POST",
url: "agregar.php",
success: function(data){
$("#agregador").html(data);
console.log(data);
}
});
});
$("#agregar_encuesta_form").submit( function() {
return false;
});
});
<?php
// Wrapper para mysql_connect
//Un wrapper es un contenedor, en html5, sirve para poner dentro un trozo de código, generalmente una parte del body
function conectar($host, $user, $pass, $db) {
//aquí conectará a tu base de datos
$link = new mysqli('$host', '$user', '$pass', '$db');
if ($link -> connect_errno) {
die( "Fallo la conexión a MySQL: (" . $link -> mysqli_connect_errno()
. ") " . $link -> mysqli_connect_error());
}
return $link;
}
// Devuelve un elemento si se especifica $id o toda la tabla caso contrario
function select($link, $id = null) {
// Tabla users
$sql = "SELECT * FROM demo_users ";
// Join con deptos, se hace siempre
$sql .= "LEFT JOIN demo_depts on demo_depts.depid = demo_users.userdep";
if ($id)
$sql .= " WHERE demo_users.userid = $id";
if(!$query = $link->query($sql)){ die(mysql_error()); }
return $query;
}
// inserta id con values
function insert($link, $values) {
// Inicio de la sentencia
$sql = "INSERT INTO demo_users ( ";
// Por cada par de clave, valor, concatenar al string sql
// Primero las claves
foreach ( $values as $property => $value ) {
$sql .= $property . ",";
}
// Quito la ultima coma
$sql = substr ( $sql, 0, - 1 );
$sql .= ") VALUES (";
// Ahora los valores
foreach ( $values as $property => $value ) {
$sql .= "'$value',";
}
$sql = substr ( $sql, 0, - 1 );
$sql .= ");";
// Insertar
if(!$query = $link->query($sql)){ die(mysql_error()); }
return $link->insert_id;
}
// actualiza id con values
function update($link, $id, $values) {
$sql = "UPDATE demo_users SET ";
foreach ( $values as $property => $value ) {
$sql .= $property . " = '$value', ";
}
// Quito la ultima coma
$sql = substr ( $sql, 0, - 2 ) . " WHERE userid = '$id';";
if(!$query = $link->query($sql)){ die(mysql_error()); }
return $link->affected_rows;
}
// elimina id
function delete($link, $id) {
$sql = "DELETE FROM demo_users WHERE userid = '$id';";
if(!$query = $link->query($sql)){ die(mysql_error()); }
return true;
}
//select con los departamentos
function getDepSelect($link, $id = null)
{
$sql = "SELECT * FROM demo_depts";
if(!$query = $link->query($sql)){ die(mysql_error()); }
$output = "<select name='depid' id='depid'>";
$output .= "<option value='-1' selected='selected'>Seleccione....</option>";
while($deps = $query->fetch_array(MYSQLI_ASSOC))
{
//mostrar los registros, pero si hay un $id, entonces ese registro debe seleccionarse
$output .= "<option ".($id && $id == $deps['depid']?'selected="selected"':'')." value='{$deps['depid']}'>{$deps['depname']}</option>";
}
$output .= "</select>";
return $output;
}
?>
Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.
Abraham Lincoln (1808-1865) Presidente estadounidense.
aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación