Foros del Web » Programando para Internet » PHP »

buscar en bd mysql y php

Estas en el tema de buscar en bd mysql y php en el foro de PHP en Foros del Web. hola tengo este código de un curso en linea pero al momento de implementarlo no funciona espero me puedan ayudar. de antemano gracias por la ...
  #1 (permalink)  
Antiguo 17/02/2014, 23:40
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
buscar en bd mysql y php

hola tengo este código de un curso en linea pero al momento de implementarlo no funciona espero me puedan ayudar. de antemano gracias por la ayuda.

Código PHP:
Ver original
  1. <html>
  2. <head>
  3.   <title>Catálogo de Búsqueda Librería Online</title>
  4. </head>
  5.  
  6. <body>
  7.   <h1>Catálogo de Búsqueda Librería Online</h1>
  8.  
  9.   <form action="resultados.php" method="post">
  10.     Elige Tipo de Búsqueda:<br>
  11.     <select name="tipobusqueda">
  12.       <option value="autor">Autor
  13.       <option value="titulo">Título
  14.       <option value="isbn">ISBN
  15.     </select>
  16.     <br>
  17.     Escribe Término Búsqueda:<br>
  18.     <input name="terminobusqueda" type="text">
  19.     <br>
  20.     <input type="submit" value="Buscar">
  21.   </form>
  22.  
  23. </body>
  24. </html>

resultados.php

Código PHP:
Ver original
  1. </head>
  2. <body>
  3. <h1>Resultados de la Búsqueda en la Librería Online</h1>
  4. <?php
  5.  
  6.   trim ($terminobusqueda);
  7.   if (!$tipobusqueda || !$terminobusqueda)
  8.   {
  9.      echo "No has introducido los detalles de la busqueda.  Por favor vuelve e inténtalo de nuevo.";
  10.      exit;
  11.   }
  12.  
  13.   $tipobusqueda = addslashes($tipobusqueda);
  14.   $terminobusqueda = addslashes($terminobusqueda);
  15.  
  16.    $db = mysql_pconnect("localhost", "root", "15022010");
  17.  
  18.   if (!$db)
  19.   {
  20.      echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
  21.      exit;
  22.   }
  23.  
  24.   mysql_select_db("libreria");
  25.   $consulta = "select * from libros where ".$tipobusqueda." like '%".$terminobusqueda."%'";
  26.   $resultado = mysql_query($consulta);
  27.  
  28.   $num_resultados = mysql_num_rows($resultado);
  29.  
  30.   echo "<p>Número de libros encontrados: ".$num_resultados."</p>";
  31.  
  32.   for ($i=0; $i <$num_resultados; $i++)
  33.   {
  34.      $row = mysql_fetch_array($resultado);
  35.      echo "<p><strong>".($i+1).". Título: ";
  36.      echo stripslashes($row["titulo"]);
  37.      echo "</strong><br>Autor: ";
  38.      echo stripslashes($row["autor"]);
  39.      echo "<br>ISBN: ";
  40.      echo stripslashes($row["isbn"]);
  41.      echo "<br>Precio: ";
  42.      echo stripslashes($row["precio"]);
  43.      echo "</p>";
  44.   }
  45.  
  46. ?>
  47.  
  48. </body>
  49. </html>
  #2 (permalink)  
Antiguo 18/02/2014, 02:11
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 13 años, 7 meses
Puntos: 20
Respuesta: buscar en bd mysql y php

Debes recoger el valor de las variables:

$tipobusqueda=$_POST['tipobusqueda'];
$terminobusqueda=$_POST['terminobusqueda'];
  #3 (permalink)  
Antiguo 18/02/2014, 15:32
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: buscar en bd mysql y php

creo que no lo sabe hacer... iso copy page
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #4 (permalink)  
Antiguo 18/02/2014, 18:12
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

Veras estas en lo cierto estoy aprendiendo. Y dice baldaweb no tomaba las variables. es un curso intensivo el que estoy haciendo. me falta dominar php.
  #5 (permalink)  
Antiguo 18/02/2014, 18:26
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: buscar en bd mysql y php

ok te aconsejo que cuando quieras hacer algo pidas documentación al respecto te la facilitamos para que estudie tutoriales y ejemplos...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #6 (permalink)  
Antiguo 18/02/2014, 21:07
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

listo, pasame el link de lo que tengas. veras no se me hace muy difícil php solo me tranco en partes muy puntuales, yo domino c/c++ a la perfección y eso me ayuda bastante a entender php.
  #7 (permalink)  
Antiguo 18/02/2014, 21:10
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: buscar en bd mysql y php

http://www.php.net/manual/es/
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #8 (permalink)  
Antiguo 18/02/2014, 22:16
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

