- Veran tengo una funcion que me hace por asi decirlo un 95% de lo que busco, pero esa funcion la necesito implementar en otro modulo eliminando un par de variables y agregando otra a parte de eso esa segunda funcion o modulo que trato de implementar requiere conectarse a otro motor de bd especificamente a Mysql el 1er modulo del cual me estoy guiando se conecta a Microsoft Sql Server.
- Veran yo tengo lo siguiente.
- En la fila de izquierda se observa unos codigos(OG0001, OG0002) y unos nombres estan contenidos en un select si yo doy click en cualquiera de ellos al lado derecho se genera otra fila mediante una peticion Ajax y en la parte superior se visualiza un tanto mas detallado valores del usuario al que le di click ahora bien como ven en esa segunda fila hay otro Select pero vacio, en ese select yo quiero cargar Unos nombres de documentos que tengo de ese Usuario, he de mencionar que el primer proceso que muestra la informacion del usuario en las dos filas las saco de Sql Server y los que quiero mostrar en el segundo Select osea el que esta en blanco es una Data que tengo en Mysql.
- El problema radica en que no logro cargar el select con la info del usuario al que selecciono he intento hacerlo de la siguiente manera. Tengo este formulario.
Código
<!DOCTYPE html> <html lang="es"> <head> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="css/style.css"> <script src="script/jquery-2.1.1.min.js"></script> <script src="script/ajax.js"></script> </head> <body> <section id="criterio"> <div id="crit-form"> <h3> Criterio de Busquedas <p> Proyecto: <?php foreach($datos as $fila): echo $fila['desc_empresa']; endforeach; ?> </p> </h3> <fieldset> <form class="crit-form" method="post" name="search_form" id="search_form"> <small> El Total de Filas en Base de Datos: <?php echo $total ?> </small> <div id="resultados"></div> <small>Por Ficha</small> <input type="text" name=".ficha" class="parse" placeholder="introduzca igo Ficha Ej: Ch001"> <small>Por Cedula</small> <input type="text" name="ci" class="parse" placeholder="Cedula Use Puntos Ej: 49.781.190"> <small>Por Nombre</small> <input type="text" id="search" name="nombre" class="parse" placeholder="introduzca un Nombre Ej: Antonio"> <small>Por Estatus</small> <select class="parse" class="slp"> <option value="A" selected>Activo</option> <option value="I">Inactivo</option> <option value="PL">Por Liquidar</option> <option value="L">Liquidado</option> </select> </form><br> <a href="#" id="btn-sub">Configuración</a> </fieldset> </div> </section> <section id="detalles"> <div class="wrap-image"> <form method="post" name="doc" class="docarc"> <div id="result"></div> </form> </div> </section> <section id="cnf-g"> <div id="config"> </div> </section> <section id="visualice"> <div class="wrap-visual"> <div id="visual"></div> </div> </section> </body> </html>
- Dentro del Form veran este <div id="resultados"></div> alli se carga la primera columna que les mostre y aqui.
Código
<section id="detalles"> <div class="wrap-image"> <form method="post" name="doc" class="docarc"> <div id="result"></div> </form> </div> </section>
- Se carga la segunda fila que tiene el Select en blanco fila que se genera al seleccion un usuario a partir del primer select. Esa segunda fila esta construida de la siguiente manera.
Código
<?php $_SESSION['exp'] = $codigo; require_once "../php/Clases/conexion/conexion.class.php"; require_once "../php/Clases/crud/crud.php"; require_once "../php/Clases/crud/crud2.php"; $modelo = new Ibee(); $modelo->Leer(); $filaa = $modelo->row; $model = new Crud(); $model->Search_select(); $filas = $model->rows; foreach ($filas as $fila) { echo "<h4>" . $fila['ci'] . $fila['nombres'] ." ". $fila['apellidos']; echo "<br>Estatus: ". $fila['status']; echo " Cargo: ". $fila['des_cargo'] ."</h4>"; echo ' <div class="image" id="style-5"> <div class="force-overflow">'; echo "<img src='img/imgpdf.png' width='45px'/>"; ?> <select size="10" name="nomarch" id="sel"> <?php foreach ($filaa as $fila) { ?> <option id='vis' value="<?php echo $fila['nombre_archivo']; ?>"> <?php echo $fila['nombre_archivo']; ?> </option> <?php } ?> </select> <?php echo '</div> </div> <div id="foimg"> <center> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <strong><small> Total Imagenes: <span> 567 </span></small></strong><br> <a id="btn-upp" href="upf.php?cod='.$codigo.'">Subir Archivo</a> <a id="cancel-upp" href="#">Cancelar Busqueda</a> </center> </div> '; } ?>
- Disculpen si parte del codigo esta echo un arroz con mango pero es que tratado muchas cosas. En conexion.class.php esta lo siguiente
Código
<?php class Conexion { public $ndatabase =""; public function conectar($cod_empresa) { $this->ndatabase = $cod_empresa; $server = 'sbvbieloven'; $database = $this->ndatabase; $username = 'profit'; $password = 'profit'; return $conexion = new PDO('sqlsrv:Server=' . $server . ';Database='. $database, $username, $password); } } class Msqli { public function conec() { $server = 'localhost'; $database = 'sismic'; $username = 'root'; $password = ''; return $conn = new PDO('mysql:host=' . $server . ';dbname='. $database, $username, $password); } } ?>
- Donde la 1era class Conexion es la conexion con Sql Server y la 2da class Msqli es la conexion a Mysql, que existe en crud.php pues lo siguiente Ojo este pertenece al primer Foreach.
Código
<?php class Crud { public $rows; public function Search_select() { $model = new Conexion(); $conexion = $model->conectar($_SESSION['cod_empresa']); $codigo = $_REQUEST['cod']; $sql = "SELECT * FROM snemple A INNER JOIN sncargo B ON A.co_cargo = B.co_cargo WHERE A.cod_emp LIKE '%".$codigo."%'"; $consulta = $conexion->prepare($sql); $consulta->execute(); while ($filas = $consulta->fetch()) { $this->rows[] = $filas; } } } ?>
- Y este pertenece al segundo Foreach, Aclaro que $_SESSION['cod_empresa'] ya esta definida muuucho antes en otra sección del sistema, y como veran esta clase es muy parecida a la de arriba, pero no entiendo porque no me funciona y me muestra el select en blanco.
Código
.
<?php class Ibee { public $row; public function Leer() { $model = new Msqli(); $conexion = $model->conec(); $codigo = $_REQUEST['cod']; $sql = "SELECT * FROM expedientes WHERE cod_emp LIKE '%".$codigo."%'"; $consulta = $conexion->prepare($sql); $consulta->execute(); while ($filaa = $consulta->fetch()) { $this->row[] = $filaa; } } } ?>
- Ahora Bien Cosas que intente, yo pense que esto no se estaba ejecutando.
Código
$sql = "SELECT * FROM expedientes WHERE cod_emp LIKE '%".$codigo."%'";
- Especificamente que $codigo esta Null y por eso el select se mostraba en blanco otra cosa el.
Código
$codigo = $_REQUEST['cod'];
- Que se encuentra en las dos clases (class Crud y class Ibee) se obtiene del primer Select que se cargo en la primera fila y yo dije bueno a lo mejor la clase Ibee no esta tomando bien el $codigo = $_REQUEST['cod']; y es por eso que hice esto $_SESSION['exp'] = $codigo; y luego hice esto.
Código
<?php class Ibee { public $row; public function Leer() { $model = new Msqli(); $conexion = $model->conec(); $codigo = $_REQUEST['cod']; $sql = "SELECT * FROM expedientes WHERE cod_emp LIKE '%".$_SESSION['exp']."%'"; $consulta = $conexion->prepare($sql); $consulta->execute(); while ($filaa = $consulta->fetch()) { $this->row[] = $filaa; } } } ?>
- Notar que substitui el $codigo del SELECT por el $_SESSION y esto me dio el mismo resultado el Select se muestra en Blanco, entonces por cosas que me vinieron me dije sera que no se esta cargando bien la data en el Select y decidi eliminar el select del segundo Foreach osea hice esto.
Código
<?php $_SESSION['exp'] = $codigo; require_once "../php/Clases/conexion/conexion.class.php"; require_once "../php/Clases/crud/crud.php"; require_once "../php/Clases/crud/crud2.php"; $modelo = new Ibee(); $modelo->Leer(); $filaa = $modelo->row; $model = new Crud(); $model->Search_select(); $filas = $model->rows; foreach ($filas as $fila) { echo "<h4>" . $fila['ci'] . $fila['nombres'] ." ". $fila['apellidos']; echo "<br>Estatus: ". $fila['status']; echo " Cargo: ". $fila['des_cargo'] ."</h4>"; echo ' <div class="image" id="style-5"> <div class="force-overflow">'; echo "<img src='img/imgpdf.png' width='45px'/>"; ?> <!-- COMENTE ESTA LINEA --> <!--<select size="10" name="nomarch" id="sel">--> <?php foreach ($filaa as $fila) { ?> <option id='vis' value="<?php echo $fila['nombre_archivo']; ?>"> <?php echo $fila['nombre_archivo']; ?> </option> <?php } ?> <!-- COMENTE ESTA LINEA --> <!--</select> --> <?php echo '</div> </div> <div id="foimg"> <center> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <small class="cheking">Imagen</small> <input class="check" type="checkbox"> <strong><small> Total Imagenes: <span> 567 </span></small></strong><br> <a id="btn-upp" href="upf.php?cod='.$codigo.'">Subir Archivo</a> <a id="cancel-upp" href="#">Cancelar Busqueda</a> </center> </div> '; } ?>
- Y para mi sorpresa.
- Investigando encontre que ese error es resultante de dos posibles causas Uno que la variable que esta recibiendo el Foreach esta Nula o Dos que no sea un arreglo, y bueno en mi ignorancia imposible que no sea un arreglo entonces intente lo siguiente.
Código
<!-- COMENTE ESTA LINEA --> <!--<select size="10" name="nomarch" id="sel">--> <?php { ?> <option id='vis' value="<?php echo $fila['nombre_archivo']; ?>"> <?php echo $fila['nombre_archivo']; ?> </option> <?php } ?> <!-- COMENTE ESTA LINEA --> <!--</select> -->
- Resulta pues Nada se muestra en Blanco, vi tambien que para estos casos a veces se puedo solucionar aplicando un For en lugar de Foreach intente eso y nada tampoco.
- Hice esto pasarle directamente a la consulta un valor para descartar posibles fallos de la sentencia Sql que estaba usando.
Código
<?php class Ibee { public $row; public function Leer() { $model = new Msqli(); $conexion = $model->conec(); $codigo = $_REQUEST['cod']; $sql = "SELECT * FROM expedientes WHERE cod_emp LIKE '%OG0001%'"; $consulta = $conexion->prepare($sql); $consulta->execute(); while ($filaa = $consulta->fetch()) { $this->row[] = $filaa; } } } ?>
- Y como resultado.
- Eso quiere decir que la instruccion y la BD y la conexion y la clase todo eso esta bueno entonces sera la variable que no se pasa? porque yo use $_SESSION y no funciono y la imprimi con echo y me retorna el codigo del usuario que selecciono y entonces hice esto para seguir probando.
Código
<?php class Ibee { public $row; public function Leer() { $model = new Msqli(); $conexion = $model->conec(); $codigo = $_REQUEST['cod']; $sql = "SELECT * FROM expedientes WHERE cod_emp LIKE '%'".$_SESSION['exp']."'%'"; $consulta = $conexion->prepare($sql); $consulta->execute(); while ($filaa = $consulta->fetch()) { $this->row[] = $filaa; } } } ?>
- Aqui Modifique Esto.
Código
<?php $_SESSION['exp'] = $codigo; require_once "../php/Clases/conexion/conexion.class.php"; require_once "../php/Clases/crud/crud.php"; require_once "../php/Clases/crud/crud2.php"; $modelo = new Ibee(); $modelo->Leer(); $filaa = $modelo->row; $model = new Crud(); $model->Search_select(); $filas = $model->rows;
- Por Esto
Código
<?php $_SESSION['exp'] = 'OG0002'; require_once "../php/Clases/conexion/conexion.class.php"; require_once "../php/Clases/crud/crud.php"; require_once "../php/Clases/crud/crud2.php"; $modelo = new Ibee(); $modelo->Leer(); $filaa = $modelo->row; $model = new Crud(); $model->Search_select(); $filas = $model->rows;
- Y que paso? pues me mostro la fila dos los archivos del Usuario dos, entonces porque si yo hago esto, no sirve.
Código
$_SESSION['exp'] = $codigo;
- Pero si hago esto si sirve.
Código
$_SESSION['exp'] = 'OG0003';
- Si yo mando a Imprimir $codigo el me retornar Codigos del usuario que selecciono si yo clickeo en el user OG0009 cuando Ajax me muestra la fila 2 se imprime el OG0009 si clikeo al OG0052 se imprime... Entonces no se que estoy haciendo mal.
- De antemano Saludos al Valiente que se atreva a leer todo esto y de ya muchasimas gracias.
- Saludos