Comunidad de diseño web y desarrollo en internet online

Necesito ayudaaa!! con php mysql (base de datos)

Citar            
MensajeEscrito el 04 Abr 2011 04:27 am
Buaaaaaa!!! llevo 3 dias queriendo conectarme a la base de datos de mi servidor (y hasta de paga es), segun tiene php5, soy novato, no se mucho y me meti en problemas con php y mysql, les dejo los escripts y el error que me da, ECHENME LA MANO PORFITAS, esto exageradamente descesperado jejejeje.. Gracias por sus atenciones.

el html es este:

Código HTML :

<head>
  <title>..::Directorio::..</title>
</head>

<body>

<h1>&nbsp;<p>Bienvenido al directorio de m&eacute;dicos y especialistas.</p></h1>

  <form action="resultados.php" method="get">
    Elige Tipo de Búsqueda:<br>
    <select name="tipobusqueda" size="1">
      <option value="especialidad">Especialidad
      <option value="delegacion">Delegacion/Municipio
      <option value="direccion">Direcci&oacute;n
    </select>
    <br>
    Escribe Término Búsqueda:<br>
    <input name="terminobusqueda" type=text>
    <br>
    <input type=submit value="Buscar">
</form>

</body>




<html>
<head>
<title>Resultados de la B&uacute;squeda en el directorio</title>
</head>
<body>
<h1>Resultados de la Búsqueda en el directorio</h1>
<?
trim ($terminobusqueda);
if (!$tipobusqueda || !$terminobusqueda)
{
echo "No has introducido los detalles de la busqueda. Por favor vuelve e inténtalo de nuevo.";
exit;
}

$tipobusqueda = addslashes($tipobusqueda);
$terminobusqueda = addslashes($terminobusqueda);

@ $db = mysql_pconnect("localhost", "user", "password");

if (!$db)
{
echo "Error: No se ha podido conectar a la base de datos. Por favor, prueba de nuevo más tarde.";
exit;
}
$link = mysql_connect("localhost", "user", "password");
mysql_select_db("directorio", $link);
mysql_query("SELECT * FROM doctores", $link);

$consulta = "select * from doctores where ".$tipobusqueda." like '%".$terminobusqueda."%'";
$resultado = mysql_query($consulta);
$num_resultados = mysql_num_rows($resultado);
echo "<p>Número de especialistas encontrados: ".$num_resultados."</p>";

for ($i=0; $i <$num_resultados; $i++)
{
$row = mysql_fetch_array($resultado);
echo "<p><strong>".($i+1).". id ";
echo stripslashes($row["id"]);
echo "<br>Especialidad: ";
echo stripslashes ($row["especialidad"]);
echo "<br>Nombre: ";
echo stripslashes($row["nombre"]);
echo "</strong><br>Delegación/Municipio: ";
echo stripslashes($row["delegacion"]);
echo "<br>Dirección: ";
echo stripslashes($row["direccion"]);
echo "<br>Telefonos: ";
echo stripslashes($row["telefonos"]);
echo "<br>Promoción: ";
echo stripslashes($row["descuento"]);
echo "<br>Pagina web/Correo electronico: ";
echo stripslashes($row["web"]);
echo "</p>";
}
?>
</body>
</html>


los errores son los siguientes, en forma resumida:

Resultados de la Búsqueda en el directorio

No has introducido los detalles de la busqueda. Por favor vuelve e inténtalo de nuevo


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u113633/domains/redmedicafamiliar.com.mx/public_html/resultados.php on line 31

Número de especialistas encontrados:

Y NO ME DEVUELVE NAAADA DE RESULTADOSSSS!!


porfavoooor si ustedes me ayudan, recibiran un favor grandisimo de Dios.....

Por vantron

3 de clabLevel



 

2009

msie8
Citar            
MensajeEscrito el 04 Abr 2011 06:01 pm
Haber debo entender que 1 el segundo código corresponde a resultados.php, tomando eso como premisa,

1
El primer error es que pasas por metodo GET tus variables a resultados.php, pero esta no los recoge, el hecho de declara variables con los mismos nombres que los campos de tu form no hace que recojan los valores que se han enviado a la pagina para esto debes hacer algo como

Código PHP :

$variable = $_GET['nombre_de_variable_enviada'];
.

2
Quiero pensar que en esta instruccion

Código PHP :