Gracias...
  #9 (permalink)  
Antiguo 19/02/2014, 21:32
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

hola despues de pasar horas pegado de los libros,guias,video tutos y demas cree mi primer script. pero tiene un problema no me realizalo que quiero espero me puedan ayudar.

este es el form

con esto <?php echo"".$_SESSION['username'].""; ?> capturo el usuario logeado.

Código HTML:
Ver original
  1. <form id="cambio" name="cambio" method="post" action="modifica_clave.php">
  2.       <label></label>
  3.       <div align="center">
  4.         <label>
  5.         <div align="center">Usuario:<br />
  6.           <input name="admin" type="text" id="admin" value=" <?php echo"".$_SESSION['username'].""; ?> "/>
  7.        
  8.       <p align="left">Ingresa clave
  9.         <label>
  10.         <input type="text" name="actual" id="actual" />
  11.         </label>
  12.       *Actual</p>
  13.       <p align="left">Ingresa clave
  14.         <label>
  15.         <input type="text" name="pwnew" id="pwnew">
  16.         </label>
  17.         *Nueva      </p>
  18.       <p align="center">
  19.   <input name="submit" type="submit" value="Cambiar" />
  20.         <br>
  21.        </p>
  22.     </form>

lo que intento hacer cambiar la clave, como veran agrego mi conecta.php recojo las variables enviadas a traves del post. verifico la conexión a mi server y a mi bd. se supone que realizo una consulta a mi db sobre el pw almacenado, luego con la condicion verifico si el pw que estoy ingresando como actual esta almacenado en mi bd si lo ubica en la bd realiza el update. perooo no falta un pero no me realiza el update. no me manda error pero no hace lo que quiero. reviso SELECT PW FROM administrador WHERE ADMIN='$_POST[admin]'",$link); lo veo bien según los libros. espero me puedan ayudar. y darme una breve explicacion donde esta la falla y/o el error.

Código PHP:
Ver original
  1. <?php
  2. include ("conecta.php");
  3. $admin = ($_POST['admin']);
  4. $actual= ($_POST['actual']);
  5. $pwnew =($_POST['pwnew']);
  6. $link = mysql_connect($host,$user,$pass) or die ("error");
  7. mysql_select_db($db,$link) or die ("error");
  8. $result = mysql_query ("SELECT PW FROM administrador WHERE ADMIN='$_POST[admin]'",$link);
  9. $row = mysql_fetch_array ($result);
  10. $viej = $row["pw"];
  11. if ($actual == $viej)
  12. {
  13. mysql_query "UPDATE administrador Set pw='$pwnew' WHERE admin='$_POST[admin]'",$link);
  14. echo "La contraseña se cambio con exito.";
  15. }
  16. else{
  17. echo "Error: La contraseña actual es incorrecta !";
  18. }
  19. ?>

la bd
Código MySQL:
Ver original
  1. Estructura de tabla para la tabla `administrador`
  2. --
  3.  
  4. CREATE TABLE IF NOT EXISTS `administrador` (
  5.   `admin` varchar(40) NOT NULL,
  6.   `pw` int(40) NOT NULL,
  7.   PRIMARY KEY (`admin`)

Última edición por keivis; 19/02/2014 a las 21:51
  #10 (permalink)  
Antiguo 19/02/2014, 22:41
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: buscar en bd mysql y php

te recomiendo que:
linea 8:
Código PHP:
Ver original
  1. $result = mysql_query ("SELECT PW FROM administrador WHERE admin='$admin'",$link);//seguro que aqui esta el error tienes ADMIN en mayuscula y en la tabla esta en minuscula...
linea 13:
Código PHP:
Ver original
  1. mysql_query "UPDATE administrador Set pw='$pwnew' WHERE admin='$admin'",$link);
asegurarte de que tengas algo en la tabla...

al final imprime las variables

Código PHP:
Ver original
  1. echo "EXITO $admin, La contraseña $viej se cambio Correctamente por $pwnew";

y siempre verifica los errores imprimiendo tambien

Código PHP:
Ver original
  1. echo "hay un problema $admin, La contraseña $actual no es igual a la almacenada en la base de datos $viej ";

estudia tu codigo tiene errores de de sintaxys tipo mayuscula-minuscula
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Última edición por arcanisgk122; 19/02/2014 a las 22:52
  #11 (permalink)  
Antiguo 20/02/2014, 13:13
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

he revisado minuciosamente con calma y no me modifica la clave.

