Mostrar Mensajes

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.


Mensajes - Lorenzo31

Páginas: 1 [2] 3 4 5 6 7 ... 20
22
Lo que debes hacer es una unica pagina PHP.  Por otro lado lo primero es una pagina HTML con un simple formulario con los datos que tu quieres que se envien.

<form method="POST" action ="tupagina.php">   <input type="submit" value="enviar">
</form>

Al darle a sumbit del formulario, (voy a darte la idea simple sin jquery o ajax) el submit mandará por POST los datos a tu pagina PHP, que estará esperando:

if isset($_POST) { //hacer conexion a la base de datos
                              //Consulta
                             //envio al htm succes o error }

23
Buenas, muchas gracias Dranxz88, mas o menos desde que hice la pregunta ya he evolucionado bastante con el tema. Pero muchisimas gracias.

Utilizo o bien funciones en jquery o bien clicks en id's. Efectivamente llamas con ajax al php.

24
Aprender a programar desde cero / Re:Curso PHP ejercicio (CU00804B)
« en: 23 de Septiembre 2016, 20:33 »
Buenas la tercera es falso , pero no por la razón que das, ya que tu hablas de PHP y el enunciado de HTML.

Básicamente es un lenguaje de edición de texto o montaje el HTML y nada más. El resto esta correcto creo yo.

Saludos.

25
El resultado es guardado en una array asociativa, cada campo tiene el nombre que le hayas dado en el SELECT, simplemente despues muestras los valores que te interesen en cada select.

Código: [Seleccionar]
$opciones .= "<option value='".$NCategoria['NombreCategorias']."'>".$NCategoria['NombreCategorias']."</option>";

$opcionesSubcategoria .= <option value='".$NCategoria['NombreSubCategorias']."'>".$NCategoria['NombreSubCategorias']."</option>";

HTML

Código: [Seleccionar]
<label for="sltcategoria"></label>
<select name="sltcategoria" id="sltcategoria">
<?= $opciones ?>
</select>

<label for="sltSubcategoria"></label>
<select name="sltSubcategoria" id="sltSubcategoria">
<?= $opcionesSubcategoria ?>
</select>




26
Buenas, lo primero decirte que cuando pegues codigo, hay en el menu del foro un # para que dentro pegues el codigo y se vea mas claro todo

Código: [Seleccionar]
<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>

Lo segundo comentarte que deberias decirnos que error te dá porque al no saber si el select que haces esta bien, dificil ayudarte. Pega el error que te de en el navegador en consola.

Y mi ultimo consejo es que transformes el codigo que haces y separes el PHP del HTML, en lugar de lanzar un echo, guarda en una variable y luego la insertas en el html, algo así

PHP
Código: [Seleccionar]
<?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
Código: [Seleccionar]
<label for="sltcategoria"></label>
<select name="sltcategoria" id="sltcategoria">
<?= $opciones ?>
</select>

También decirte que puedes usar INNER JOIN para lo que tu quieres hacer

Código: [Seleccionar]
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         

27
Para obligar al usuario a rellenar todos los campos, tienes en html la opcion required.

<input type="text" name="nombre" required/>

Luego para asegurarte que se envian todos bien ya deberías usar previamente al envio JavaScript y sino en PHP, sabiendo tú previamente todos los campos que deben ser llenados, asegurarte con count o alguna otra forma que se te ocurra.

Saludos.

28
Buenas para ordenar echale un vistado a Sort, facil de usar y ordena , esta en la clase Arrays.

Ejemplo:

 //Array de String
        String[] nombres = {"Pepe", "Juan", "Alex",
            "Julian", "Francisco", "Luis"};
 
        //Ordena el array
        Arrays.sort(nombres);

Automaticamente ordena el array.

para comprobar si la id de un empleado está usada antes solo has de recorrer el array de empleados con un foreach y comprobar la id si es distinta entras a nuevo sino le dices que ya está introducido.

foreach (int idEmpleado: NumEmpleado){
                  if (idEmpleado == nuevaPeticion){ int semaforo = 1; (reptido) }

}

Algo así quitanddo el comentario y las posibles faltas de sintaxis, que hace dias que no toco java.
Saludos.

29
En la línea dos, pone asignado_a,cientifico es un . No una coma

30
Buenas, estoy intentando buscar una forma de transformar archivos .doc, .docx o imágenes a pdf con PHP, si alguien conoce un medio porque ya lo haya usado antes y puede comentarmelo, se lo agradeceré, el entorno es WAMP, con Windows.

Gracias de antemano a todos.

31
Hola, deberias pegar cual es el error que te da, para poder tener una idea de lo que te ocurre.

Pero para empezar ya te digo que tu consulta, inserta mal las variables, en lugar de
'. $username .'  debes usar \''.$username .'\'
Debes usar el escape \' para decirle al sql que ahí va una coma '

Espero respuesta, un saludo.

32
Le falta mucho a tu código para hacer lo que has dicho que pretendes, por lo que veo.

Por darte una pista, cuando haces change en el select, el desplegable, debes enviar datos o bien a traves de una funcion javascript y ajax, que actualice, o redirigiendote a la misma página actual pero pasando un valor por $_GET, de esta forma...

 <select id="nombre" onchange="if (this.value) window.location.href = 'index.php?nombre=' + this.value;">

De esa manera, en el php detectas que ha seleccionado $_GET['nombre'] y puedes pedir SELECT que muestre datos del usuario con ese nombre.

La mejor forma es con ajax y javascript, por la rapidez pero para eso necesitas conocimientos más extensos.

En esta web tienes cursos que te ayudarian a realizar esas tareas

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Saludos.

33
Exacto, ahí esta la especificación en la documentación, pero bueno, me pude dar cuenta lo que fallaba, que eran los submit y googlearlo a ver porque en POST no me llegaban esos inputs, y saqué eso mismo que tu has posteado.

Thx Alex.

34
Después de media mañana peleando con el asunto, he logrado arreglarlo, básicamente el problema que tenia es que el serialize() de JavaScript, los botones type=submit no los recoge para el post, y como yo en el php comprobaba esos submit, he tenido que poner en el formulario un par de input hidden que hicieran la funcion de los submit en agregar.php.

Un saludo, y gracias Alex, como siempre, por mirarte el código y dedicarme tu tiempo.


35
Código: [Seleccionar]
<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 =;$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&#3618;&#3610; 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>

div agregador engloba el formulario de la encuesta.

básicamentente ese count <2 dice, si hay menos de dos opciones (bien, mal) no puede haber encuesta, así que recarga la página charts.PHP y no insertes en bbdd la nueva encuesta.

lo que quiero es que ese form agregador, al seleccionar 2,3,4... opciones , se refresque con tantos text input como opciones seleccionaran, para que puedan escribir las opciones con texto.

esto ya lo hacía, lo que ocurre que llamando en el form a action ="" y recogia del post la variable opc y así funcionaba perfectamente, pero ahora debo mostrarlo con pestañas el menú y al refresar la página entera se me va a la pestaña que no es, no se mantiene en la de nueva encuesta, así que, la única opción es recargar con ajax ese form, y en eso estoy, sólo necesitó que ese div haga con ajax o como sea, un equivalente a action="" pero en el div agregador solo

36
Buenos días compañeros, debido a mis limitaciones, por desconocimiento de ajax (sigo teniendo presente que he de hacer el curso y el de JavaScript) no sé como realizar una acción y necesitaria ayuda, creo que es algo bastante básico para alguien que sepa Ajax.

Ahí va la pregunta, con la documentación de código que tengo, debido al uso de base de datos, no copio todo el código, porque tampoco se podría ejecutar.

desde un fichero php hago un include para agregar una nueva encuestas,


Código: [Seleccionar]
     include '../net/agregar.php';
el código de agregar.php, básicamente tiene dos opciones, seleccionar el titulo y numero de opciones y la otra definir las opciones segun ese numero.

Para ello solo compruebo, si al darle a un boton continuar, se ha creado $_POST y entra en la segunda parte, todo dentro del mismo agregar.php. Dejo el código aunque es extenso.
Código: [Seleccionar]

<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>



Bueno, lo que necesito, es que el form que marco en negrita, realice la acción sin recargar toda la página (que tiene cabecera, menú, etc), solo el div "agregador" donde está el formulario, y en teoría vuelva a comprobar $_POST['opc'] que indica el numero de opciones y ejecuta la segunda opción del agregar.php

Para ello he intentado esto con ajax, pero no da resultado, solo  lo lanza por consola.log(data) si se lo solicito.


Código: [Seleccionar]

$( 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;
});

});