@ $db = mysql_pconnect("localhost", "user", "password");
Estas reemplazando esas cadenas de texto por los respectivos valores de conexión a tu Base de Datos, eso para empezar, luego si ya estableciste una conexión permanente por qué generas una segunda conexion, esto es en

Código PHP :

$link = mysql_connect("localhost", "user", "password");
esta linea no era necesaria despeus de haber declarado la primera.

3
Cual es el propósito de hacer un query que no podrás emplear más adelante, esto en

Código PHP :

mysql_query("SELECT * FROM doctores", $link);
si esto no lo igualas a una variable te será imposible usar ese recurso más adelante o incluso inmediatamente.

4
Este error

Código :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u113633/domains/redmedicafamiliar.com.mx/public_html/resultados.php on line 31
Te esta indicando claramente que el argumento suministrado para mysql_num_rows() no es un resultado valido de una consulta MySQL, el error tiene su inicio en la origen en el punto que generas el query el cual a su vez hace referencia a 02 variables que no han sido correctamente definidas $tipobusqueda y $terminobusqueda (ver punto 1 de esta rpta.)

5
Existe una manera mas eficiente de mostrar los resultados de una consulta, si tomamos como premisa que esta se ejecuto correctamente, primero verificamos que existan resultados en nuestra consulta y luego los listamos

Código PHP :

$q_A = "SELECT * FROM Tabla WHERE campo='valor'";
$A = mysql_query($q_A) or die (mysql_error()); 
/* Ojo con la parte de" or die (mysql_error())" esto hará que si hay un error en nuestra sentencia MySQL el script se detenga y nos muestre cual es el error en la misma de manera inmediata */
$n_A = mysql_num_rows($A); /* Obtenemos el numero de filas resultado */
if ($n_A>0) { /* Establecemos que solo ejecute el listado si hay al menos 1 fila */
$r_A = mysql_fetch_assoc($A); /* Enviamos el cabezal de lectura a la siguiente fila de la matriz en este caso como es la primera vez que se ejecuta lo enviamos a la primera posición.
Usamos fetch_assoc pq asocia los nombres de las columnas resultado de nuestra consulta con los key para acceder al array de resultado */
$i=0; /* Creamos una variable numerica igual a 0 para que haga las veces de contador */
do { /*Iniciamos el bucle do { .. } while ( condicion ); */
$i++; Aumentamos en 1 el contador
echo $i." - ".$r_A['columna0']." - ".$r_A['columna0']." - ".$r_A['columna0']." - ".$r_A['columna0']."<br/>";
} while ($r_A = mysql_fetch_assoc($A));
/* Al estabelcer esta igualda en la sentecia, cuando el cabezal llegue al final del array esta sentecia arrojara como valor FALSE dando por concluido nuestro bucle. */
} else {
echo "La búsqueda no arroja resultados.";
};
Espero que estos datos te sean de utilidad, pruebalos y nos cuentas como te fue.

COPY, PASTE, PLAY AND ENJOY

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 06 Abr 2011 06:21 am
Si perdon, por no ponerlo en una caja de codigo y como dices el segundo es el codigo en php, el GET lo puse por k originalmente traia el POST aun k crei k ese era el problema olvide cambiarlo de nuevo, bueno esa es una, las claves de acceso a la base si las pongo segun la informacion k me da mi servidor al crear la db, las conservo yo si las kieres te las mando por mp junto con los archivos para k les des una chekadita, luego la linea $LINK= mysql_connect, pero queria estar seguro que si se estaba conectando a la base de datos, jejeje como veras soy muy nuevo en esto pero me gusta y mucho. el codigo PHP original era este antes de comenzar a hacer un verdadero desastre:

Código PHP :

