¿Cómo recuperar los campos y sus tipos de tablas MySQL?

jose
22 de Octubre del 2005
Hola, amigos.

Necesito que me informéis de cómo puedo obtener desde PHP la estructura de una tabla (nombre de sus campos, tipo y dimensión) en MySQL.

Si fuese genérico para obtener esa información de cualquier base de datos, magnífico.

Muchas gracias por anticipado y saludos.

gustigus
22 de Octubre del 2005
AQUI TE ENVIO UN SCRIPT EN DONDE HAGO UNA BUSQUEDA DE ACUERDO A UN CAMPO "SEARCH" DE UN SITIO

EN EL MISMO CONSULTO Y EXTRAIGO DATOS DE UNA BASE MYSQL , PUNTUALMENTE DE LA TABLA FAQ Y ENVIO LOS DATOS A UNA TABLA PARA SER MOSTRADOS.
CUALQUIER COSA A TU DISPOSICION
-----------------------------

<?PHP
// REALIZO LA CONEXION AL SERVER MYSQL
$myconn = mysql_connect("localhost","USUARIO","CONTRASEÑA");
if (! $myconn) {
echo "Can´t open MySql Server";
exit();
}


// CONECTO AHORA A LA BASE DE DATOS
If (! @mysql_select_db("BASEDEDATOS",$myconn)){
echo "Can't open database...";
exit();
}

// TRAIGO EL VALOR DEL CUADRO DE TEXTO (SEARCH) y LO GUARDO EN $CONSULTA
$consulta = $HTTP_GET_VARS["txtbusca"]; // $consulta = $_GET["txtbusca"]; (despues de php 4.0)
$busca = $consulta; // guardo el resultado para imprimirlo al final
echo "<BR>";

// SE VERIFICA QUE EL CAMPO DE BUSQUEDA NO ESTE VACIO
if (strlen($busca)==0) {
echo "Please enter a valid date";
exit();
}

// CON ESTA FUNCION ARMO UN VECTOR CON LAS PALABRAS INGRESADAS POR EL USUSARIO
$consulta = split(" ",$consulta);


// TOMO EL VALOR DE LOS BOTONES RADIO Y BIFURCO EL CODIGO DE ACUERDO A SU VALOR
$quehago = $HTTP_GET_VARS["elige"];


// POR LAS RESPUESTA POSITIVA EJECUTO EL CODIGO faq, POR LA NEGATIVA EL products
if ($quehago == "faq") {


//********************** AQUI COMIENZA EL CODIGO PARA LA CONSULTA A LA TABLA faq ***********************

// ARMO LA SENTENCIA SQL DE CONSULTA EN LA TABLA
$sql = "SELECT * FROM faq WHERE ";
for($a = 0; $a < count($consulta); $a++){
if ( $consulta[$a] != " "){
If ($a != 0){
$sql.="OR ";
}
$sql.="pregunta LIKE '%".$consulta[$a]."%'";
}
}
//echo $sql;
// EJECUTO LA CONSULTA ARMADA ANTES EN LA BASE

$result = mysql_query($sql);
if (! $result){
echo "query fatal error";
exit();
}

// CON LA FUNCION mysql_fetch_array, IMPRIMO LOS RESULTADOS

echo "The Replies for : " .$busca."are:";
echo "<BR>";

$cont = 0; // Controla si hay màs de un registro
while ($row = mysql_fetch_array($result)){
while($cont<1){
// La primera vez cont=0 --> armo la tabla y cargo los titulos
echo "<BR>";
echo "<table width=700 border=1 cellspacing=1 cellpadding=0 style= border: 1px solid; border-color: #6D6D6D > ";
echo "<TR> <td width=50% align left><font class="txtTitulo">".
"Question" . "</td>" . "<td width=50% align left><font class="txtTitulo">".
"Reply". "</TR> " ;
$cont++ ;

} //cierro el while del cont
//ya cont vale màs de Uno entonces armo los registros siguientes
echo "<TR> <td width=50% align left><font class="txtPregunta">".
$row["pregunta"] . "</td>" . "<td width=50% align left><font class="txtRespuesta">".
$row["respuesta"] . "</TR> " ;
} //cierro el while general

if ($cont >0) { // si es mayor a cero la tabla fue abierta, entonces hay que cerrarla
echo"</table>";
}
else{
echo "<BR>";
echo "<TR> <td width=50% align left><font class="txtTitulo">"."No results were found for your search. Try changing some of the words in your query" . "</td></TR> " ;
}
}

jose
22 de Octubre del 2005
Muchas gracias gustigus, pero lo que necesito es recuperar la estructura de la tabla (nombre de los campos, tipo y dimensión), no el contenido.

De todas formas, agradezco tu interés.

GUSTIGUS
22 de Octubre del 2005
TE RECOMIENDO ESTE FORO WWW.TECTIMES.COM
ENTRA A FOROS Y LUEGO A WEBMASTERS

HAY UN CHICO CON NICK NICOLASPAR Y OTRO CON NICK ALANCITO QUE SABEN MUCHISIMO QUIZAS ELLOS TE PUEDAN AYUDAR, SON DE CONTESTAR Y RAPIDO

carlos guerra
22 de Octubre del 2005
esta es una solucion posible espero te sirva es en php 5



<?php

/**
*
*
* @version $Id$
* @copyright 2005
**/



$conexion = mysql_connect("localhost","root","");

if (!$conexion)

{

echo "error al conectarse al servidor mysql";
exit();

}


if (!mysql_select_db("mynwind",$conexion))
{
echo "No se pudo conectar correctamente con la Base de datos";
exit();
}
?>
<SELECT name="empleado">
<?php
$query = "show me all tables "
//Bucle WHILE para mostrar los resultados...

while ($row = mysql_fetch_assoc($query))
{

?>

<OPTION value="<?php echo $row[\'EmployeeID\'] ?>"><?php echo $row[\'FirstName\']." ".$row[\'LastName\'];?></OPTION>

<?php
}
?>


</SELECT>
<?php
//genera la lista de tablas
$res = mysql_list_tables ("mynwind",$conexion);

$i = 0;

while ($i < mysql_num_rows ($res))
{
$tb_names[$i] = mysql_tablename ($res, $i);

$tablas = strtoupper($tb_names[$i]);
?>
<TABLE border="1" bgcolor="#E1E1E1">
<tr><td colspan="3" align="center"><?php echo $tablas ;?></td></tr>
<tr><td>Campo</td><td>Tipo</td><td>Size</td></tr>
<?php
$select = "SELECT * FROM ". $tb_names[$i];

$result = mysql_query($select);

$fields = mysql_num_fields($result);

$a = 0;
$table = mysql_field_table($result, $a);
//echo "Your \'".$table."\' table has ".$fields." fields and ".$rows." records <BR>";
//echo "The table has the following fields <BR>";
while ($a < $fields)
{

$type = mysql_field_type ($result, $a);

$name = mysql_field_name ($result, $a);

$len = mysql_field_len ($result, $a);
// $flags = mysql_field_flags ($result, $i);
?> <tr><td><?php echo $name?></td><td><?php echo $type;?></td><td><?php echo"(".$len.")";?></td></tr>
<?php $a++;
}
echo "<br>";
$i++;
}


?>