PHP - carga dinamica con ajax desde php

 
Vista:
sin imagen de perfil

carga dinamica con ajax desde php

Publicado por Yuli (9 intervenciones) el 08/11/2014 15:15:23
Hola a todos!

Este tema es para que me ayuden a resolver un problema que tengo en cargar mi Index y como vi uno parecido en este foro de php creo que me van a poder ayudar.

Tengo mi index.php con un div id="contenido" al que le cargo desde la base (mysql) de forma inicial sitios mejores calificados, esto implica un query con join de tablas por lo que termino devolviendo un select con 6 datos por cada sitio, es decir una lista de sitios con 6 datos por mostrar cada uno.

Para eso llamo desde el header a "js/archivo.js" -> donde tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
function (){
var ini = "uno";
cargarIndex(ini)
}
function nuevoAjax() {
    var xmlhttp = false;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E) { xmlhttp = false; }
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); }
    return xmlhttp;
}
 
function cargarIndex(ini) {
    //debugger;
    var uno;
    var capa = document.getElementById("contenido");
    var ajax = nuevoAjax();
    ajax.open("POST", "http://localhost/.../controllerPHP.php", true);
    ajax.setRequestHeader("Content-Type", "application/x-www-form.urlencoded");
    ajax.send("d=" + ini);
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4)
			{
				if(ajax.responseText != null)
						capa.innerHTML = '<div class="contArticIzq"><article id="articPublic1" class="articPublic"><div class="parteSupArtic"><hgroup><a href="detalles_publicacion.php"><h3 class="tituloPublic">'+ajax.responseText[1]+'</h3></a></hgroup><div id="ciudadPublic1"><p class="ciudadPublic">'+ajax.responseText[5]+','+ajax.responseText[4]+'</p></div><img id="imagenPublic1" class="thumb" src="../imagenes/Hotel_Parque_Y_Sol.jpg" alt="Hotel Parque Y Sol"><div id="textoPublic1"><p>'+ajax.responseText[3]+'</p></div></div><div class="parteInfArtic"><div class="califPublic"><img src="../imagenes/5Estrellas.gif"></div></div></article></div>';
    	}
	}
}
.
.
.
hasta ahora lo traigo asi porque estoy probando que en la base solo hay un sitio para mostrar (primero que salga lo simple y despues lo extiendo) por lo que mi php seria
<?php
include("../coneccion.php");
class establecimientoIndex{
		public $val1;
		public $val2;
		public $val3;
		public $val4;
		public $val5;
		public $val6;
 
		function __construct($val1, $val2,$val3,$val4,$val5,$val6)
		{
			$this->val1= $val1;
			$this->val2= $val2;
			$this->val3= $val3;
			$this->val4= $val4;
			$this->val5= $val5;
			$this->val6= $val6;
	    }
	}
     $tipoDato=$_POST['d'];
		//switch($tipoDato)
		if($tipoDato == 'uno')
		{
			echo obtenerLosMejoresCalificados();//break;
			//case 'dos': echo 'no implemetado'; break;
		}
 
	function obtenerLosMejoresCalificados(){
			$db = conectarbd();
			$sql = "SELECT e.idEstableci,e.nombre,e.direccion,e.descripcion,p.descripcion,c.descripcion
					FROM establecimiento e inner join ciudad c on e.idCiudad = c.id 
						inner join provincia p on c.idProvincia = p.id 
					WHERE calificacion = 5 and e.idEstado = 1 
					ORDER BY lat LIMIT 1";
			$mejores = array();
			$result = ejecutarQuery($db, $sql);
			while($row = $result->fetch_assoc()){
				$data= new establecimientoIndex($row['e.idEstableci'], $row['e.nombre'],$row['e.direccion'],$row['e.descripcion'],$row['p.descripcion'],$row['c.descripcion']);
				array_push($mejores, $data);
			}
			cerrarConexion($db,$sql);
			echo json_encode($mejores);
		}
?>
.
.
.
Esto me devuelve todo undefined para cada campo y no se si es por la forma de consulta que estoy haciendo ya que el select traeria todos los registros que cumplan con la condicion y yo en el ajax.responseText los trato como si fueran valores planos de un array simple (no se si me explico bien! o si es otra cosa), lo estuve revisando y cambiando ajax.responseText[x][y] pero claramente eso no es y no encuentro la solucion. Tal vez sepan una mejor forma de hacerlo y de paso resolver cuando tenga mas datos en la base. Ademas es la primera vez que empiezo con POO en php y con ajax crei que seria mas facil..

Ante todo gracias por el tiempo. y espero puedan ayudarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

carga dinamica con ajax desde php

Publicado por Ismael (41 intervenciones) el 11/11/2014 23:42:07
Hola,
no se podría ser en la consulta ya que veo que estas asignando ALIAS por ejemplo a establecimiento pero te ha faltado poner AS a e , a ver ...."establecimiento AS e" y así con todos los demás.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

carga dinamica con ajax desde php

Publicado por Eva (9 intervenciones) el 12/11/2014 14:14:17
No, en realidad no es eso...
es lo que devuelve la consulta...¿Como hago para recorrer una lista de resultados en el metodo 'onreadychangestate'?..me parece que ahi es el problema..bah no sé!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar