Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Consulta base de datos en pop-up

Estas en el tema de Consulta base de datos en pop-up en el foro de Frameworks JS en Foros del Web. Hola buenos dias Amigos, Antes de empezar no tengo ni idea de ajax y jamas lo he utilizado asi que please un poco de paciencia ...
  #1 (permalink)  
Antiguo 15/06/2009, 03:00
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 16 años, 3 meses
Puntos: 0
Consulta base de datos en pop-up

Hola buenos dias Amigos,

Antes de empezar no tengo ni idea de ajax y jamas lo he utilizado asi que please un poco de paciencia con este pardillo.

Estoy implementado una herramienta de ticketing en una empresa y necesitaria una cosilla , os explico.....

La herramienta consta de una tabla llamada CLIENT_TABLE con campos firstname, lastname, email y phone. La herramienta tiene un problemilla y es que cada vez que abres un ticket a un usuario tienes que teclear el email el numbre completo y el telefono del usuario, y yo lo que quiero es que cuando se introduzca por ejemplo las tres primeras letras del mail de un usuario muestre como una especie de pop up en el que aparezcan los resultados coincidentes de la CLIENT_TABLE y una vez pulsado el correcto se autocompleten los campos email, phone y firstname.

Se que pido mucho pero lo he consultado en el foro de php y me han comentado que lo mas facil seria hacerlo en ajax y de echo me han enseñado un ejemplo, pero yo de ajax ni p***a idea.

Podeis hecharme un cable?????? Os lo agradeceria muchisimo

Muchas Gracias de antemano
  #2 (permalink)  
Antiguo 16/06/2009, 02:15
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Consulta base de datos en pop-up

buenas balbung

No se como estas en el tema, pero si sigues atascado te puedo hechar un cable...

Yo tengo algo parecido en un formulario. Pero ten en cuenta que hay que definir muy bien como hacer para que no haya errores por parte del usuario, es decir.

¿Que pasa si un usuario introduce las tres primeras letras de email, selecciona uno de los resultados y luego modifica algun campo a su antojo? Se podría solucionar desabilitando todos los campos salvo e-mail, pero entonces... ¿si no tiene coincidencias? como rellena los campos,...

Entiendes, hay muchas situaciones en que el usuario puede piciar y hay que intentar desarrollar la funcionalidad que tu deseas pero teniendo en cuenta la estrategia que se ha de seguir para intentrar controlar el mayor numero de posibles picias

Muestrame el formulario y la estructura de tu tabla (diciendome cual es tu primary key) y aver si te puedo preparar un ejemplillo

Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #3 (permalink)  
Antiguo 16/06/2009, 04:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Consulta base de datos en pop-up

Hola

Primero decirte que coincido con matak, no es buena idea montar esa aplicación, sobre todo si estás usando información sensible.

Por otro lado, aquí tienes un pequeño ejemplo (ASP, pero fácil de adaptar a PHP) que te puede ilustrar como empezar en caso que quieras continuar con ello

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 16/06/2009, 05:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Consulta base de datos en pop-up

Muchas Gracias amigo!!!!!
Por eso no te preocupes porque solo abririan tickets un departamento de helpdesk y no habria problemas de cambios este es el codigo del form:

Código PHP:
<table width="80%" border="0" cellspacing=1 cellpadding=2>
   <form action="tickets.php" method="post" enctype="multipart/form-data">
    <input type='hidden' name='a' value='open'>
    <tr><td align="left" colspan=2>Please fill in the form below to open a new ticket.</td></tr>
    <tr>
        <td align="left" nowrap width="20%"><b>Email Address:</b></td>
        <td>
            <input type="text" id="email" name="email" size="25" value="<?=$info['email']?>">
            &nbsp;<font class="error"><b>*</b>&nbsp;<?=$errors['email']?></font>
            <? if($cfg->autoRespONNewTicket()) {?>
               &nbsp;&nbsp;&nbsp;
               <input type="checkbox" name="alertuser" <?=(!$errors || $info['alertuser'])? 'checked'''?>>Send Alert.
            <?}?>
        </td>
    </tr>
    <tr>
        <td align="left" ><b>Full Name:</b></td>
        <td>
            <input type="text" id="name" name="name" size="25" value="<?=$info['name']?>">
            &nbsp;<font class="error"><b>*</b>&nbsp;<?=$errors['name']?></font>
        </td>
    </tr>
    <tr>
        <td align="left">Telephone:</td>
        <td><input type="text" id="phone" name="phone" size="25" value="<?=$info['phone']?>">&nbsp;<font class="error">&nbsp;<?=$errors['phone']?></font></td>
    </tr>