Código PHP:
Ver original
  1. <?php
  2. include ("conecta.php");
  3. $admin = ($_POST['admin']);
  4. $actual= ($_POST['actual']);
  5. $pwnew =($_POST['pwnew']);
  6. $link = mysql_connect($host,$user,$pass) or die ("error");
  7. mysql_select_db($db,$link) or die ("error");
  8. $result = mysql_query ("SELECT pw FROM administrador WHERE admin='$_POST[admin]'",$link);
  9. $row = mysql_fetch_array ($result);
  10. $viej = $row["pw"];
  11. if ($actual == $viej)
  12. {
  13. mysql_query ("UPDATE administrador Set pw='$pwnew' WHERE admin='$_POST[admin]'",$link);
  14. echo "EXITO $admin, La contraseña $viej se cambio Correctamente por $pwnew";
  15. }
  16. else{
  17. echo "hay un problema $admin, La contraseña $actual no es igual a la almacenada en la base de datos $viej ";
  18. }
  19. ?>

en la bd tengo datos almacenados. cuando envio a cambiar la clave me mdanda directramente aqui.
Código PHP:
Ver original
  1. echo "hay un problema $admin, La contraseña $actual no es igual a la almacenada en la base de datos $viej ";
  #12 (permalink)  
Antiguo 20/02/2014, 13:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: buscar en bd mysql y php

1 te dije que cambiaras la querry del update por esta:

Código PHP:
Ver original
  1. mysql_query "UPDATE administrador Set pw='$pwnew' WHERE admin='$admin'",$link);

2 $_POST[admin] esto dentro del querry no sirbe de nada:

cuando llegas al SELECT: le tas diciendo que WHERE $_POST[admin] y es como si le dijeras que esta vacio. teoricamente no es aconsejable usar esa sintaxis que tienes. si ya pasaste la variable admin obtenia por post a una variable del codio entonces usala:

Código PHP:
Ver original
  1. $admin = ($_POST['admin']);

listo y cuando te imprime las variables de las claves nueva y vieja son diferente que te sale???

apuesto que una no te la imprime por los errores que te mencione...

si vas a programas necesitas tambien saber seguir instrucciones, y acostumbrarte a la buenas practicas.
  #13 (permalink)  
Antiguo 20/02/2014, 14:36
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

gracias por la ayuda. veras hice tal cual lo que me indicas y no me cambia la clave. el problema lo solucione aquí veras. aquí yo capturo el usuario logeado y solo colocaba la clave actual y la nueva. sin tocar el campo del usuario capturado. probe en mozilla y pille que cuando escribia la clave actual de forma automatica se escribia en el campo usuario. como puedo solucionar eso que no sea necersario reescribir el usuario logeado.
Código PHP:
Ver original
  1. <input name="admin" type="text" id="admin" value=" <?php echo"".$_SESSION['username'].""; ?> "/>

quiero añadir una condición que me muestre un mensaje si el usuario al cambiar la clave coloco la misma que tenia. el mensaje diría ingrese otra clave diferente a la anterior. podría ser? if ($pwnew==$actual)
{
echo 'mensaje';
}
else ( $actual == $viej)
{
mysql_query ("UPDATE administrador Set pw='$pwnew' WHERE admin='$_POST[admin]'",$link);
echo "EXITO $admin, La contraseña $viej se cambio Correctamente por $pwnew";
}
else{
echo "hay un problema $admin, La contraseña $actual no es igual a la almacenada en la base de datos $viej ";
}
?>

}
  #14 (permalink)  
Antiguo 20/02/2014, 14:44
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

ya solucione el problema con lo del usuario: cambie las etiquetas label y cree una table.

ahora me gustaria crear la condicion que me muestre el mensaje, si la clave a ingresar nueva es igual a la anterior.
  #15 (permalink)  
Antiguo 20/02/2014, 14:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: buscar en bd mysql y php

primero hagamos funcionar lo que tienes y después agregas mas parametros

ok para no tener que usar un input y tener que escribir el nombre del usuario, puedes recuperarlo de la sesion tal cual lo haces, peroooo tiene que declara en todos tus php al inicio del documento que la sesion esta activa:

sesion star recuerdas...

otra cosa, veo el codigo y sigues asiendolo a tu manera, no te puedo ayudar si no cambias esto:

Código PHP:
Ver original
  1. mysql_query ("UPDATE administrador Set pw='$pwnew' WHERE admin='$_POST[admin]'",$link);

a esto:
Código PHP:
Ver original
  1. mysql_query "UPDATE administrador Set pw='$pwnew' WHERE admin='$admin'",$link);
  #16 (permalink)  
Antiguo 20/02/2014, 14:53
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

ya lo cambie.
Código PHP:
Ver original
  1. mysql_query "UPDATE administrador Set pw='$pwnew' WHERE admin='$admin'",$link);

