Pegar datos de Base de Datos con PHP

Estoy trabajando con una pagina web pero tengo el siguiente problema:

Tengo un menú, con un submenú, cuando selecciono una opción por ejemplo Mexico, tengo en una base de datos todos los Nombres pertenecientes a Mexico entre otras opciones como países en este ejemplo.

Yo puse manualmente sin la base de datos en el código del programa todos los Nombres pertenecientes al País y así manual para todas las demás opciones.

Pero cuando agrego un nuevo nombre tengo que modificar mi código.

Que herramienta me podrías orientar para usar, para que con la base de datos al tocar una opción busque en la base de datos todos lo referente con el nombre y si agrego nombres estos aparezcan sin la necesidad de modificar mi código.

Se conectarme con la base de datos estoy usando MySQL, pero no se con que puedo hacer con lo de arriba mencionado.

Estaba pensando usar matrices pero que opinas que es mejor para hacerlo.

Yo se que mi método para la pagina es de un Principiante pero quiero mejorar eso.

1 respuesta

Respuesta
1

Desde ya que puedo ayudarte, he programado muchas webs con php y mysql pero no entiendo del todo como ayudarte sin ver nada, sería conveniente agregarme algo de código no todo pero si algo de ejemplo.

A groso modo, puedo ayudarte de esta manera:

<?
$query="SELECT * FROM ...";
$res=mysql_query($query);
while($row=mysql_fetch_assoc($res)){
?>
<li><?=row[nombre]?></li>
<?
}
?>

Capaz esto no te sirva pero una vez que vea tu código te voy a poder ayudar mejor

Ya logre algo pero sigue incompleto este es mi código:

$resultado = mysql_query("SELECT * FROM tabla WHERE area = '$pais'");
while ($fila = mysql_fetch_array($resultado, MYSQL_NUM)) {
echo '<table>';
echo '<tr>';
echo '<th>';
printf($fila[0]);
echo '</th>';
echo '<th>';
printf($fila[1]);
echo '</th>';
echo '<th>';
printf($fila[2]);
echo '</th>';
echo '</tr>';
echo '</table>';
}
mysql_free_result($resultado);

Ejemplo de la tabla que tengo

Usuario Estado País

usuario1 estado1 pais1

usuario2 estado2 pais1

usuario3 estado3 pais2

usuario4 estado3 pais2

usuario5 estado1 país3

$país es la variable que escogeré de acuerdo a un menu mandada por GET

en mi código me busca todos los países en la tabla, pero lo que quiero es que cuando mande dos variables una $país y otra $estado me busque todos los estados de acuerdo a la variable $estado y que estén dentro de la otra variable $país, es decir si selecciono pais2 y estado3 me pegue en la tabla el usuario3 y usuario4.

Ahorita como esta mi código cuando selección pais1 me pegua usuario1 y usuario2.

Y también me ayudarías a pegarlo en vez de un <table> en un <ul> para modificarl los estilos con css. Espero haberme explicado bien.

disculpa en el código de arriba en vez de "área" ("FROM tabla WHERE área" ) es "país", para evitar confusiones

No se como se llaman los campos en la base de datos por lo que vi el campo área tiene el país y no se como se llama el campo que contiene el estado pero en el ejemplo supuse lo siguiente.
En la tabla tenes un campo que se llama área que tiene el país y uno que se llama estado que contiene el estado

Modificado si no es así

$where=array();
// si viene la variable pais agrego al array where "area ='$pais'"
if($pais!=""){
 $where[]=" area = '$pais'";
}
// si viene la variable estado agrego al array where "estado ='$estado'"
if($estado!=""){
 $where[]=" estado = '$estado'";
}
// count me dice cuantos elementos hay en el array where
// y me aseguro que haya mas de uno en el array para separarlos por AND 
$q="SELECT * FROM tabla ".(count($where)>0?"WHERE ".implode(" AND ",$where):"");
// para entender como funciona el codigo hace echo $q;
//echo $q;
$resultado = mysql_query($q);
//imprimo el encabezado de la tabla
echo "<table>
 <tr>
 <th>Usuario</th>
 <th>Pa&iacute;s</th>
 <th>Estado</th>
 </tr>
 ";
