0

necesito ayuda. Tengo que hacer crear con PHP, las opciones de un select con los datos que provenientes de diferentes tablas MySql, y una vez seleccionadas las inserte en otra tabla.

Tengo esta consulta SQL:

$consulta =  "SELECT idCausa,
    Deudor_idDeudor,
    Cliente_idCliente,
    TiposCausas_idTiposCausas,
    Tribunal_idTribunal,
    SubMateria,
    Rol,
    RutPerJurid,
    ClienteAsunto,
    Abogado,
    Procurador,
    Estado,
    Fecha
    FROM causa WHERE idCausa = " . $idCausa;

y los JOIN son estos:

$consulta = "SELECT c.idCausa, 
    DATE_FORMAT(c.Fecha, '%d.%m.%Y') 'Fecha',
    d.nombre 'Deudor', 
    cc.nombre 'Cliente',
    tc.Descripcion 'TiposCausas', 
    tb.DescTribunal 'Juzgado', 
    sm.Descripcion 'SubMateria', 
    c.Rol, c.RutPerJurid, 
    c.ClienteAsunto,
    u.nombres 'Abogado',
    pc.Procurador,
    ec.estado ,
    c.Documento
         FROM causa c
         INNER JOIN usuario u ON u.rut = c.abogado
         LEFT JOIN deudor d ON c.Deudor_idDeudor= d.idDeudor
         LEFT JOIN cliente cc ON c.Cliente_idCliente = cc.idCliente
         LEFT JOIN tiposcausas tc ON tc.idTiposCausas =  c.TiposCausas_idTiposCausas
         LEFT JOIN submateria sm ON sm.idSubTiposCausas = c.SubMateria
         LEFT JOIN tribunal tb ON tb.idTribunal = c.Tribunal_idTribunal
         LEFT JOIN procuradores pc ON pc.idProcurador = c.procurador
         LEFT JOIN estadoscausas ec ON ec.idestado = c.estado
         ORDER BY c.idCausa desc;

probé lo siguiente y no me funcionó:

<select>
    <option value="0">Selección:</option>

<?php

    $query = $mysqli -> query ( "SELECT * FROM datos" );

    while ( $valores = mysqli_fetch_array( $query )) {

        echo '<option value="' . $valores[ idcausa ]. ' ">'</option>';

    }
?>

</select>

¿Alguna idea de como lo pueda hacer? Necesito hacerlo urgente y se me agotan las ideas.

update hice caso de lo que me dijeron y el option sigue sin mostrar datos el codigo quedo algo asi :

<?php
 
 
include("conexion.php");

