Foros del Web » Programando para Internet » PHP »

Error con XAJAX y PHP

Estas en el tema de Error con XAJAX y PHP en el foro de PHP en Foros del Web. Bueno empiezo diciendo que el sistema ultimo que inicie ya casi esta terminado, pero hoy tengo un problema y es que xajax no me quiere ...
  #1 (permalink)  
Antiguo 22/08/2013, 15:54
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Error con XAJAX y PHP

Bueno empiezo diciendo que el sistema ultimo que inicie ya casi esta terminado, pero hoy tengo un problema y es que xajax no me quiere mostrar resultados de una consulta, lo que deseo hacer es algo asi:



Donde el usuario pone una letra del nombre del producto y ya puede aderirlo al carrito, el de la imagen lo hice sin xajax aparte y funciona bien, pero yo uso xajax para que la pag solo se cargue al inicio y los componentes llamarlos desde un archivo unico.

El error que me da cuando lo hago con xajax es el siguiente:



Como ven si rescata los datos de la DB pero no los quiere mostrar no se porq



El codigo que utilizo es (codigo completo de la celda que contiene el textbox donde se colocaria el nombre del producto):

Código PHP:
Ver original
  1. <td>
  2.    <form name='form1' method='post' action=''><b>Nombre:
  3.       <label>
  4. </b><input type='text' autofocus id='codigo' name='codigo' list='characters' size='50' maxlenght='100' class='caja' placeholder='Nombre del producto' autocomplete='off' style='padding: 0.3em;'/>
  5.         <datalist id='characters'>
  6.               ".
  7.     include('c.php');
  8.     if($mysqli->connect_errno){
  9.     echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;
  10.     }
  11.     else{
  12.      $sql = $mysqli->query("SELECT * FROM productos where stock>0 order by nombre asc");
  13.      while($row = $sql->fetch_array(MYSQLI_ASSOC))
  14.       {
  15.       echo '<option value="'.$row['nombre'].'">'.$row['stock'].'</option>';
  16.       }
  17.       }
  18.       ".
  19.         </datalist>
  20.      </label><br>
  21.          </form>
  22.                   </td>

Y eso que solo es para la busqueda

Ustedes me recomiendan dejar de usar xajax y en vez de eso rediseñar el sistema usando iframes ???

el hecho es que en lo personal me gusta que la pagina (banner y estilos) se carguen una vez y que no gasten mas ancho de banda
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #2 (permalink)  
Antiguo 22/08/2013, 16:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con XAJAX y PHP

Usa Ajax está bien, lo que haces mal es combinar sintaxis de manera incorrecta.

Es decir, no puedes concatenar código junto a otras cadenas de texto, eso no está permitido y de ahí proviene un error bastante grave.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/08/2013, 16:40
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Error con XAJAX y PHP

Otra cosa que me llama la atención es la respuesta del servidor es XML, si tu pagina no esta construida de esta manera podría ser esta la otra causa del error.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 22/08/2013, 18:05
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con XAJAX y PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
Usa Ajax está bien, lo que haces mal es combinar sintaxis de manera incorrecta.

Es decir, no puedes concatenar código junto a otras cadenas de texto, eso no está permitido y de ahí proviene un error bastante grave.
Pero el archivo que estoy haciendo es asi, todo lo html se declara en una variable php asi:
Código PHP:
Ver original
  1. $datos = "
  2. <table id='table' > </table>
  3. ";

aja y si quiero meter php en eso debo escaparme con ". codigo php ." y continua el htm por eso lo hago asi no ganas mio



@jonni09lo: Explique que quiere decir ??
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #5 (permalink)  
Antiguo 23/08/2013, 08:12
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Error con XAJAX y PHP

Código PHP:
Ver original
  1. echo "
  2. <td>
  3.   <form name='form1' method='post' action=''><b>Nombre:
  4.      <label>
  5. </b><input type='text' autofocus id='codigo' name='codigo' list='characters' size='50' maxlenght='100' class='caja' placeholder='Nombre del producto' autocomplete='off' style='padding: 0.3em;'/>
  6.        <datalist id='characters'>
  7.              ".
  8.     include('c.php');
  9.     if($mysqli->connect_errno){
  10.     echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;
  11.     }
  12.     else{
  13.      $sql = $mysqli->query("SELECT * FROM productos where stock>0 order by nombre asc");
  14.      while($row = $sql->fetch_array(MYSQLI_ASSOC))
  15.       {
  16.       echo '<option value="'.$row['nombre'].'">'.$row['stock'].'</option>';
  17.       }
  18.       }
  19.       ".
  20.        </datalist>
  21.     </label><br>
  22.         </form>
  23.                  </td>";

