Foros del Web » Programando para Internet » PHP »

error con manipulacion de datos en grid

Estas en el tema de error con manipulacion de datos en grid en el foro de PHP en Foros del Web. hola pues estoy manejando la clace "acoDatagrid" la cual todo iba bien solo que necesito hacer que en ves de que me ponga una palabra ...
  #1 (permalink)  
Antiguo 06/01/2014, 13:10
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta error con manipulacion de datos en grid

hola pues estoy manejando la clace "acoDatagrid" la cual todo iba bien solo que necesito hacer que en ves de que me ponga una palabra que traigo de la base de datos ponga un semáforo ya sea un imagen verde o roja y no puedo lograrlo espero me puedan ayudar este es mi codigo:

Código PHP:
Ver original
  1. <?php
  2.         require_once 'Aco_DataGrid.php';
  3.         $id = $_GET['ID'];
  4.         $conexion = mysql_connect('localhost', 'root','');
  5.                     mysql_select_db('Almacenes', $conexion);  
  6.         $sql= "select * from dependencias where tipo = '$id' order by dependencia";
  7.  
  8. $resul=mysql_query("select * from dependencias  order by dependencia");
  9.  
  10. while($row=mysql_fetch_array($resul)){
  11.  
  12. $activo1 = $row["estado"];
  13.  
  14. //echo  $activo;
  15.  
  16.  
  17. if ("$activo1" == "ACTIVO"){
  18.                         $ruta2 = "imagenes/verde.jpg ";
  19. }else{
  20.                         $ruta2 = "imagenes/rojo.jpg ";
  21.  
  22. }
  23.  
  24. //echo  "<img src=".$ruta." width='50' height='50' /><br>";
  25. }
  26.  
  27.        
  28.         $result=mysql_query("select * from dependencias where tipo = '$id' order by dependencia");
  29.         $campos = array(
  30.         'DEPENDENCIA' => 'dependencia',
  31.         'RESPONSABLE' => 'responsable',    
  32.         'CONTACTO' => 'contacto',
  33.             'ESTADO' => 'estado' //aquí va lo de $ruta2 o la imagen pero no lo eh podido poner
  34.         );
  35.         $grid = new Aco_DataGrid( $sql, $conexion, $campos );
  36.         $paginar_resultados = array( 0, 15, 3 );
  37.         $grid->add_FilaArriba( $contenidoF = 'ESCOGE UNA OPCION PARA VER SU DAI-3', $alignF = 'center', $colspanF =20 );
  38.         $nombreGrid = "busqueda";
  39.         $grid->iniciar($sql, '', $campos,$nombreGrid,$paginar_resultados);
  40.         $campoEscogido=array('DEPENDENCIA' => '1');
  41.         //$contenido = "<a href='redireccionando.php?DEPENDENCIA={1}'><img src='".$ruta."'width='50' height='50'/>;</a>";  
  42.         $contenido = "<a href='redireccionando.php?DEPENDENCIA={1}'>MOSTRAR</a>";  
  43.         $despuesDe ='ESTADO';      
  44.         $titulo = "MOSTRAR";
  45.         $grid->add_ColumnaDespuesDe( $contenido, $campoEscogido, $despuesDe, $titulo);
  46.         $grid->grid_AtributosTabla(0,'cccccc','999999','','center');
  47.         $colores = array ( '#E5EECC', '#FFFFFF' );
  48.         $grid->grid_BgColorFC('#FFFFFF', $colores);
  49.         $grid->grid_WidthAndHeight(960,100);
  50.         $grid->grid_PacingAndPadding(4, 2);
  51. ?>
  52. <!DOCTYPE
  53. html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  54. <html xmlns="http://www.w3.org/1999/xhtml">
  55. <head>
  56. <meta http-equiv="Content-Type" content="text/html; charset= ISO-8859-1" />
  57. <title>SELECCIONA LA DELEGACION/ENTIDAD</title>
  58. <meta name="keywords" content="" />
  59. <meta name="description" content="" />
  60. <script language="JavaScript" type="text/javascript" src="../templates/Publish/SpryAssets/SpryCollapsiblePanel.js"></script>
  61.         <link href="default.css" rel="stylesheet" type="text/css" />
  62. <style type="text/css">
  63. body,td,th {
  64.     color: #333333;
  65. }
  66. body {
  67.     background-color: #FFFFFF;
  68. }
  69. #wrapper #header #logo h1 a {
  70.     color: #FF8000;
  71. }
  72. </style>
  73. </head>
  74. <body>
  75.   <div id="submenu">
  76.     <div align="center">
  77.       <table width="935" border="0" align="center" class="title">
  78.         <tr>
  79.            <td width="130"><img src="imagenes/angel.jpg" alt="" width="132" height="120" /></td>
  80.            <td width="340"><img src="imagenes/OM completo.PNG" alt="" width="342" height="124" /></td>
  81.            <td width="406"><img src="imagenes/OM_naranja.png" alt="" width="426" height="134" /></td>
  82.          </tr>
  83.       </table>
  84.     </div>
  85.   </div>
  86.   <div id="page" >
  87.     <div id="page-bgtop">
  88.       <div id="content">
  89.         <div class="post">
  90.        <div class="entry">
  91.             <p align="left">
  92.             <h2 class="title" align ="left"><a href="subMenuEntes.php">ATRAS</a></h2>    
  93.             </p>
  94.             <p align="center"><br>          
  95.               <?php
  96.                     $grid->gridMostrar();
  97.               ?>
  98.             </p>
  99.           </div>
  100.         </div>
  101.       </div>
  102.       <div style="clear: both; height: 0px"></div>
  103.     </div>
  104.  
  105. </div>
  106. </body>
  107. </html>