Y LA ESTRUCTURA DE LA TABLA TE LA ADJUNTO EN ESTA CAPTURA

//img26.imageshack.us/img26/719/phpmyadmine.jpg

MUCHAS GRACIAS AMIGO. ME SALVAS LA VIDA
  #5 (permalink)  
Antiguo 16/06/2009, 08:46
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Consulta base de datos en pop-up

buenas otra vez

Mirate este ejemplo

index.php
Código php:
Ver original
  1. <style>
  2.    TH {font-size: 10pt; color: white; font-weight: bold; background: #4682B4; text-align: left; padding-right: 1em; font-family: Consolas, “Nimbus Mono L”, “Andale Mono”, “Courier New”, Courier;}
  3.   TH.simple {font-size: 10pt; color: white; font-weight: bold; background: none; text-align: left; font-family: Consolas, &#8220;Nimbus Mono L”, “Andale Mono”, “Courier New”, Courier;}
  4.   TD {font-family: arial,verdana,arial;font-size: 10pt;}
  5.    TR.claro {/*heght:12x;*/ font-size: 8pt; background: #ECECEC; cursor:default;}
  6.   TR.oscuro {/*heght:12x;*/ font-size: 8pt; background: #CCCCCC; cursor:default;}
  7. </style>
  8. <script>
  9. var proceso_ajax= null;
  10.  
  11. //Funcion que crea el objeto ajax
  12. function objetoAjax(){
  13.     var xmlhttp=false;
  14.     try {
  15.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  16.     } catch (e) {
  17.         try {
  18.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  19.         } catch (E) {
  20.             xmlhttp = false;
  21.     }
  22.     }
  23.  
  24.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  25.         xmlhttp = new XMLHttpRequest();
  26.     }
  27.     return xmlhttp;
  28. }
  29.  
  30. function buscaMail(obj,evt,page) {
  31.   keycode = (evt.keyCode==0) ? evt.which : evt.keyCode;
  32.   if (keycode!=8 && keycode!=13) {
  33.     document.getElementById('rowAyuda').style.display='table-row';
  34.       cadena=obj.value  + String.fromCharCode(keycode);
  35.       divcontenido = document.getElementById('panelAyuda');
  36.       if( proceso_ajax == null ) {
  37.             proceso_ajax = new objetoAjax();
  38.       }
  39.  
  40.       if( proceso_ajax.readyState != 4 || proceso_ajax.readyState != 0) {
  41.               proceso_ajax.abort();
  42.       }
  43.       proceso_ajax.open("POST", page+'?cadena='+cadena, true);
  44.       proceso_ajax.onreadystatechange=function() {
  45.         if (proceso_ajax.readyState==4) {
  46.             divcontenido.innerHTML = proceso_ajax.responseText;
  47.         }
  48.       }
  49.       proceso_ajax.send(null);
  50.   }else if (keycode==8){
  51.       obj.value="";
  52.  
  53.       if( proceso_ajax.readyState != 4 || proceso_ajax.readyState != 0) {
  54.               proceso_ajax.abort();
  55.       }
  56.       document.getElementById('email').value='';
  57.       document.getElementById('firstname').value='';
  58.       document.getElementById('lastname').value='';
  59.       document.getElementById('phone').value='';
  60.  
  61.       document.getElementById('panelAyuda').innetHTML='';
  62.       document.getElementById('rowAyuda').style.display='none';
  63.  
  64.   }
  65. }
  66.  
  67. function mandaDatos(email,firstname,lastname,phone) {
  68.   document.getElementById('email').value=email
  69.   document.getElementById('firstname').value=firstname;
  70.   document.getElementById('lastname').value=lastname;
  71.   document.getElementById('phone').value=phone;
  72.   document.getElementById('panelAyuda').innetHTML='';
  73.   document.getElementById('rowAyuda').style.display='none';
  74. }
  75.  
  76.  
  77. </script>
  78.  
  79. <TABLE>
  80.   <TR>
  81.     <TD width="100%" colspan="3">
  82.       <b>E-mail:</b>&nbsp;&nbsp;<i>(Introduce caracteres a buscar, busca si esta contenido)</i>
  83.     </TD>
  84.   </TR>
  85.   <TR>
  86.     <TD width="100%" colspan="3">
  87.       <input type="text" id="email" name="email" SIZE="20" MAXLENGTH="128" onkeypress="buscaMail(this, event, 'buscaMail.php');" autocomplete="off"/>
  88.     </TD>
  89.   </TR>
  90.   <TR id="rowAyuda" style="display:none;">
  91.     <TD width="100%" colspan="3" id="panelAyuda">
  92.     </TD>
  93.   </TR>
  94.   <TR>
  95.     <TD>
  96.       <b>firstname</b>
  97.     </TD>
  98.     <TD>
  99.       <b>lastname</b>
  100.     </TD>
  101.     <TD>
  102.       <b>phone</b>
  103.     </TD>
  104.   </TR>
  105.   <TR>
  106.     <TD>
  107.       <input type="text" id="firstname" name="firstname" SIZE="20" MAXLENGTH="32" READONLY autocomplete="off"/>
  108.     </TD>
  109.     <TD>
  110.       <input type="text" id="lastname" name="lastname" SIZE="20" MAXLENGTH="32" READONLY autocomplete="off"/>
  111.     </TD>
  112.     <TD>
  113.       <input type="text" id="phone" name="phone" SIZE="20" MAXLENGTH="24" READONLY autocomplete="off"/>
  114.     </TD>
  115.   </TR>
  116. </TABLE>


buscaMail.php
Código php:
Ver original
  1. <?PHP
  2. header('Content-Type: text/xml; charset=ISO-8859-1');
  3.  
  4. $conexion = mysql_connect($tuHost,$tuUser,$tuPas) or die ("No se puede conectar con el servidor");
  5.  
  6. mysql_select_db($tuDB) or die ("No se puede seleccionar la base de datos");
  7.  
  8. $sql="SELECT * FROM ost_clients WHERE email like '%".$_REQUEST['cadena']."%'";
  9.  
  10.  
  11. $consulta = mysql_query ($sql, $conexion)
  12.    or die (mysql_error ($conexion));
  13. $nfilas=mysql_num_rows($consulta);
  14.  
  15. if ($nfilas>0){
  16.  
  17. print ("\t\t<TABLE style=\"width:100%\" cellspacing=\"1px\" cellpadding=\"0px\">\n");
  18. ?>
  19.  
  20. <TH width="10%"><?PHP print(str_replace(" ","&nbsp;",'email')) ;?></TH>
  21. <TH width="40%"><?PHP print(str_replace(" ","&nbsp;",'firstname')) ;?></TH>
  22. <TH width="25%"><?PHP print(str_replace(" ","&nbsp;",'lastaname')) ;?></TH>
  23. <TH width="25%"><?PHP print(str_replace(" ","&nbsp;",'phone')) ;?></TH>
  24.  
  25. <?PHP
  26. $i=0;
  27. while($resultado = mysql_fetch_array($consulta)) {
  28.   if($i%2 == 0) {
  29.     $tono = " CLASS = \"oscuro\"";
  30.     $tonoOut = "'#CCCCCC'";
  31.   }
  32.   else {
  33.     $tono = " CLASS = \"claro\"";
  34.     $tonoOut = "'#ECECEC'";
  35.   }
  36.  
  37.   print ("\t\t\t<TR" . $tono ." onMouseOver = \" javascript: this.style.backgroundColor='#c6d6fd';\" onMouseOut = \" javascript:this.style.backgroundColor=" . $tonoOut . ";\" ondblclick=\" javascript:mandaDatos('".$resultado['email']."','".str_replace("'","\'",$resultado['firstname'])."','".str_replace("'","\'",$resultado['lastname'])."','".$resultado['phone']."') ;\">\n");
  38.  
  39.   $email=str_replace(strtolower($_REQUEST['cadena']),"<font color=orange>".strtolower($_REQUEST['cadena'])."</font>",strtolower($resultado['email']));
  40.   print ("\t\t\t\t<TD align=\"left\">" . $email . "</TD>\n");
  41.   print ("\t\t\t\t<TD align=\"left\">".$resultado['firstname']."</TD>\n");
  42.   print ("\t\t\t\t<TD align=\"left\">".$resultado['lastname']."</TD>\n");
  43.   print ("\t\t\t\t<TD align=\"left\">".$resultado['phone']."</TD>\n");
  44.  
  45.   print ("\t\t\t</TR>\n");
  46.   $i++;
  47. }
  48. print ("\t\t</TABLE>\n");
  49. }else{
  50. echo "No hay resultados";
  51. }
  52. ?>

Prueba y a ver si te puede servir.

Piensa que deberías paginar los resultados, es decir, p.e. sacar las 10 primeras coincidencias y crearte un paginador con el que fueras actualizado la tabla de resultados segun vas avanzando páginas...

Ya dirás algo
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #6 (permalink)  
Antiguo 24/06/2009, 04:49
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Consulta base de datos en pop-up

Hola Amigos,

Muchisimas gracias por este ejemplo soys coj***dos. Siento haber tardado en responder pero es que he estado de vacaciones y no tuve acceso a la red. Voy a probar el codigo y os comentare algo.

Muchas gracias de nuevo
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 18:35.