last day (15 days later) » 

07:31
0
Q: ajax y PHP funciona bien local pero no en host

Mike DamianActualizacion 22/01/2020* esto me trae de regreso el json al consultar midominio.com/ajax.php?valor=5 forzando el valor dentro del codigo de ajax.php si me extrae los todos los campos solicitados. pero parece que el error esta en el json, segun un console log el formulario de slect la funcio...

¿Tienes bien los accesos a la base de datos? ¿dónde ocurre el error? ¿qué error te sale? La mayoría de veces, revisar el fichero error.log te da la pista para solucionar el problema.
Hola si e revisado el error_log y solo me sale un error en el SELECT, me dice lo siguiente: PHP Warning: Use of undefined constant cod_materia - assumed 'cod_materia' y este otro, PHP Warning: Use of undefined constant materia - assumed 'materia' esto por los dos campos que mando llamar de la base de datos que llenan las OPTION de mi SELECT
Tambien en la parte del en AJAX.PHP me sale este error y no se a que hace referencia. 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 '' at line 1
El error de constant cod_materia es porque accedes al array con $c = $f[cod_materia]; en lugar de $c = $f["cod_materia"]; es decir, te faltan las comillas. Pasa lo mismo con materia. Al corregir esto, puede que el "valor" que pasas a la función javascript que ejecuta el AJAX, ya sea correcto y por lo tanto, se solucione el segundo error. Por otro lado, revisa las entradas de SQL Injection en esta misma web. Asumo que la conexión en la base de datos en la última parte de tu código, no la muestras pero la haces.
muchas gracias por tu apoyo, ya correji ese error gracias a tu comentario, ahora si observas en el apartado ajax.php, hago uso de $valor, y revisando el error_log me aparece esto: PHP Notice: Undefined index: valor, esto en la parte comentada donde enviamos el dato en la variable valor, despues de eso, pues la verdad es que la base de datos solo tiene un diferencia, en mi localhost se maneja como utf8mb4_unicode_ci y en el host esta como latin1_swedish_ci, sera que ahi radica el problema?
Pues entonces es que this.value no tiene ningún valor cuando tu función es llamada. Prueba a forzar un valor a mano a ver si es eso, por ejemplo: onchange="mifuncion(1)". También puedes mirar el código fuente html generado a ver si el campo value de los option, tiene un valor correcto. O inmediatamente después de tu función function mifuncion(valor){ haz un console.log(valor) a ver que hay.
07:31
probe lo que me dijiste, y el select si envia el valor que esta y en el HTML si se llena con los campos que mando pedir en el select. el problema debe estar entonces en el retorno, es decir en la sintaxis del AJAX.php. lo que es curioso que funcione en el xampp y no en mi host. Gracias por la ayuda si se te ocurre otra cosa lo agradeciria y si logro solucionarlo lo publicare.
@track3r me sale este error al final del script, lo puse en un alert y me sale esto: SyntaxError: Unexpected end of JSON input
Si no veo el código poco puedo hacer...
voy actualizar el codigo para que veas. lo acabo de actualizar @track3r
Llama al fichero php directamente (por ejemplo, tudominio.com/fichero.php?valor=1), para eso, cambia $_POST por $_REQUEST o fuerza un valor, deberías ver el json, pega el resultado en tu pregunta para ver de que se trata porque parece que el json no es correcto. Probablemente haya un warning o algo que lo corrompe.
@track3r hice lo que me comentaste, si hago lo de request la pagina queda en blanco, si forzo el valor o le doy el valor ?valo=3 me regresa lo de la primera imagen que puse ya en la pregunta, actualizada. en todos los campos me sale NULL
Si la página queda en blanco mal asunto, revisa el fichero error.log del servidor ya que habrá un error. En cualquier caso, la consulta SQL no está devolviendo nada, ¿puedes probar la consulta directamente en la base de datos o en phpmyadmin a ver si funciona? ¿los datos de acceso a la base de datos son correctos?
07:31
@track3r la consulta directa en SQL si me devuelve datos, con la sintaxis que uso en el apartado AJAX.PHP, otra cosa el ERROR_LOG del servidor me lanza un warning en la linea 13, este warning: PHP Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in /home/facultad/public_html/cursos.facultaddeartesuabc.com/aj‌​ax.php on line 13 la linea en cuestion es esta $r = mysqli_query( $con, $query ); $resultados = mysqli_fetch_array( $r );
hice otra prueba, parece que el mifuncion(valor) no esta enviando el dato, o mi ajax.php no lo recive de forma correcta, ya pude hacer que forzando el valor me imprime en la pantalla del navegador el dato que le solicito, que crees que tenga mal en la function? @track3r
Por el error que nos muestras "Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result" parece que tu conexión con la base de datos, no retorna nada en $r al hacer mysqli_query. Haz un print_r de $r antes de mysqli_fetch_array para ver si hay algo ahí o no.
Hice el print_r($r) y me da este resultado. mysqli_result Object ( [current_field] => 0 [field_count] => 12 [lengths] => [num_rows] => 1 [type] => 0 ) Fotografi� Digital (FAU)
Creo que ya lo tengo, añade , MYSQLI_ASSOC al mysqli_fetch_array para que puedas acceder como array, quedaría así: $resultados= mysqli_fetch_array($r, MYSQLI_ASSOC); y en el otro fichero así: while ( $f = mysqli_fetch_array( $re, MYSQLI_ASSOC ) ) {
Vale, leyendo la documentación no será eso, porque por defecto es MYSQLI_BOTH y por tanto se puede acceder tanto como objeto como por array. La verdad, estoy un poco perdido con tu problema. ¿Hay duendes en tu ordenador? Ey no! viendo tu actualización y con tu último comentario, me doy cuenta de que el resultado de la SQL no es correcto, pues solo te devuelve un campo con el valor Fotografía Digital (FAU) cuando debería devolver como mínimo 12 campos.... Prueba a hacer un echo de la SQL antes de ejecutar el query y pégala tal cual en el phpmyadmin a ver que devuelve.
@track3r Actualice la pregunta y agregue unas cosas que hago, la consulta en phpmyadmin si me devuelve todos los datos incluso ahora directamente ejecutando la pagina midominio/ajax.php me imprime los datos pero me marca en rojo el error del json end
Al parecer, hay un error en el fichero json generado. Puede que sea un carácter, un texto extraño, una codificación mal, muchas cosas. Mira el json generado a ver si es correcto.
07:31
como puedo ver el json generado?, otra cosa, lo raro es que en el xampp de forma local si me funciona, es en el host del dominio donde no, y hablando de caracteres extraños, la base de datos con los acentos me devuelve valores extraños.
Para ver el código generado del json, solo tienes que ver el código fuente de la página ajax.php?valor=5 normalmente ctrl+u o botón derecho, ver código fuente.
la verdad ya me estoy rindiendo, le e movido de todo, lo que me comentan, lo que leo, y no entiendo porque de forma local cuando pruebo todo desde XAMPP funciona pero cuando lo monto en el host de mi dominio, simplemente no. @track3r muchas gracias, actualice la pregunta con lo que me arroja el json despues de la consulta directa.
 
11 hours later…
18:20
ya lo solucione, cambie de método, ahorita actualizare todo el post con la solución que utilice, muchas gracias.

last day (15 days later) »