Foros del Web » Programando para Internet » PHP »

Ayudenme con conexión a base de datos

Estas en el tema de Ayudenme con conexión a base de datos en el foro de PHP en Foros del Web. Lo que quiero hacer es que se muestre en pantalla sólo los registros de la base de datos de una determinada categoría. Ejemplo, que salgan ...
  #1 (permalink)  
Antiguo 15/06/2005, 06:40
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 12 años, 9 meses
Puntos: 3
Ayudenme con conexión a base de datos

Lo que quiero hacer es que se muestre en pantalla sólo los registros de la base de datos de una determinada categoría. Ejemplo, que salgan sólo los registros donde la categoría sea "rock". Este es el código que he usado, pero me da error en la línea del "while", soy totalmente novata en php así que cualquier cosa puede estar mal.

---------------------------------------------------------------------
<?
mysql_pconnect("localhost","","")
or die("ERROR: No se ha podido conectar a la base de datos!");

mysql_select_db("mibd");

$result = mysql_query(" SELECT CATEG AS categ, DESC AS desc, NUM AS num, URL AS url, FECHA AS fecha FROM gal WHERE CATEG = 'nombre_categoria');

while($row = mysql_fetch_array($result)) {
print "<a href='".$row['url']."'>".$row['num']." ".$row['desc']."</a> ".$row['fecha']."\n";
}
?>

------------------------------------------------------------

GRACIAS!!!
  #2 (permalink)  
Antiguo 15/06/2005, 06:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
mmm ¿debemos adivinar el error??? (lee el enlace de mi forma).

- Primero... no usas un usuario para tu conexión... es muy extraño... y te sugiero no usar conexiones persistentes... traducido: cambia mysql_pconnect() por mysql_connect(): www.php.net/mysql_connect

- Tu query... no debe darte error... pero "es raro" hacer CAMPO AS campo... prueba con esto:
Código:
SELECT CATEG, DESC, NUM, URL, FECHA FROM gal WHERE CATEG = 'nombre_categoria'
y cambiando a mayúsculas todos los $row posteriores (ejemplo: $row['NUM'])... claro que lo mejor sería no usarás campos con mayúsculas ... pero bueno... eso suponiendo no consultas todos los campos... pero si es mayoria mejor usa:
Código:
SELECT * WHERE CATEG = 'nombre_categoria'
con esto último consultas todos los campos... leete un tutorial de SQL..

- ahora... 'nombre_categoria'??? ... en su defecto cambialo por 'rock' que es lo que quieres buscar... pero eso ha de ser variable supongo... entonces deberá venir de un formulario ¿no?... ... busca sobre formularios... pero será:
Código PHP:
$result mysql_query(" SELECT como_quieras FROM gal WHERE CATEG = '".$_POST['name_del_textbox']."'");
// ojo que "como quieras" lo puse por los comentarios anteriores :-D
// 'name_del_textbox será... eso... 
busca sobre formularios... www.php.net/variables.external

- Quizá igual necesites hacer tu condicional de si hubo resultados... sería lo ideal.. pero ejor irte con calma... definitivamente lee el enlace de mi firma... y busca sobre buscadores y formularios en general... cheka las funciones de php que desconoscas en www.php.net y... cuando consultes algo menciona los errores EXACTOS que tienes...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 15/06/2005, 07:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Supongo te servirá: http://www.forosdelweb.com/showpost....35&postcount=7

.. solo para que le heches un ojo a el tema completo: http://www.forosdelweb.com/f18/buscador-304056/ ... es cansado estar respondiendo así a cada rato...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 15/06/2005, 07:21
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 12 años, 9 meses
Puntos: 3
Cita:
Iniciado por jam1138
- Primero... no usas un usuario para tu conexión... y te sugiero no usar conexiones persistentes...

- pero si es mayoria mejor usa:
Código:
SELECT * WHERE CATEG = 'nombre_categoria'
con esto último consultas todos los campos... leete un tutorial de SQL..

- entonces deberá venir de un formulario ¿no?... ... busca sobre formularios...
Bueno, me has ayudado en muchas cosas, pero en otras me has puesto algunas cosas errónes, pero he conseguido arreglarlo así:
-------------------------
<?

mysql_connect("localhost","","")
or die("ERROR: No se ha podido conectar a la base de datos!");

mysql_select_db("mibd");

$result = mysql_query("SELECT * FROM gal WHERE CATEG = 'nombre_categoria'");

while($row = mysql_fetch_array($result)) {
print "<a href='".$row['URL']."'>".$row['NUM']." ".$row['DESC']."</a> ".$row['FECHA']."\n";
}
?>
---------------
El error estaba en la línea $result = mysql_query("SELECT * FROM gal WHERE CATEG = 'nombre_categoria'"); que no había puesto unas ".
Lo de no usar usuario es porque estoy probando en local y no lo necesito, pero cuando lo suba pondré nobody. Gracias por SELECT * WHERE CATEG = 'nombre_categoria' aunque me lo dieras mal, le falta "FROM gal" (ya te dije que era novata, , me estoy leyendo todos los manuales que encuentro, "bueno pero tranquilito, eh?" como dice el niño de aquí no hay quien viva).
No viene de un formulario, es simplemente para que aparezcan los registros ordenados por categorías.

Y ahora, dos preguntas más, me salen los resultados uno detrás de otro, yo quiero que salgan uno debajo de otro, como una lista (voy a buscarlo, pero quizás puedas ayudarme) y dos, si meto la fecha manualmente en la base de datos, ejemplo: 15/06/05, después podré ordenar los registros por fechas.

Muchas gracias por tu ayuda!!!
  #5 (permalink)  
Antiguo 15/06/2005, 07:33
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
JA!... cierto.. en la borradera me fuí de largo ... .. lo de las comillas lo noté cuando te puse el último código... y de ser ese el único error DEBIÓ de mostrarte un error y se te hubiera respondido con una línea ... si hubieses iluminado código quizá y hasta lo habrías visto... (para eso ocupa las etiquetas [ PHP] y [ /PHP] --sin espacios--)...

Respondiendote...
1) Solo imprime un salto de línea HTML .. esto es un "<br>" al final de cada registro... de hecho cambia ese "\n" por "<br>" y deberá quedar...

2) SQL cuenta con muy buenas funciones para el manejo de fecha... pero deberás ocupar campos tipo DATE ó DATETIME para ello... y el formato de dichos campos será YYYY-MM-DD ... deberías empezar a manejarlos.. no solo SQL maneja este formato.. PHP también y te aseguro la mayoria (por no decir todos) de los lenguajes de programación...

Te recomiendo AMPLIAMENTE los artículos de www.mysql-hispano.org ... para cuestiones de SQL, claro...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 15/06/2005, 07:51
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 12 años, 9 meses
Puntos: 3
Gracias por el "<br>", va estupendo, como yo quería. Por ahora no tengo grandes exigencias como puedes ver, cuando vaya aprendiendo algo más, pues ya hará preguntas más complicadas.

Sobre lo de la fecha: me lo voy a empollar, imagino que después puedo hacer que aparezca en el formato que yo quiera, no? He puesto un campo "date" con 10 carácteres, not null , es correcto? Me quedo con la web que me has dado de mysql y me la voy a mirar. Muchas gracias.
  #7 (permalink)  
Antiguo 15/06/2005, 07:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Para dar formato solo usas la función DATE_FORMAT() ... ... todo eso viene en el enlace que te dejé (ve el articulo de "extraer datos ...")

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 15/06/2005, 08:00
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
ve porque es importante buscar antes: http://www.forosdelweb.com/showpost....81&postcount=9

... no siempre se va a contestar así... y hay más... solo recordé eso :-p

Espero te sirva
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 15/06/2005, 08:00
 
Fecha de Ingreso: marzo-2004
Ubicación: gualeguauychu
Mensajes: 25
Antigüedad: 13 años, 8 meses
Puntos: 3
$con = mysql_connect("localhost","usuario","password");
mysql_select_db("nombredelabd",$con);
$result=mysql_query("select * FROM tabla ORDER BY fecha DESC ",$con);
primero lo primero
o bien visita el foro en viacero hay algunos ejemplos
www.viacero.com
  #10 (permalink)  
Antiguo 15/06/2005, 08:05
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... no hay información demás ...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 15/06/2005, 09:47
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 12 años, 9 meses
Puntos: 3
He apuntado lo de las fechas, tanto el enlace donde lo explicas jam1138 como el código que me has dejado chacalito, gracias a los dos.

Ahora tengo otra pregunta, soy un coñazo, lo sé. Quiero usar el mismo archivo en todas las páginas y definir la variable "categoría" en cada página como me interese. He hecho esto pero no me funciona (no me sale nada):

------------ conex.php ----------------
Código PHP:
<?
mysql_connect
("localhost","","")
or die(
"ERROR: No se ha podido conectar a la base de datos!");

mysql_select_db("mibd");

$result mysql_query("SELECT * FROM gal WHERE CATEG = '$cat'");

while(
$row mysql_fetch_array($result)) {
print 
"<a href='".$row['URL']."'>".$row['NUM']." ".$row['DESC']."</a> ".$row['FECHA']."<br>";
}
?>
----------------------------------------

Y después he puesto en mi página esto:
<?php
include("conex.php");
$cat=Rock;
?>

Lo he hecho por intuición así que está mal seguro, porque no sé cómo definir una variable bien. Lo que quiero es tener conex.php como base y después en cada página definir la variable $cat para que sólo me salgan los registros de esa categoría, espero haberme explicado bien. Un saludo y gracias por vuestra ayuda!!!!
  #12 (permalink)  
Antiguo 15/06/2005, 11:49
Avatar de ldp
ldp
 
Fecha de Ingreso: marzo-2005
Ubicación: Por fin, en mi nueva casa!
Mensajes: 617
Antigüedad: 12 años, 9 meses
Puntos: 3
Ya lo solucioné jam1138 gracias a un post tuyo de 2004, jeje. Era:

<?php
$cat="Amateur";
include ('conex.php');
?>

y en conex.php:

$result = mysql_query("SELECT * FROM gal WHERE CATEG = '$cat' ORDER BY FECHA DESC ");

Gracias a los dos por solucionarme las dudas!!!! MUCHAS GRACIAS DE VERDAD!
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 18:54.