Ahora entiendo la respuesta de @pateketrueke

Mira estoy asumiendo de que tienes un código parecido al anterior, como ya te dijeron esto esta mal, ya que el proceso del echo debe estar separados de otros ya que echo solo se encarga de mostrar en pantalla

Prueba tratando tu código de esta manera (corrigiendo ademas unos errores de la estructura del HTML):

Código PHP:
Ver original
  1. echo "
  2. <td>
  3.     <form name='form1' method='post' action=''>
  4.         <b>Nombre:</b>
  5.         <label>
  6.             <input type='text' autofocus id='codigo' name='codigo' list='characters' size='50' maxlenght='100' class='caja' placeholder='Nombre del producto' autocomplete='off' style='padding: 0.3em;' />
  7.             <datalist id='characters'>";
  8.             include('c.php');
  9.             if($mysqli->connect_errno){
  10.                 echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;
  11.             }else{
  12.                 $sql = $mysqli->query("SELECT * FROM productos where stock>0 order by nombre asc");
  13.                 while($row = $sql->fetch_array(MYSQLI_ASSOC)){
  14.                     echo '<option value="'.$row['nombre'].'">'.$row['stock'].'</option>';
  15.                 }
  16.             }
  17. echo "      </datalist>
  18.         </label>
  19.         <br>
  20.     </form>
  21. </td>";

Ahora bien el código anterior no se puede probar en versiones menores de IE 10 y en ninguna de Safari ya que datalist es de Html5

Mi pregunta es ¿Cual es el código que trae los datos diatónicamente?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 23/08/2013, 08:36
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con XAJAX y PHP

Cita:
Iniciado por jonni09lo Ver Mensaje
Código PHP:
Ver original
  1. echo "
  2. <td>
  3.   <form name='form1' method='post' action=''><b>Nombre:
  4.      <label>
  5. </b><input type='text' autofocus id='codigo' name='codigo' list='characters' size='50' maxlenght='100' class='caja' placeholder='Nombre del producto' autocomplete='off' style='padding: 0.3em;'/>
  6.        <datalist id='characters'>
  7.              ".
  8.     include('c.php');
  9.     if($mysqli->connect_errno){
  10.     echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;
  11.     }
  12.     else{
  13.      $sql = $mysqli->query("SELECT * FROM productos where stock>0 order by nombre asc");
  14.      while($row = $sql->fetch_array(MYSQLI_ASSOC))
  15.       {
  16.       echo '<option value="'.$row['nombre'].'">'.$row['stock'].'</option>';
  17.       }
  18.       }
  19.       ".
  20.        </datalist>
  21.     </label><br>
  22.         </form>
  23.                  </td>";

Ahora entiendo la respuesta de @pateketrueke

Mira estoy asumiendo de que tienes un código parecido al anterior, como ya te dijeron esto esta mal, ya que el proceso del echo debe estar separados de otros ya que echo solo se encarga de mostrar en pantalla

Prueba tratando tu código de esta manera (corrigiendo ademas unos errores de la estructura del HTML):

Código PHP:
Ver original
  1. echo "
  2. <td>
  3.     <form name='form1' method='post' action=''>
  4.         <b>Nombre:</b>
  5.         <label>
  6.             <input type='text' autofocus id='codigo' name='codigo' list='characters' size='50' maxlenght='100' class='caja' placeholder='Nombre del producto' autocomplete='off' style='padding: 0.3em;' />
  7.             <datalist id='characters'>";
  8.             include('c.php');
  9.             if($mysqli->connect_errno){
  10.                 echo "Fallo la conexion a la Base de datos !!! (Error: " .$mysqli->connect_errno. ")" ;
  11.             }else{
  12.                 $sql = $mysqli->query("SELECT * FROM productos where stock>0 order by nombre asc");
  13.                 while($row = $sql->fetch_array(MYSQLI_ASSOC)){
  14.                     echo '<option value="'.$row['nombre'].'">'.$row['stock'].'</option>';
  15.                 }
  16.             }
  17. echo "      </datalist>
  18.         </label>
  19.         <br>
  20.     </form>
  21. </td>";