<?
  trim ($terminobusqueda);
  if (!$tipobusqueda || !$terminobusqueda)
  {
     echo "No has introducido los detalles de la busqueda.  Por favor vuelve e inténtalo de nuevo.";
     exit;
  }

  $tipobusqueda = addslashes($tipobusqueda);
  $terminobusqueda = addslashes($terminobusqueda);

  @ $db = mysql_pconnect("localhost", "root", "contraseña");

  if (!$db)
  {
     echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
     exit;
  }

  mysql_select_db("Base_de_datos");
  $consulta = "SELECT * FROM tabla where ".$tipobusqueda." like '%".$terminobusqueda."%'";
  $resultado = mysql_query($consulta);

  $num_resultados = mysql_num_rows($resultado);

  echo "<p>Número de resultados: ".$num_resultados."</p>";

  for ($i=0; $i <$num_resultados; $i++)
  {
     $row = mysql_fetch_array($resultado);
     echo "<p><strong>".($i+1).". id: ";
     echo stripslashes($row["id"]);
     echo "</strong><br>especialidad: ";
     echo stripslashes($row["especialidad"]);
     echo "<br>nombre: ";
     echo stripslashes($row["nombre"]);
     echo "<br>telefono: ";
     echo stripslashes($row["delegacion"]);
     echo "<br>delegacion: ";
     echo stripslashes($row["direccion"]);
     echo "<br>direccion: ";
     echo stripslashes($row["telefono"]);
     echo "<br>descuento: ";
     echo stripslashes($row["descuento"]);
     echo "<br>web: ";
     echo stripslashes($row["web"]);
     echo "</p>";
  }
?>

ahora otras perguntas, que hago con el codigo que me mandaste? y ¿Si esta bien el codigo en HTML del formulario (los metodos de envio y eso)!!!! o que debo cambiar, estoy algo confundido jejeje Muchas gracias por tu respuesta, te lo agradesco enormemente!!

Por vantron

3 de clabLevel



 

2009

msie8
Citar            
MensajeEscrito el 06 Abr 2011 08:27 am
Para hacerla mas sencillo y rápido primero te posteo como debe quedar tu código y explico más abajo

Código PHP :

<?php
  $terminobusqueda = trim($_GET['terminobusqueda']);
  $tipobusqueda = $_GET['tipobusqueda'];

  if (!isset($tipobusqueda) || !isset($terminobusqueda))  { 
     echo "No has introducido los detalles de la busqueda.  Por favor vuelve e inténtalo de nuevo."; 
     exit(); 
  } 
 
  $tipobusqueda = addslashes($tipobusqueda); 
  $terminobusqueda = addslashes($terminobusqueda); 
 
  $db = @mysql_pconnect("localhost", "root", "contraseña"); 
 
  if (!$db)  { 
     echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde."; 
     exit(); 
  } 
 
  mysql_select_db("Base_de_datos"); 
  $consulta = "SELECT * FROM tabla where ".$tipobusqueda." like '%".$terminobusqueda."%'"; 
  $resultado = @mysql_query($consulta) or die();  
  $num_resultados = @mysql_num_rows($resultado); 

  echo "<p>Número de resultados: ".$num_resultados."</p>"; 

  if ($num_resultados>0) {
    echo "<table><thead><tr><th>Id</th><th>Especialidad</th><th>Nombre</th><th>Telefono</th><th>Delegacion</th><th>Direccion</th><th>Descuento</th><th>Web</th></tr></thead><tbody>";
    while ($data = mysql_fetch_assoc($resultado)) {
      echo "<tr><td>".$data['id']."</td><td>".$data['especialidad']."</td><td>".$data['nombre']."</td><td>".$data['telefono']."</td><td>".$data['delegacion']."</td><td>".$data['direccion']."</td><td>".$data['descuento']."</td><td>".$data['web']."</td></tr>";
    };
    echo "</tbody></table>";
  };


1. Agregamos la definicion de las variables $terminobusqueda y $tipobusqueda, igualandolas a los datos que provienen del formulario con metodo GET.

2. Mejoramos la comprobacion usando el metodo isset().

3. Las @ se colocan antes de las instrucciones PHP no antes de los nombres de variable.

4. Siempre es bueno colocar un or die() al momento de hacer una consulta.

5. el bucle while () { }; es mejor que el for () {} en esta ocasion, tb te muestro como usarlo.

Por NeoCesar

Claber

1415 de clabLevel

14 tutoriales

Genero:Masculino  

Algun lugar dentro de la Matrix (Lima - Perú)

chrome
Citar            
MensajeEscrito el 06 Abr 2011 06:44 pm
:lol: WOOOOOOOOOOOOWWWWW asombroso, no sabes cuanto te agradesco, tu pide y se te sera entregado!! ^^ Muchisimas gracias, por la excelentisima respuesta me has salvado el pellejo mi amigo, que mas puedo decir el script quedo como anillo al dedo, muy bueno, espero algun dia yo tambien poder apoyar a algun novato jejejejeje,

GRACIAS!!!

Por vantron

3 de clabLevel



 

2009

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.