// imprimo un tr por cada fila 
while ($fila = mysql_fetch_array($resultado, MYSQL_NUM)) {
 echo "<tr>
 <td>{$fila[0]}</td>
 <td>{$fila[1]}</td>
 <td>{$fila[2]}</td>
 </tr>
 ";
}
//cierro la tabla
echo "</table>";
mysql_free_result($resultado);

podes aplicarle ccs a una tabla. Y para estos casos es mas recomendable que un <ul >

Cualquier inquietud no dudes en volver a preguntarme

Contame como te fué

Ando un poco confundido pondré como esta mi código:

$where = array();
if ($menu!=""){
$where[] = "$menu";
}
if ($tipo!=""){
$where[] = "$tipo";
}
$q = ("SELECT * FROM tbl_documentos").(count($where)>0?"WHERE ".implode(" AND ",$where):"");
echo $q;
echo "<table> <tr> <th>Tipo1</th> <th>Area</th> <th>Tipo</th> </tr> ";
while ($fila = mysql_fetch_array($resultado, MYSQL_NUM)) {
echo "<tr> <td>{$fila[0]}</td> <td>{$fila[1]}</td> <td>{$fila[2]}</td> </tr> ";}
echo "</table>";
mysql_free_result($resultado);

Las columnas de mi tabla se llaman, las primera "área", la segunda "tipo" la tercera "descripción", la tabla se llama tbl_documentos.

La variable $menu hago referencia a la columna "área",y la variable $tipo le hago referencia a la columna "tipo".

Bueno así como tengo mi código le agregue echo $q como me mencionabas, y reconoce bien las dos variables $menu y $tipo, pero abajo no me imprime las variables $fila[0], $fila[1], $fila[2]

Voy a hacerte un ejemplo que funcione perfecto con tu base de datos,
podrías describirme:

. El nombre de la tabla

. El nombre de todos los campos de la tabla

Con esto reescribo tu código para que funcione.

la tabla se llama tbl_documentos, y los campos son:

- área

- tipo

- id_document

- description

- start_date

- review

muchas gracias por tu ayuda

Disculpa por no haber entendido bien el código, pero ya lo solucione me falta una linea de código para mandar llamar la base de datos. Te muestro cual linea me faltaba.

$resultado = mysql_query("SELECT * FROM tbl_documentos WHERE area = '$menu'");escribe tu código aquí

Pero tengo otra pregunta, agregue un AND para comparar otra variable pero no me funciona, no se si se puede hacer o este mal mi código dejame te muestro lo que agregue:

$resultado = mysql_query("SELECT * FROM tbl_documentos WHERE area = '$menu' AND tipo = '$tipo' ");

Esta mal mi código o de plano lo que hice no se puede hacer así.

Este código esta bien

$resultado = mysql_query("SELECT * FROM tbl_documentos WHERE area = '$menu' AND tipo = '$tipo' ");

para poder hacerte el ejemplo necesito terminar de entender algo:
¿En la tabla tbl_document
el campo área tiene el país y el campo tipo tiene los estados?

¿Por otro la las variables $país y $estado las llenas por GET?
Ahora agregaste la variable $tipo, eso explícamelo.
El ultimo código que escribiste es una consulta sql valida
Para saber que le esta llegando al mysql a modo de depurar hace lo siguiente:

$query="SELECT * FROM tbl_documentos WHERE area = '$menu' AND tipo = '$tipo' ";
echo $query;
$resultado = mysql_query($query);

Muchas gracias el código que me diste al principio si me funciono y el código que le agregue también estaba bien, pero no se porque mi maquina de repente reconoce bien el código y después ya no, como lo tenia no me funcionaba pero otro día lo volví a checar sin modificar nada y me funciono, no es la primera vez que me pasa pero en pocas ocasiones rara la vez no reconoce el código, aparte de que tengo problemas con la lentitud pero ya estoy pensando en cambiarla por otra.

Gracias y repito una vez mas tu código me funciono muy bien, ya ahorita estoy trabajando bien y agregando nuevas cosas.

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas