Foros del Web » Programando para Internet » PHP »

consulta selectiva

Estas en el tema de consulta selectiva en el foro de PHP en Foros del Web. tengo un mapa que tiene unos cuantos puntos indicativos que señalan donde estan situadas unas minas, entonces, como hago cuando un usuario haga clin en ...
  #1 (permalink)  
Antiguo 27/10/2004, 18:03
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
consulta selectiva

tengo un mapa que tiene unos cuantos puntos indicativos que señalan donde estan situadas unas minas, entonces, como hago cuando un usuario haga clin en unos de esos puntos aparezca los datos de la mina?
  #2 (permalink)  
Antiguo 28/10/2004, 06:43
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
Tienes que mapear la imagen, esto es cosa del html, pero si te soy sincero no me acuerdo de la sintaxis. Lo que si se es que en la imagen defines por coordenadas varios enlaces, y cada enlace de este tipo tendrá un href de este tipo:

href='info.php?Mina=1'
href='info.php?Mina=2'
.....
Asi en el info.php segun el valor de $_GET["Mina"] muestras una info u otra

Mira, que he encontrado la sintaxix:

<MAP NAME="mapa">
<AREA SHAPE="rect" COORDS="1,1,75,46" HREF="info.php?Mina=1">
<AREA SHAPE="rect" COORDS="76,1,136,46" HREF="info.php?Mina=2">
</MAP>

<IMG SRC="TuMapa.gif" USEMAP="#mapa">
  #3 (permalink)  