Si alguien puede ayudarme, lo agradezco mucho compañeros. Sé que al final la solución es hacer el curso JavaScript y Ajax pero el tiempo me lo impide en este momento. Lo haré seguro.




37
Si no te entendí mal quieres q un formulario, no se envíe si no se rellenan campos x, para eso usa el atributo required de <input/> sólo has de asegurarte que el input de envío sea de type submit, y ya no deja mandar el form si no rellenas los campos

38
Undefined index no significa que sea nulo, significa que está mal el nombre, y ROSCANDO no corresponde a ningún campo del array devuelto.
Dos opciones, o que el campo en la consulta  o tabla tenga otro nombre, mal escrito, revisarlo.
O que el dato devuelto no lo transformes a array asociativo y x eso no existe índice llamado ROSCANDO, porque los índices son 0,1,2...
Saludos

39
Bueno, como no lo has vuelto a escribir, te dejo el código inicial, orientado a objetos, no lo he compilado porque la base de datos la tienes tu, no yo.
Debes introducir los datos de la base de datos, donde te indico.

Si falla algo, serán problemas de simple sintaxis, si estás contento ya sabes, agradeceselo al foro y a sus administradores que no dejan de enseñar cosas (a mi muchas).

Saludos Michel.

Código: [Seleccionar]

<?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 $sql0, - );
    
$sql .= ") VALUES (";
    
// Ahora los valores
    
foreach ( $values as $property => $value ) {
 
        
$sql .= "'$value',";
    }
    
$sql substr $sql0, - );
    
$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 $sql0, - ) . " 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;
}
?>



40
Juas, pega el código completo que quieres arreglar y yo te lo hago mañana, seguro que son cuatro comandos.
Saludos.

Páginas: 1 [2] 3 4 5 6 7 ... 20

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

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".