lo intente asi y logre que diera como lo necesito


Código PHP:
Ver original
  1. <?php
  2. $conexion = mysql_connect('localhost', 'root','');
  3.  
  4.                     mysql_select_db('Almacenes', $conexion);  
  5.  
  6. $resul=mysql_query("select * from dependencias  order by dependencia");
  7.  
  8. while($row=mysql_fetch_array($resul)){
  9.  
  10. $activo = $row["estado"];
  11.  
  12. //echo  $activo;
  13.  
  14.  
  15. if ("$activo" == "ACTIVO"){
  16.                         $ruta = "imagenes/verde.jpg ";
  17. }else{
  18.                         $ruta = "imagenes/rojo.jpg ";
  19.  
  20. }
  21.  
  22. //echo  "<img src=".$ruta." width='50' height='50' /><br>";
  23. }
  24.  
  25. ?>



y me sale pero al momento de querer meterlo al grid no me sale nada espero me puedan ayudar
  #2 (permalink)  
Antiguo 06/01/2014, 20:35
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: erro con manipulacion de datos en grid

Tu codigo puede reemplazarse por este y, si bien no conozco la clase esa ni se como funciona, a priori, deberia andar:
Código PHP:
Ver original
  1. $resul = mysql_query("select IF(estado=='ACTIVO','<img src=\"imagenes/verde.jpg\" width=\"50\" height=\"50\" />','<img src=\"imagenes/rojo.jpg\" width=\"50\" height=\"50\" />') estado, campo1, campo2, ... , campon from dependencias order by dependencia");
  2.  
  3. while($row=mysql_fetch_array($resul))
  4. {
  5.     echo($row["estado"]);

PD: Nunca uses SELECT * en una consulta, pon siempre los nombres de los campos aunque sea molesto escribir todos
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 07/01/2014, 06:19
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: erro con manipulacion de datos en grid

Cita:
Iniciado por NSD Ver Mensaje
PD: Nunca uses SELECT * en una consulta, pon siempre los nombres de los campos aunque sea molesto escribir todos
no estoy deacuerdo con esto al 100%.
todo depende de que es lo que quiero sacar de la base.
si solo es un select para mostrar los campos en un formulario por que no sacar todo?
por ejemplo un select de paises o ciudades si la tabla tiene el id, nombre seria innecesario poner los campos uno a uno.

en todo caso es condicional el poner el *
  #4 (permalink)  
Antiguo 07/01/2014, 06:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: erro con manipulacion de datos en grid

Es un consejo que se da siempre en BBDD. No es una buena práctica usar el asterisco por varias razones:
- La inmensa mayoría de las ocasiones no usas la totalidad de los datos. En el 99,99% de los casos la cantidad de columnas usadas es al menos una menos de las que la tabla tiene.
- Todo dato leído innecesariamente ocupa espacio tanto en los bloques de datos (recordar que el sistema no lee los datos como lee un texto), como también en el paginado de memoria, el buffer de consultas, y aumenta innecesariamente la cantidad de datagramas transmitidos, con lo que mandas por la red info que no se requiere.
- En el caso de los bloques de datos, mientras más datos inútiles pongas en la consulta, más acceso a disco requiere la lectura, con la consiguiente reducción de performance (por overhead), y más tiempo necesitsa para transmitir el mismo conjunto útil.
- Aumentas la posibilidad de redundancia de datos al usar JOINs, ya que los campos relacionados se duplican (salen una vez por cada tabla).
- Aumentas la inseguridad de datos, al transmitir más información de la estrictamente necesaria.
- Requieres más programación y pruebas por la ambigüedad de las columnas, la imprecisión de los nombres, o bien por errores de sintaxis ocultos detrás del "*", que son inadecuadamente probados.

Por lo demás, es habitual en las empresas de desarrollo (las tres en las que trabajé tenían la misma regla), que las directivas de desarrollo especifiquen que no se use el asterisco sino que se pongan uno a uno los campos.
Una de las razones, por ejemplo, es evitar que determinadas áreas de la empresa cuenten con acceso a datos que no necesitan ni tienen por qué ver.

En definitiva, por más engorroso que te parezca, o más innecesario que puedas suponer, las ventajas a la hora del desarrollo superan siempre con creces lo molesto de tener que indicar uno a uno los campos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/01/2014, 08:47
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: erro con manipulacion de datos en grid

de igual forma es condicional a las necesidades el *
  #6 (permalink)  
Antiguo 07/01/2014, 09:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: erro con manipulacion de datos en grid

No entendí la frase...


Si quieres consultas optimizadas, empieza por olvidate de la existencia del asterisco. Tarde o temprano deberás eliminarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/01/2014, 14:54
 
Fecha de Ingreso: enero-2013
Mensajes: 68
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: erro con manipulacion de datos en grid

bueno pues lo puse asi:
Código PHP:
Ver original
  1. $resul = mysql_query("select IF(estado=='ACTIVO','<img src=\"imagenes/verde.jpg\" width=\"50\" height=\"50\" />','<img src=\"imagenes/rojo.jpg\" width=\"50\" height=\"50\" />') dependencia, responsable, contacto, estado from dependencias order by dependencia");
  2.         while($row=mysql_fetch_array($resul)){
  3.         $ruta2 = $row["estado"];
  4.         }

y mando llamar a $ruta2

Código PHP:
Ver original
  1. $contenido = "<a href='redireccionando.php?DEPENDENCIA={1}'><img src='".$ruta2."'width='50' height='50'/></a>";

pero me sale el error de

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...

xcierto muchas gracias por contestar :D
  #8 (permalink)  
Antiguo 07/01/2014, 14:56
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: erro con manipulacion de datos en grid

que es esa query??????????????????????????????????????????
usa esto

Código PHP:
mysql_query("tu query") or die(mysql_error()); 
  #9 (permalink)  
Antiguo 07/01/2014, 16:46
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: erro con manipulacion de datos en grid

enlinea777 gnzloyo te dio razones validas de porque no usar el *, yo dare una mas extraida del manual de mysql:

Cita:
SELECT * es muy útil para consultas de prueba. No obstante, en una aplicación, nunca debería utilizar SELECT * y después recoger las columnas basándose en su posición. El orden y posición en que las columnas son devueltas no es el mismo si usted añade, mueve, o elimina columnas. Un cambio simple a la estructura de su tabla podría causar que su aplicación falle.
Cita:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...
evidentemente hay un error en la consulta sql, agrega el or die() como se te indico o prueba la consulta en phpmyadmin hasta que logres hacerla funcionar
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #10 (permalink)  
Antiguo 07/01/2014, 17:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: erro con manipulacion de datos en grid

Estás mezclando PHP con SQL. No es lo mismo, y los operadores lógicos, asi como otros elementos no se usan igual.
Código MySQL:
Ver original
  1.     IF(estado = 'ACTIVO', '<img src=\"imagenes/verde.jpg\" width=\"50\" height=\"50\" />', '<img src=\"imagenes/rojo.jpg\" width=\"50\" height=\"50\" />') dependencia,
  2.     responsable,
  3.     contacto,
  4.     estado
  5. FROM dependencias
  6. ORDER BY  dependencia

Pero el problema es también que los escapados generen fallos, y además en MySQL lo único que determina cadenas de texto son los apóstrofes. Si hay comillas dentro, no se tienen en cuenta

Código MySQL:
Ver original
  1.     IF(estado = 'ACTIVO',
  2.  '<img src="imagenes/verde.jpg" width="50" height="50" />', '<img src="imagenes/rojo.jpg" width="50" height="50" />') dependencia,
  3.     responsable,
  4.     contacto,
  5.     estado
  6. FROM dependencias
  7. ORDER BY  dependencia

Por ejemplo:
Código MySQL:
Ver original
  1. mysql> SELECT  '<img src="imagenes/verde.jpg" width="50" height="50" />'ValorTrue, '<img src="imagenes/rojo.jpg" width="50" height="50" />'ValorFalse;
  2. +---------------------------------------------------------+--------------------------------------------------------+
  3. | ValorTrue                                               | ValorFalse                                             |
  4. +---------------------------------------------------------+--------------------------------------------------------+
  5. | <img src="imagenes/verde.jpg" width="50" height="50" /> | <img src="imagenes/rojo.jpg" width="50" height="50" /> |
  6. +---------------------------------------------------------+--------------------------------------------------------+
  7. 1 row in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 08/01/2014, 08:58
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: error con manipulacion de datos en grid

Cita:
$resul = mysql_query("select IF(estado=='ACTIVO','<img src=\"imagenes/verde.jpg\" width=\"50\" height=\"50\" />','<img src=\"imagenes/rojo.jpg\" width=\"50\" height=\"50\" />') dependencia, responsable, contacto, estado from dependencias order by dependencia");
las comillas dobles van escapadas por el mysql_query que las usa no por el sql en si, habria que ver que error devuelve esa consulta, posiblemente algun campo mal escrito o algo asi
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #12 (permalink)  
Antiguo 08/01/2014, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: error con manipulacion de datos en grid

Uno de los errores ya lo mencioné arriba: En MuSQL no existe el operador "==" como comparador, eso es PHP, no MySQL.
En MySQL las comparaciones se hacen con "=". Por ende, la query está mal escrita en la condición de la función IF() que tiene ese SELECT.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:51.