Avatar Image
Usuario habitual
Usuario habitual

Mira, al final conseguí montar un buscador en php para mysql con la ayuda de un tutorial que encontré por la red, hasta hace unos dias funcionaba, ahora no-sé-porqué no funciona:

Este archivo se llama buscador_generico.php contiene la configuración de conexión, el formulario y deberían aparecer los resultados, pero no aparecen


<?

$bd_servidor = "mysql.webcindario.com";

$bd_usuario = "emedicina";

$bd_contrasenya = "XXXXXXXXX";

$bd_bdname = "emedicina";

$bd_tabla = "xxxxxx"; // Tabla donde se harán las búsquedas

// Conexión y selección de la base de datos

$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya);

mysql_select_db($bd_bdname,$link);


?>


<center>
<p>
<h2>Buscador </h2>
</p>
<p><form name="buscador" method="post" action="buscador_generico.php"><br>
Buscar en:
<select name="campo">
<?php


$result = mysql_query("SHOW FIELDS FROM `$bd_tabla`",$link);

while($row = mysql_fetch_row($result)) {

// en $row[0] tenemos el nombre del campo
// de esta manera no necesitamos conocer el nombre de los campos
// por lo que cualquier tabla nos valdrá

?>
<option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
<?php

}

?>
</select>
Palabra(s): <input type="text" name="palabra"><br>
<input type="submit" value="Enviar" name="enviar">
</form></p>
</center>

<?


if(isset($_POST['enviar'])) {


$query = "SELECT * from $bd_tabla WHERE {$_POST['campo']} LIKE '%{$_POST['palabra']}%'";

$result = mysql_query($query,$link);





$found = false; // Si el query ha devuelto algo pondrá a true esta variable

while ($row = mysql_fetch_array($result)) {

$found = true;

echo "<p>";

foreach($row as $nombre_campo => $valor_campo) {



if(is_int($nombre_campo)) {

continue;
}

echo "<b>".$nombre_campo."</b> : ".$valor_campo."<br>";
}

echo "</p>";

}

if(!$found) {

echo "No se encontró la palabra introducida";

}

}
?>


El otro error que tiene el código es que sólo permite hacer una búsqueda, despues se tiene que volver hacia atrás, actualizar el archivo y entonces realizar una nueva búsqueda...

A ver que se puede hacer... Gracias

Avatar Image
Okupa del foro
Okupa del foro

Pues ponerle un botón que ponga, atrás. y se vaya a la página buscador_nnn.php, eso ya funcionara, lo probé...

y encuanto al primer error, prueba de escribir.

echo mysql_error();

y así veras lo que le pasa...


Adiós.

Avatar Image
Usuario habitual
Usuario habitual

uffffffffff.....

no lo pillo, ahora si que funciona...

bueno, lo dejaremos así mientras funcione y permita hacer varias búsquedas.

Gracias de todos modos

Avatar Image
Okupa del foro
Okupa del foro

Bueno, si te funciona perfecto, pero yo siempre recomiendo poner:

condicional(sentencia){

funciona...

}nofunciona{
// Muestrame el error.
}

y esto seria:

if(sentencia){
echo "datos";
}else{
echo "ERROR MYSQL: <br>" . mysql_error();
}

Avatar Image
Usuario habitual
Usuario habitual

Me parece que lo voy a hacer, porque me he dado cuenta de que no funciona siempre y cuando no funciona no muestra el error.

Me puedes explicar como aplico lo de if(sentencia)
{echo "datos"} ????

El problema es que no tengo ni idea de escribir en php... conseguí el código en un tutorial por la red y no puedo hacer muchas modificaciones por mi "innoransia"

Muchas gracias

Avatar Image
Okupa del foro
Okupa del foro

por ejemplo, si tienes que hacer un mysql_fetch_Array, haces lo siguiente:

if($row1 = mysql_fetch_array($ssql1)){
echo "Nombre: " . $row1['nombre'];
}else{

echo "Ha ocurrido el siguiente error en la búsqueda: <br>" . mysql_error();
}

Entiendes?

el texto Ha ocurrido el siguiente error en la búsqueda:
lo puedes cambiar... y ponerlo en rojo y negrita... ETC.

Bye.

Avatar Image
Usuario habitual
Usuario habitual

Ya sé que cualquiera que sepa un poco del tema y se pase por este hilo se va a partir de risa.... pero bueno, pero nadie nace sabiendolo todo, no? (o sinó pa-que-coño me mato yo estudiando medicina tropecientos años?????)

Así que la respuesta es no. Lo siento pero no acabo de entender el código, entiendo lo que quieres decir (más o menos) pero no sé como aplicarlo ni donde.


Gracias IVANITOWEB!!!!!!!!!!!!!!!!!!!! y perdoname por se tan cazurro

Avatar Image
Okupa del foro
Okupa del foro

Bueno, no pasa nada, si funciona ya esta... no problems.

Bye.

Avatar Image
Usuario habitual
Usuario habitual

El problema es que a veces funciona y a veces no, los usuarios "habituales" ya ven cuando funciona y cuando no... pero los que entran a mi web por primera vez estan un poco "sorprendidos"

Me podrías explicar paso a paso lo que tengo que hacer para que se vea el error??? Al menos todo el mundo sabrá que no funciona

Gracias



P.D.: Gracias de mi parte y de centenares de médicos.

Avatar Image
Okupa del foro
Okupa del foro

<?

$bd_servidor = "mysql.webcindario.com";

$bd_usuario = "emedicina";

$bd_contrasenya = "XXXXXXXXX";

$bd_bdname = "emedicina";

$bd_tabla = "xxxxxx"; // Tabla donde se harán las búsquedas

// Conexión y selección de la base de datos

$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contrasenya);

mysql_select_db($bd_bdname,$link);


?>


<center>
<p>
<h2>Buscador </h2>
</p>
<p><form name="buscador" method="post" action="buscador_generico.php"><br>
Buscar en:
<select name="campo">
<?php


$result = mysql_query("SHOW FIELDS FROM `$bd_tabla`",$link);

while($row = mysql_fetch_row($result)) {

// en $row[0] tenemos el nombre del campo
// de esta manera no necesitamos conocer el nombre de los campos
// por lo que cualquier tabla nos valdrá

?>
<option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
<?php

}

?>
</select>
Palabra(s): <input type="text" name="palabra"><br>
<input type="submit" value="Enviar" name="enviar">
</form></p>
</center>

<?


if(isset($_POST['enviar'])) {


$query = "SELECT * from $bd_tabla WHERE {$_POST['campo']} LIKE '%{$_POST['palabra']}%'";

$result = mysql_query($query,$link);





$found = "false"; // Si el query ha devuelto algo pondrá a true esta variable

while ($row = mysql_fetch_object($result)) {

$found = true;

echo "<p>";

foreach($row as $nombre_campo => $valor_campo) {



if(is_int($nombre_campo)) {

continue;
}

echo "<b>".$nombre_campo."</b> : ".$valor_campo."<br>";
}

echo "</p>";

}

if($found == "false") {

echo "No se encontró la palabra introducida";

}

}
?>


no te va a mostrar el error mysql... porque usa un while... que no hay otra forma.... pero yo enseño los errores cuando uso un if.
y aca creo q es inevitable el while...

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 26/Mar/2013, 00:59
JudithSoto aerialss88 donjesco22kMar/14
Por: , el 31/Oct/2009, 18:06
ligoverto aerialss88 NoSetup.org63kNov/09
Por: , el 01/Mar/2006, 19:18
LORDARMATO lito1519kFeb/07