Antiguo 28/10/2004, 07:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Cuando usas un campo tipo imagen en un formulario como boton submit (http://www.w3.org/TR/html4/interact/forms.html#h-17.4.1), PHP recibe las coordenadas del click (http://www.php.net/manual/en/languag...s.external.php). Con esas coordenadas podrias saber donde han pinchado en la imagen.

Pero enviaria los datos tanto hayan pinchado en una mina como en un delfin. Si quieres que solo puedan pinchar en las minas, tendras que definir las areas como te ha comentado kurlax (podrias generar mediante PHP ese HTML a partir de los datos de las coordenadas de las minas).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 28/10/2004, 07:36
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
Gracias por las sugerencias fueron muy buenas.
  #5 (permalink)  
Antiguo 01/11/2004, 18:03
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
ya me lie un poco, os cuento.

tengo un archivo llamado mapa.php donde tengo el mapa.......
pues estas lineas:
Código PHP:
<map name="Map">
  <
area shape="circle" coords="1755,40,19" href="infomina.php?nficha=Ca-02" target="_blank">
</
map
Cada punto corresponde a 1 codigo o valor que ya sabemos por eso mismo al hacer clic en ese area deberia salir el registro cuyo codigo es Ca-02(campo tipo texto) y asi sucesivamente con cada punto.

y en el archivo infomina.php despues de hacer la conexion a la base de datos tengo:
Código PHP:
$select_patri mysql_query("SELECT * FROM patrimonio WHERE nficha=$nficha");
    
$patri mysql_fetch_array($select_patri);

    while (!
$patri[denominacion]) {
        
$patri mysql_fetch_array($select_patri);
    }
        
                
                    echo 
$patri[denominacion]; 
pero me daun erro y no me muestra nada, ¿que me comi?

Gracias.

-------------------
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in infomina.php on line 12
Esta lineas 12 se corresponde con:
$patri = mysql_fetch_array($select_patri);
  #6 (permalink)  
Antiguo 02/11/2004, 01:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

El mensaje te dice: parametro que has pasado a mysql_fetch_array() no es un valor valido de id de resultado de MySQL. Es decir, el valor del parametro es invalido. ¿De donde has sacado el valor? De mysql_query(). En www.php.net/mysql_query lees que mysql_query() devuelve false si se ah producido un error en MySQL cuando ha intentado ejecutar la consulta. Entonces es que tu consulta ha generado un error en MySQL. ¿COmo ver el mensaje de error? Con mysql_error() (www.php.net/mysql_error), por ejemplo:
Código PHP:
 $select_patri mysql_query("SELECT * FROM patrimonio WHERE nficha=$nficha") or die("Error. MySQL dice: ".mysql_error()); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 02/11/2004, 02:22
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
Lo mas probable es que estes cogiendo mal la variable que pasas a la consulta.
Prueba con $_GET["nficja"] y si esto no te va porque tu version php es antigua prueba con $HTTP_GET_VARS["nnficha"]
  #8 (permalink)  
Antiguo 02/11/2004, 04:07
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
el error que da es
Error. MySQL dice: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\'Ca-02\'' at line 1

la version de mysql es MySQL 4.0.17

Última edición por pereztroff; 02/11/2004 a las 04:10
  #9 (permalink)  
Antiguo 02/11/2004, 04:16
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Mete la cadena de la consulta en una variable y en el die() muestra esa variable para ver que consulta esta realmente intentando ejecutar. Y analiza su sintaxis.

Saludos.

PD: En el mensaje de error solo pone la cadena posterior al error de sintaxis. Asi que en la consulta mira lo que hay justo antes de \'Ca-02\' .
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 02/11/2004, 05:12
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
modifique la linea para ver el error
$select_patri = mysql_query("SELECT * FROM patrimonio WHERE nficha=$nficha") or die("Error. MySQL dice: ".mysql_error()." ".$nficha);

y me salta en error
Error. MySQL dice: Unknown column 'Ca' in 'where clause' Ca-02

nficha es el nombre campo dentro de la tabla de tipo texto que guarda el codigo.

pero aun no caigo que pasa.
  #11 (permalink)  
Antiguo 02/11/2004, 05:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Haz lo que te he comentado, mete la consulta en una variable y haz un echo de la consuklta real. Te saldra algo como:

SELECT * FROM patrimonio WHERE nficha=Ca-02

Y ahi si puedes ver el error de sintaxis.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 02/11/2004, 07:59
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
puse directamente SELECT * FROM patrimonio WHERE nficha=Ca-02

y me daba error lo cambie por
SELECT * FROM patrimonio WHERE nficha='Ca-02'

y me saco los datos correctamente. todo esto en el archivo infomina.php

pero ahora no tengo claro como pasar ese valor para que haga la consulta correctamente., es decir pasar el valor desde mapa.php a infomina.php que es donde se ahce la consulta y saca los datos del registro. ¿que sera?

Última edición por pereztroff; 02/11/2004 a las 12:54
  #13 (permalink)  
Antiguo 02/11/2004, 12:57
 
Fecha de Ingreso: agosto-2004
Mensajes: 26
Antigüedad: 13 años, 4 meses
Puntos: 0
Pues tio, metele las comillas esas como sea, si esta tirado, ¿no lo ves?
  #14 (permalink)  
Antiguo 02/11/2004, 13:13
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
Pues no, no lo veo!!!

hice lo que me comento josemi, meti en una variable la consulta de la siguiente manera $pregunta="SELECT * FROM patrimonio WHERE nficha=$nficha";
y la variable tomo lo siguiente: SELECT * FROM patrimonio WHERE nficha=Ca-02

pero me dio un error que dice: Error. MySQL dice: Unknown column 'Ca' in 'where clause'

pues la verdad es que ya no veo el error por ninguna parte, alguien se da cueenta de que va este error???
  #15 (permalink)  
Antiguo 02/11/2004, 13:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
¿Nunca te has liado con las comillas en PHP? Pues con MySQL es lo mismo. PAra musql, si no esta entre comillas no es una cadena, sino una expresion. Y las expresiones que son cadenas, como Ca, en un where tienen que ser nombres de campos.

La solucion es poner las comillas que has puesto directamente al hacer las pruebas. Las tienes que poner en la cadena que crea la consulta, no en el parametro que pasas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #16 (permalink)  
Antiguo 02/11/2004, 14:51
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
cambie mapa.php
y puse
<? $ficha="'"."Ca-02"."'"; ?>
<area shape="circle" coords="1755,40,19" <? echo"href=\"infomina.php?nficha=$ficha\""; ?> target="_blank" alt="Mina 02">

pero me sale error:

SELECT * FROM patrimonio WHERE nficha=\'Ca-02\'

Error. MySQL dice: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\'Ca-02\'' at line 1

yo estoy por rendime porque no veo la solucion ni patras
  #17 (permalink)  
Antiguo 02/11/2004, 14:59
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
bueno ya lo consegui, uff que dolor de cabeza para la tonteria que era.

Gracias Josemi, por hacerme reflexionar.

solo tuve que modificar el archivo que hacia la consulta, o sea infomina.php

Código PHP:
.
$nficha="'".$nficha."'";
    
$select_patri mysql_query("SELECT * FROM patrimonio WHERE nficha=$nficha") or die("Error. MySQL dice: ".mysql_error()); 
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 06:45.