Ahora bien el código anterior no se puede probar en versiones menores de IE 10 y en ninguna de Safari ya que datalist es de Html5

Mi pregunta es ¿Cual es el código que trae los datos diatónicamente?

Saludos
Primero lo primero: a que se refiere con ¿Cual es el código que trae los datos diatónicamente?

Segundo no funciona aunq es logico terminar un echo y empezar uno nuevo, la cosa es que si se fijan el error es claro, los valores son sacados de la DB pero el datalist como que no lo puede mostrar la funcion de xajax !!

Dice el error que la respuesta del servidor es invalida y pone: option value='samsung' y asi cada uno de los productos

Creo que el problema talvez sea xajax ya que la caja la tengo hecha aparte solo en php y funca perfectamente, pero si ya la meto en ajax me da eso
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #7 (permalink)  
Antiguo 23/08/2013, 08:47
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Error con XAJAX y PHP

jajajajaja que pena el corrector me jugo una mala pasada, quise decir dinamicamente, osea, ese código que nos muestras es el código que esta en la pagina normal, yo pregunto por el código el que usas para el ajax.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 23/08/2013, 18:20
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con XAJAX y PHP

Todo lo tengo en un archivo server !!! que es asi:

Código PHP:
Ver original
  1. <?php
  2. require("xajax/xajax.inc.php");
  3. // Funcion de Inicio.
  4. function inicio()
  5. {
  6.     $logo = "<center><img src='../img/ugb.png' alt='Logo UGB'></center>";
  7.     $respuesta = new xajaxResponse('ISO-8859-1');
  8.     $respuesta->addAssign("contenido","innerHTML",$logo);
  9.     return $respuesta->getXML();
  10.     }
  11.  
  12.     // Funcion para insertar datos en la DB.
  13.     function insert_producto($x)
  14.     {
  15.         include("conexion.php");
  16.         mysql_select_db("kosys", $c);
  17.         $res = new xajaxResponse('ISO-8859-1');
  18.         $error = "";
  19.  
  20.         $nom = $x["nombre"];
  21.         $desc = $x["desc"];
  22.         $cant = $x["cant"];
  23.         $rubro = $x["rubro"];
  24.         $provee = $x["provee"];
  25.         $cost = $x["costo"];
  26.         $may = $x["mayoreo"];
  27.         $det = $x["detalle"];
  28.        
  29.         if($det == ""){
  30.             $error = "Digite el precio de detalle...";
  31.         }
  32.         if($may == ""){
  33.             $error = "Digite el precio de mayoreo...";
  34.         }
  35.         if($cost == ""){
  36.         $error = "Digite el costo...";
  37.         }
  38.         if($cant == ""){
  39.         $error = "Debe Digitar Cantidad del Producto..." ;
  40.         }
  41.         if($nom == ""){
  42.         $error = "Debe Digitar el Nombre del Producto..." ;
  43.         }
  44.        
  45.         if($error != ""){
  46.         $res->alert($error);
  47.         }else{
  48.        
  49.         include("conexion.php");
  50.         @mysql_select_db("kosys", $c);
  51.        
  52.         $nom = $x["nombre"];
  53.         $desc = $x["desc"];
  54.         $cant = $x["cant"];
  55.         $rubro = $x["rubro"];
  56.         $provee = $x["provee"];
  57.         $cost = $x["costo"];
  58.         $may = $x["mayoreo"];
  59.         $det = $x["detalle"];
  60.         $fecha = date("Y-m-d");
  61.         $fecha_reg = strtotime ( "-1 day" , strtotime ( $fecha ) ) ;
  62.         $fecha_reg = date ( "Y-m-d" , $fecha_reg );
  63.         //$fecha_reg = date("Y-m-d"); //Aca se guarda con un dia adelantado.
  64.        
  65.        
  66.         $insert = mysql_query("insert into productos (id,nombre,descripcion,rubro,proveedor,stock,costo,pre_may,pre_det,activo,userid,fecha) values('','$nom','$desc','$rubro','$provee','$cant','$cost','$may','$det','1','1','$fecha_reg')", $c);
  67.                 if($insert){
  68.                     $error = "El Producto \"$nom\" se Agrego Exitosamente...!!";
  69.                     $res->redirect("index.php",0.5);
  70.                     $res->alert($error);
  71.                 }
  72.                    
  73.                 else{
  74.                     $error = "Error al Almacenar los Datos del Producto";
  75.                     $res->alert($error);
  76.                 }
  77.            
  78.         }
  79.        
  80.         return $res;
  81.     }
  82. // Para el registro de las funciones.
  83.     $xajax = new xajax("server.php","xajax_",true);
  84.     $xajax->setCharEncoding("iso-8859-1"); // Le indica la codificación que debe utilizar
  85.     $xajax->decodeUTF8InputOn();
  86.    
  87.     // Funcion de Inicio.
  88.     $xajax->registerFunction("inicio");
  89.        // Funcion insert_producto
  90.     $xajax->registerFunction("insert_producto");
  91.  
  92.     $xajax->processRequests();
  93.  
  94. ?>