header("Content-Type: text/html;charset=ISO-8859-1");
session_start();
if(isset($_SESSION['nombreusu']))
{
?>

<html lang="en">
<div class="form-group">
    <div class="form-row">
      <div class="col-md-6">
    <label for="Deudor_idDeudor">Id Deudor</label>
    <select>
       <option value="0" >Selección:</option>

    <?php

       $resultado = $mysqli -> query ( "SELECT * FROM causa" );

      while ( $valores = $resultado->fetch_array(MYSQLI_ASSOC)) {
  echo '<option value="' . $valores[ 'idcausa' ] . ' ">' . $valores[ 'idcausa' ] . '</option>';
            }
     ?>

    </select>
   </div>
 </div>
     
RMP
  • 49
  • 1
  • 15
  • ¿Las consultas funcionan? ¿Las probaste en una aplicación como phpMyAdmin? ¿Hiciste debug de los resultados? – Orici Nov 06 '17 at 08:19
  • Prueba la salida de la consulta con un `while($valores = mysqli_fetch_array( $query )) { print_r($valores); }` – ffflabs Nov 06 '17 at 10:08

2 Answers2

1

Me voy a permitir señalarte algunas cosas:

  1. Estás usando el estilo orientado a objetos y el estilo por procedimientos en el mismo código.

    Aquí usas el estilo orientado a objetos:

    $query = $mysqli -> query ( "SELECT * FROM datos" );

    Aquí usas el estilo por procedimientos:

    while ( $valores = mysqli_fetch_array( $query )) {

La mezcla de estilos es una práctica no recomendada por el Manual de PHP, por motivos evidentes.

Mezclar estilos

Es posible cambiar entre los estilos en cualquier momento. No se recomienda mezclar los dos estilos por razones de claridad y estilo de código.

Puedes usar el estilo orientado a objetos... es más claro y es más moderno. Si quieres más detalles sobre esto puedes consultar la respuesta a esta preguna: Diferencia entre new mysqli y mysqli_connect

  1. Si quieres leer los valores usando los nombres de las columnas dentro del while entonces debes indicar que quieres un array asociativo en los resultados. La lectura se hace así: $valores["idcausa"], indicando entre comillas " el nombre de la columna, lo cual falta en tu código.
  2. Te falta el valor que debe mostrarse fuera del option. Ten en cuanta que los option tiene la siguiente sintaxis: <option value="valor">Valor que se muestra</option>, tu código no indica nada en Valor que se muestra. Supondré en la propuesta de código que quieres mostrar una columna de la tabla en la base de datos llamada causa.

CÓDIGO EDITADO

Esta es una propuesta completa, que controla todo el flujo del programa, tiene una variable $arrError dedicada a recoger los eventuales errores que podrían ocurrir. De ese modo el código siempre dice algo.

Veamos:

<?php
include("conexion.php");
header("Content-Type: text/html;charset=ISO-8859-1");
session_start();
if(isset($_SESSION['nombreusu']))
{
?>

<html lang="en">

<?php
        if ($mysqli){    
            $resultado = $mysqli -> query ( "SELECT * FROM causa" );
             if ($resultado->num_rows > 0){
                $strHTML='<div class="form-group">';
                $strHTML.='<div class="form-row">';
                $strHTML.='<div class="col-md-6">';
                    $strHTML.='<label for="Deudor_idDeudor">Id Deudor</label>';
                    $strHTML.='<select>';
                        $strHTML.='<option value="0" >Selección:</option>';
                while ( $valores = $resultado->fetch_assoc()) {
                        $strHTML.='<option value="' . $valores[ 'idcausa' ] . ' ">' . $valores[ 'idcausa' ] . '</option>';
                }
                    $strHTML.='</select>';
                $strHTML.='</div>';
                $strHTML.='</div>';
                $strHTML.='</div>';
                echo $strHTML;

            }else{

                $arrError=array("mensaje"=>"No se encontraron registros");      
            }

        }else{

            $arrError=array("mensaje"=>"La conexión a la base de datos no se puedo establecer. Revise conexion.php");   
        }

}else{  

    $arrError=array("mensaje"=>"No hay datos en nombreusu");

}

/*Verificamos si hubo errores*/
    if ($arrError){

        echo $arrError["mensaje"];
    }
?>
</html>
A. Cedano
  • 86,578
  • 19
  • 122
  • 221
  • no me funciono este metodo :/ – RMP Nov 07 '17 at 03:02
  • Tendrás que ir evaluando cada variable para ver dónde está el problema : la conexión, la consulta, etc. Cuando pueda te pondré un ejemplo. – A. Cedano Nov 07 '17 at 08:21
  • @Tondrax he editado la respuesta con una propuesta global, implementando un código controlado. Si no funciona te dirá por qué no funciona. – A. Cedano Nov 07 '17 at 11:12
0

Suponiendo que tu consulta este correcta y tengas los datos al componer el option no estas imprimiendo un contenido visible, tus opciones se desplegarían vacías... Además no usas la llave del array como un string por lo que no obtendrías el dato. Debería ser:

    echo '<option value="' . $valores[ 'idcausa' ] . ' ">' 
. $valores[ 'idcausa' ] . '</option>';
Orici
  • 7,269
  • 7
  • 35
  • 68
  • Ojo, respecto a la llave mal entrecomillada, lo que ocurre silenciosamente es : `PHP Notice: Use of undefined constant idcausa - assumed 'idcausa'` y pasaría igual. – ffflabs Nov 06 '17 at 10:05