Foros del Web » Programando para Internet » PHP »

Crea un registro al solo entrar.

Estas en el tema de Crea un registro al solo entrar. en el foro de PHP en Foros del Web. Hola, hoy más temprano publique un problema en la sintaxis, el cual cornell me ayudo a resolver, ahora me topo con el siguiente... El script ...
  #1 (permalink)  
Antiguo 14/12/2008, 09:46
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 23
Antigüedad: 12 años
Puntos: 0
Crea un registro al solo entrar.

Hola, hoy más temprano publique un problema en la sintaxis, el cual cornell me ayudo a resolver, ahora me topo con el siguiente...

El script funciona asi..

Maps_form tiene un formulario, este envia los datos a una BD a traves de un POST en el mismo documento, luego otro archivo lee la BD y genera un XML que al mismo tiempo maps_form lee..

Pueden ver como funciona acá
http://www.residenciaslaredo.com/ett/maps_form.php

Ahora el problema está, en que al solo entrar a la URL antes mencionada, se crea un registro en la BD... obviamente sin nada. El form funciona a la perfección pero como digo, se genere al solo entrar al maps_form

Acá el código
Código PHP:
<?
mysql_connect
("localhost","cr000796_ett","ett");
mysql_select_db("cr000796_ett");

$unidad=$_POST['unidad'];
$ubicacion=$_POST['ubicacion'];
$comentario=$_POST['comentario'];
$lat=$_POST['lat'];
$lng=$_POST['lng'];
mysql_query("insert into punto (unidad,ubicacion,comentario,lat,lng) values ('$unidad','$ubicacion','$comentario','$lat','$lng')");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Formularios en Google Maps</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAIIDbl_ciQDacBgo0AqmyUBTP57_sWC09JVsUBjOq_8dmqEYAyhQECq8os4J_NHYLLdNy5_s2IW_4cw" type="text/javascript"></script>
<script src="jquery-1.2.6.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
    
    var mark;
    var pointA;
    
    if (GBrowserIsCompatible()) {
        var m = $("#map")[0];
        
        if(m) {
            var map = new GMap2(m);
            // iniciamos el mapa en esta ubicacion, tu puedes ubicarla donde gustes
            var start = new GLatLng(-27.332735,-70.312500);
            // otras configuraciones
            var zoomLevel = 10;
            map.setCenter(start, zoomLevel);
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            
            // lectura del archivo markers.xml con jQuery
            $.get('generadorxml.php',function(data) {  
                $(data).find('marker').each(function(){
                    var lat    = $(this).attr('lat');  
                    var lng    = $(this).attr('lng');  
                    var html   = $(this).attr('unidad')+"<br />";
                    html      += $(this).attr('ubicacion')+"<br />";
                    html      += $(this).attr('comentario');
                    var point  = new GLatLng(lat,lng);  
                    var marker = new GMarker(point);  

                    map.addOverlay(marker);  

                    GEvent.addListener(marker, "click", function() {  
                        marker.openInfoWindowHtml(html);  
                    });
       
                });

            });

            // en cada nueva marca aparecerá el formulario HTML
            GEvent.addListener(map, 'click', function(overlay, point){
                if(mark) {
                    map.removeOverlay(mark);
                }
                if(point) {
                    pointA = new GPoint(point.x, point.y);
                    mark = new GMarker(pointA);
                    map.addOverlay(mark);
                    map.getCenter(point);
                    var lat = point.y;
                    var lng = point.x;
                    var form = 
                    "<form action=\"maps_form.php\" method=\"post\">"+
                        "<input type=\"hidden\" name=\"lat\" value=\""+lat+"\" />"+
                        "<input type=\"hidden\" name=\"lng\" value=\""+lng+"\" />"+
                        "Unidad:<input type=\"text\" name=\"unidad\" value=\"\" /><br />"+
                        "Ubicación:<input type=\"text\" name=\"ubicacion\" value=\"\" /><br />"+
                        "Comentarios:<input type=\"text\" name=\"comentario\" value=\"\" /><br />"+
                        "<input type=\"submit\" name=\"submit\" value=\"Publicar\" />"+
                    "</form>";
                    map.openInfoWindowHtml(point,form);
                }
            });
        }
    }
});
</script>
</head>

<body>
<!-- obviamente el area de nuestro mapa -->
<div id="map" style="width:1000px;height:600px;"></div>
</body>
</html>
y pueden ver a que me refiero entrando a http://residenciaslaredo.com/ett/maps_form.php y abriendo una pestaña aparte con http://residenciaslaredo.com/ett/generadorxml.php

Luego refrescan ambas y verán a que me refiero.
  #2 (permalink)  
Antiguo 14/12/2008, 10:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 6 meses
Puntos: 416
Respuesta: Crea un registro al solo entrar.

Es porque asi es como lo tienes programado:

Código PHP:
<? 
mysql_connect
("localhost","cr000796_ett","ett"); 
mysql_select_db("cr000796_ett"); 

$unidad=$_POST['unidad']; 
$ubicacion=$_POST['ubicacion']; 
$comentario=$_POST['comentario']; 
$lat=$_POST['lat']; 
$lng=$_POST['lng']; 
mysql_query("insert into punto (unidad,ubicacion,comentario,lat,lng) values ('$unidad','$ubicacion','$comentario','$lat','$lng')"); 
?>
Todo eso se ejecuta, incluyendo el query, al abrir la pagina con el explorador.

Lo que tienes que hacer es poner un IF, para revisar si hicieron submit al form:

Código PHP:
<?php

if(isset($_POST['submit'])) {
mysql_connect("localhost","cr000796_ett","ett"); 
mysql_select_db("cr000796_ett"); 

$unidad=$_POST['unidad']; 
$ubicacion=$_POST['ubicacion']; 
$comentario=$_POST['comentario']; 
$lat=$_POST['lat']; 
$lng=$_POST['lng']; 
mysql_query("insert into punto (unidad,ubicacion,comentario,lat,lng) values ('$unidad','$ubicacion','$comentario','$lat','$lng')"); 
}
?>
Aun asi, deberias revisar que los campos fueron completados correctamente.

Tambien recuerda siempre usar las etiquetas completas <?php y ?>, para que al migrar tu aplicacion a un servidor que no tenga short_tags ON no te de un dolor de cabeza innecesario.
  #3 (permalink)  
Antiguo 14/12/2008, 11:05
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 23
Antigüedad: 12 años
Puntos: 0
Respuesta: Crea un registro al solo entrar.

Gracias brother, ya funciona! :D... gracias por los consejos y el code! ahora me pondré a investigar como hacer un validador de campos con jquery, he visto algunos tutos antes, espero poder encontrarlos de nuevo.

Saludos y mil gracias! a la ordén con diseño gráfico en general, te debo una! jeje
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 02:49.