Come vez todo codigo html va dentro de una variable que despues se adiere a un div y se muestra, cuando quiero poner codigo php, salgo con comillas y actuo !!

Puse dos funciones del codigo que utilizo
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #9 (permalink)  
Antiguo 23/08/2013, 18:45
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Error con XAJAX y PHP

Definitivamente debe ser un problema con la libreria XAJAX, a lo mejor hay bugs en la version que utilizas, ya hay nuevas versiones.

Saludos
  #10 (permalink)  
Antiguo 24/08/2013, 10:22
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Error con XAJAX y PHP

Yo uso Xajax de manera intensiva y es súmamente robusto. Efectivamente hay versiones más recientes, por ejemplo la 6 ya devuelve la respuesta como json en vez de xml, lo que ayuda a depurar. Por otra parte, te recomendaría formatear las salidas a utf8 para eliminar errores de la codificación de caracteres.

La sintaxis que usas no me es familiar, por lo que asumo que tu versión de xajax es algo antigua. Si te animas a usar la versión 5 o 6 te puedo asesorar en tus dudas.
  #11 (permalink)  
Antiguo 24/08/2013, 15:53
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con XAJAX y PHP

Cita:
Iniciado por ocp001a Ver Mensaje
Yo uso Xajax de manera intensiva y es súmamente robusto. Efectivamente hay versiones más recientes, por ejemplo la 6 ya devuelve la respuesta como json en vez de xml, lo que ayuda a depurar. Por otra parte, te recomendaría formatear las salidas a utf8 para eliminar errores de la codificación de caracteres.

La sintaxis que usas no me es familiar, por lo que asumo que tu versión de xajax es algo antigua. Si te animas a usar la versión 5 o 6 te puedo asesorar en tus dudas.
Bien pero al cambiar debere de hacer todo de nuevo ?? juela el archivo que ve arriba con dos funciones es el que tiene todo y son como unas 13 funciones largas que llevo, pasar todo seria trabajoso no cree
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #12 (permalink)  
Antiguo 25/08/2013, 10:14
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Error con XAJAX y PHP

ocp001a me ayuda

Baje la libreria xajax 6 beta y cambie lo siguiente:

Código PHP:
Ver original
  1. require("xajax/xajax_core/xajax.inc.php"); // Asi es la nueva ruta
  2.  
  3. //$xajax = new xajax("server.php","xajax_",true);
  4. $xajax = new xajax();
  5. $xajax->setCharEncoding('ISO-8859-1'); // Le indica la codificación que debe utilizar
  6. //$xajax->decodeUTF8InputOn();
  7. $xajax->setFlag("decodeUTF8Input",true);

Ok lo comentado es como lo hacia antes y segun vi en xajax-project.org/ la nueva forma de setCharEncoding es esa pero me muestra el error

Código:
Fatal error: Call to undefined method xajax::setCharEncoding() in  server.php on line 1048
que es la linea que tiene $xajax->setCharEncoding('ISO-8859-1');

Sera que debo cambiar algo mas ?? ya puse
Código:
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'ISO-8859-1');
Arriba del include segun lo aconsejan algunos pero aun no logra poner la respuesta como es
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #13 (permalink)  
Antiguo 29/08/2013, 10:54
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Error con XAJAX y PHP

Bueno, sucede que en las nuevas versiones el utf8 es la codificación por defecto y ya no se usa el método setCharEncoding, pero puedes definir la codifiación antes de crear la instancia xajax así;

require("xajax/xajax_core/xajax.inc.php"); // Asi es la nueva ruta
define ('XAJAX_DEFAULT_CHAR_ENCODING', 'mi codificacion');//codificacion que se quiere usar
$xajax = new xajax();

Etiquetas: mysql, select, sql, xajax
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 16:08.