Código PHP:
Ver original
  1. <?php
  2. include ("conecta.php");
  3. $admin = ($_POST['admin']);
  4. $actual= ($_POST['actual']);
  5. $pwnew =($_POST['pwnew']);
  6. $link = mysql_connect($host,$user,$pass) or die ("error");
  7. mysql_select_db($db,$link) or die ("error");
  8. $result = mysql_query ("SELECT PW FROM administrador WHERE admin='$admin'",$link);
  9. $row = mysql_fetch_array ($result);
  10. $viej = $row["pw"];
  11. if ($actual == $viej)
  12. {
  13. mysql_query "UPDATE administrador Set pw='$pwnew' WHERE admin='$admin'",$link);
  14. echo "EXITO $admin, La contraseña $viej se cambio Correctamente por $pwnew";
  15. }
  16. else{
  17. echo "hay un problema $admin, La contraseña $actual no es igual a la almacenada en la base de datos $viej ";
  18. }
  19. ?>

ya solucione el problema elimine los label del formulario de envió y cree una tabla.. funciona al 100% ahora quiero agregar los parámetros. con la condición que te mencione en el comentario anterior.
  #17 (permalink)  
Antiguo 20/02/2014, 14:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: buscar en bd mysql y php

te dejo el escript funcionando:
Código PHP:
Ver original
  1. <?php
  2. include ("conecta.php");
  3. $admin = ($_POST['admin']);
  4. $actual= ($_POST['actual']);
  5. $pwnew =($_POST['pwnew']);
  6. $link = mysql_connect($host,$user,$pass) or die ("error");
  7. mysql_select_db($db,$link) or die ("error");
  8. $result = mysql_query ("SELECT pw FROM administrador WHERE admin='$admin'",$link);
  9. $row = mysql_fetch_array ($result);
  10. $viej = $row["pw"];
  11. if ($pwnew==$actual){
  12.     echo" $admin La contraseña: $pwnew es igual a $actual, debe utilizar una diferente.";  
  13. }else{
  14.     if ($actual == $viej){
  15.         mysql_query ("UPDATE administrador Set pw='$pwnew' WHERE admin='$admin'",$link);
  16.         echo "EXITO $admin, La contraseña $viej se cambio Correctamente por $pwnew";
  17.     }else{
  18.         echo "hay un problema $admin, La contraseña $actual no es igual a la almacenada en la base de datos $viej ";
  19.     }
  20. }
  21. ?>

y tu formulario debería de ser así:


Código PHP:
Ver original
  1. <form id="cambio" name="cambio" method="post" action="modifica_clave.php">
  2. <?php $admin=$_SESSION['username'];?>
  3.       <label></label>
  4.       <div align="center">
  5.         <label>
  6.         <div align="center">Usuario:<br />
  7.           <input name="admin" type="text" id="admin" value="<?php echo"$admin"; ?>"/>
  8.       <p align="left">Ingresa clave
  9.         <label>
  10.         <input type="text" name="actual" id="actual" />
  11.         </label>
  12.       *Actual</p>
  13.       <p align="left">Ingresa clave
  14.         <label>
  15.         <input type="text" name="pwnew" id="pwnew">
  16.         </label>
  17.         *Nueva      </p>
  18.       <p align="center">
  19.       <input name="submit" type="submit" value="Cambiar" />
  20.         <br>
  21.        </p>
  22.     </form>

y lo que preguntaste de ocultar el input admin

puedes ocultarlo con display none he igual pasarlo, puedes no pasarlo, pero recuperar la variable de sesion en el php si ya esta loggeado... pero recuerda usar sesion star...

Última edición por arcanisgk1; 20/02/2014 a las 15:03
  #18 (permalink)  
Antiguo 20/02/2014, 15:05
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

ok, gracias por la ayuda. aunque hubiese preferido seguir como íbamos por que así aprendía mas. quiere decir que en la parte lo que te mencione iba bien el error hubiese sido que en la condición que yo coloque else ($actual == $viej)


Código PHP:
Ver original
  1. if ($pwnew==$actual){
  2.     echo" $admin La contraseña: $pwnew es igual a $actual, debe utilizar una diferente.";  
  3. }else{
  4.     if ($actual == $viej)
  #19 (permalink)  
Antiguo 20/02/2014, 15:12
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: buscar en bd mysql y php

no puedes aprender si no corrijas lo que tienes mal... te dije mas de 5 veces que cambiaras algo y no lo hacías... corrija el código correlo y revisa que vaya bien todo...
  #20 (permalink)  
Antiguo 20/02/2014, 15:51
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: buscar en bd mysql y php

funciona al 100% gracias, las había cambiado pero como tengo dos carpetas. una donde trabajo y la otra que no toco. y voy comparando lo que hago. lo que paso fue que al momento de comentar copiaba la otra.

Etiquetas: bd, html, mysql, select
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 13:33.