pereza, madre de la inventiva

Estaba haciendo un select para el trabajo, a la hora de imprimir el output para flash me di cuenta que eran 34 columnas, puff!, iba por la segunda cuando me puse a buscar una forma más óptima para hacerlo

Para los que no saben de que hablo, generalmente las impresiones del resultado se hacen asi.


  // (campo + contador) = campoValor & (otroCampo + contador ) = (otroCampoValor)
  echo "&nombre$contador=" . $r["campo"] . "&otroCampo$contador=" . $r["otroCampo"]."&";

lo del contador es por si se ocupa imprimir mas de un juego de registros, el resultado seria nombre0=algo&otrocampo=otroValor&...

Estuve un rato junto con roger ( un compa de trabajo ), hasta que logramos imprimir el nombre del campo ( en la base de datos ) junto con el valor sin hacer mucho código.


//query (devuelve solo 1 registro)
$result = mysql_query("Select * from kadagb where id = 1") or die ("&output=error&msg=".mysql_error());
//si hay registros, que los imprima.
if( mysql_num_rows($result) > 0){
  //mesaje de ok para flash =)
  $output="&output=ok&";
  while ($myrow = mysql_fetch_row($result)) {
    $largo = sizeof($myrow);
    for ($i=0 ; $i < $largo ; $i++ ){
      //output = output + nombreCampo + "=" + valorCampo
      $output .= mysql_field_name($result,$i) . "=". utf8_encode($myrow[$i]) . "&";
    }
  }
}
echo $output;

mysql_field_name recibe dos parámetros, el primero es el resultado de la base de datos, junto con el numero de columna, esto lo resolvemos facilmente debido a que lo estamos metiendo en un loop, con un contador hasta que se sobrepase el largo del array.
el ejemplo devuelve está para solo un registro, pero no debe haber problema el agregarle un contador junto al nombre del campo

nada, ahi queda por si a alguien le sirve.

1 Comments

roger said:

orale