Foros del Web » Programando para Internet » Javascript »

Javascript en PHP dentro de Javascript

Estas en el tema de Javascript en PHP dentro de Javascript en el foro de Javascript en Foros del Web. La consulta es un tanto complicada y seguramente sea debido a que me he enrollado como las persianas, pero a ver si me podéis echar ...
  #1 (permalink)  
Antiguo 24/07/2011, 17:37
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 11
Pregunta Javascript en PHP dentro de Javascript

La consulta es un tanto complicada y seguramente sea debido a que me he enrollado como las persianas, pero a ver si me podéis echar una mano, que realmente me estoy volviendo loco...

La situación es la siguiente:

Tengo un script en JS que me muestra imágenes mediante un bucle, hasta que llega al límite y se para. Estas imágenes se encuentran en una carpeta en concreto, pero quiero que únicamente me muestre aquellas imágenes que he obtenido mediante PHP/MySQL en un array.

El código PHP es el siguiente:
Código PHP:
Ver original
  1. /*conexion base de datos*/
  2. $database = "BASE DE DATOS";
  3. $table = "TABLA";
  4. $mysql_connect = mysql_connect("localhost","USUARIO","PASSWORD");
  5. $mysql_selectdb = mysql_select_db($database, $mysql_connect);
  6.  
  7. /*consulta a la base de datos*/
  8. $consulta_filtro = mysql_query("SELECT ID FROM ".$table." WHERE ojos='marrones'");
  9. $cant_filtro = mysql_num_rows($consulta_filtro);
  10.  
  11. $i = 1;
  12. while( $row = mysql_fetch_array($consulta_filtro)){
  13. $photo_id[$i] = $row["ID"];
  14.  
  15. $i++;
  16. }

De este modo he almacenado las imágenes que quiero en $photo_id, donde únicamente tengo que indicar el nº de la imagen que quiero mostrar.

El código JS es el siguiente:
Código Javascript:
Ver original
  1. <script src="assets/javascript/mootools-core-1.3.2.js" type="text/javascript" charset="utf-8"></script>
  2.     <script src="assets/javascript/mootools-more-1.3.2.1.js" type="text/javascript" charset="utf-8"></script>
  3.     <script src="assets/javascript/funciones.js" type="text/javascript" charset="utf-8"></script>
  4.     <script type="text/javascript" language="javascript">window.addEvent("domready", function(){
  5.    
  6. var maxLength    = <?PHP echo $cant_filtro;?>; // Max Number images
  7. var contadorImagenes = 1
  8.  
  9. var mosaicoImagenes = new Wall("wall", {
  10.                 callOnUpdate: function(items){
  11.                     items.each(function(e, i){
  12.                       var a = new Element("img[src=/images/"+contadorImagenes+".jpg]");
  13.    
  14.                         counterFluid++;
  15.                        
  16.                         // Reiniciar contador
  17.                         if( contadorImagenes > maxLength ) contadorImagenes = 1;
  18.                     })
  19.                 }
  20.             });
  21. // Init Wall
  22. mosaicoImagenes.initWall();
  23. });</script>

De este modo, lo que quiero hacer es sustituir el contador normal, que muestra por orden numérico las imágenes y de tal modo que no se puede alterar dicho orden, por las imágenes que he obtenido de la base de datos, de tal modo que a nivel técnico lo que quiero es:

$photo_id[contadorImagenes] cosa que realmente no se como puedo hacerlo... He probado de insertar la variable "contadorImagenes" mediante etiquetas <script language="javascript"..., texto normal, etc... pero no ha habido forma.
¿Se os ocurre algún modo?

Muchas gracias, la verdad es que le doy muchas vueltas y no encuentro la solución.
  #2 (permalink)  
Antiguo 24/07/2011, 18:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Javascript en PHP dentro de Javascript

Por si acaso, con PHP no tienes que obligatoriamente publicar etiquetas HTML, podrías crear un archivo PHP que contenga código de js y llamarlo directamente en las etiquetas script.

Es decir algo como esto

foo.php
Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/javascript;');
  3. // todo lo demas que quieras hacer con PHP
  4. $foo = 'foo';
  5. ?>
  6. alert('<?php echo $foo; ?>');
index.html
Código HTML:
Ver original
  1. <script type="text/javascript" src="foo.php"></script>
  2. </head>
  3. </body>
  4. </html>
No sé si es a lo que te refieres que quieres hacer.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 25/07/2011, 01:08
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Javascript en PHP dentro de Javascript

Hola Abimaelrc,

Realmente lo que mencionas creo que no me sirve de mucho, ya que es lo mismo que intento hacer, solo que mediante un archivo externo.

Lo que necesito es saber qué puedo hacer para que un Array en PHP me lo cuente en un bucle de javascript, de tal modo que cada vez que se repita el bucle me muestre un valor del array.

¿Cómo se podría hacer?
  #4 (permalink)  
Antiguo 25/07/2011, 07:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Javascript en PHP dentro de Javascript

Conviertelo a json y el resultado solo es cuestion de imprimirlo despues del = de la variable en javascript.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 25/07/2011, 17:25
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Javascript en PHP dentro de Javascript

De acuerdo Abimaelrc, sería mucha molestia pedir un ejemplo? Ando escaso de conocimientos en JS y desconozco absolutamente JSON.

Gracias y disculpa.
  #6 (permalink)  
Antiguo 25/07/2011, 17:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Javascript en PHP dentro de Javascript

Algo así
Código PHP:
Ver original
  1. var foo = <?php echo json_encode(array('foo', 'bar', 'baz')); ?>;
  2. // luego trabajar con javascript el json
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 26/07/2011, 18:29
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Javascript en PHP dentro de Javascript

Gracias por tu respuesta Abimaelrc,

Entonces, aplicándolo a la situación...
Código Javascript:
Ver original
  1. <script src="assets/javascript/mootools-core-1.3.2.js" type="text/javascript" charset="utf-8"></script>
  2.     <script src="assets/javascript/mootools-more-1.3.2.1.js" type="text/javascript" charset="utf-8"></script>
  3.     <script src="assets/javascript/funciones.js" type="text/javascript" charset="utf-8"></script>
  4.     <script type="text/javascript" language="javascript">window.addEvent("domready", function(){
  5. var foo = <?PHP echo json_encode($photo_id[¿?¿?¿Qué introduzco aquí?]);?>  
  6. var maxLength    = <?PHP echo $cant_filtro;?>; // Max Number images
  7. var contadorImagenes = 1
  8.  
  9. var mosaicoImagenes = new Wall("wall", {
  10.                 callOnUpdate: function(items){
  11.                     items.each(function(e, i){
  12.                       var a = new Element("img[src=/images/"+foo[contadorImagenes]+".jpg]");
  13.    
  14.                         contadorImagenes++;
  15.                        
  16.                         // Reiniciar contador
  17.                         if( contadorImagenes > maxLength ) contadorImagenes = 1;
  18.                     })
  19.                 }
  20.             });
  21. // Init Wall
  22. mosaicoImagenes.initWall();
  23. });</script>

Realmente no se como aplicarlo (como dije, no he trabajado nunca con JSON y prácticamente podría decir lo mismo con JS). ¿Me lo podrías indicar? Disculpa las molestias y gracias por el esfuerzo.
  #8 (permalink)  
Antiguo 27/07/2011, 15:06
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Javascript en PHP dentro de Javascript

Fijate si algo asi te sirve. Sino no logro entender que es lo que quieres:

Código PHP:
Ver original
  1. <script src="assets/javascript/mootools-core-1.3.2.js" type="text/javascript" charset="utf-8"></script>
  2.     <script src="assets/javascript/mootools-more-1.3.2.1.js" type="text/javascript" charset="utf-8"></script>
  3.     <script src="assets/javascript/funciones.js" type="text/javascript" charset="utf-8"></script>
  4.     <script type="text/javascript" language="javascript">window.addEvent("domready", function(){
  5.    
  6. <?php
  7. echo "var photo = [ ";
  8. for ($i = 0; $i <$cant_filtro; $i ++) {
  9.     echo ($photo_id + " , ");
  10. }    
  11. echo "];";
  12. ?>
  13.    
  14. var maxLength    = <?PHP echo $cant_filtro;?>; // Max Number images
  15. var contadorImagenes = 1
  16.  
  17. var mosaicoImagenes = new Wall("wall", {
  18.                 callOnUpdate: function(items){
  19.                     items.each(function(e, i){
  20.                       var a = new Element("img[src=/images/"+photo[contadorImagenes]+".jpg]");
  21.    
  22.                         counterFluid++;
  23.                        
  24.                         // Reiniciar contador
  25.                         if( contadorImagenes > maxLength ) contadorImagenes = 1;
  26.                     })
  27.                 }
  28.             });
  29. // Init Wall
  30. mosaicoImagenes.initWall();
  31. });</script>

Simplemente transforma el array PHP en un Array JS. Como lo hacemos? Recorriendo el array item por item e imprimiendolo en el formato que a JS le gusta!
  #9 (permalink)  
Antiguo 27/07/2011, 16:05
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 10 meses
Puntos: 36
Respuesta: Javascript en PHP dentro de Javascript

Hola, proba si te sirve:

Código PHP:
<?

/*conexion base de datos*/
$database "BASE DE DATOS";
$table "TABLA";
$mysql_connect mysql_connect("localhost","USUARIO","PASSWORD");
$mysql_selectdb mysql_select_db($database$mysql_connect); 

/*consulta a la base de datos*/
$consulta_filtro mysql_query("SELECT ID FROM ".$table." WHERE ojos='marrones'");

$cant_filtro mysql_num_rows($consulta_filtro);

while( 
$row mysql_fetch_array($consulta_filtro))
$photo_id[] = $row["ID"];

?>
<script src="assets/javascript/mootools-core-1.3.2.js" type="text/javascript" charset="utf-8"></script> 
<script src="assets/javascript/mootools-more-1.3.2.1.js" type="text/javascript" charset="utf-8"></script> 
<script src="assets/javascript/funciones.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" language="javascript">window.addEvent("domready", function(){
var foo = <?PHP echo json_encode($photo_id); ?>
var maxLength = <?PHP echo $cant_filtro;?>; // Max Number images
var contadorImagenes = 1
var mosaicoImagenes = new Wall("wall", {
callOnUpdate: function(items){
items.each(function(e, i){
var a = new Element("img[src=/images/"+foo[contadorImagenes]+".jpg]");
contadorImagenes++;
// Reiniciar contador
if( contadorImagenes > maxLength ) contadorImagenes = 1;
})
}
});
// Init Wall
mosaicoImagenes.initWall();
});</script>
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #10 (permalink)  
Antiguo 27/07/2011, 16:31
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Javascript en PHP dentro de Javascript

Gracias Sam90 y hgp147, pero la verdad es que ninguno de los dos códigos me ha funcionado.

En el tuyo Sam90, directamente se me queda la página en blanco, sin mostrar ningún resultado ni error.

Hgp147, en tu caso me pasa exactamente lo mismo, pero al menos carga toda la página (sin mostrar resultados, obviamente.)
  #11 (permalink)  
Antiguo 27/07/2011, 17:11
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 10 meses
Puntos: 36
Respuesta: Javascript en PHP dentro de Javascript

Corregido , ya la porbe en mi pc y funciona bien ahora.
Los archivos que están en los scripts los obtuve de: http://mootools.net/forge/p/the_wall

Código PHP:
<? 
 
/*conexion base de datos*/ 
$database "BASE DE DATOS"
$table "TABLA"
$mysql_connect mysql_connect("localhost","USUARIO","PASSWORD"); 
$mysql_selectdb mysql_select_db($database$mysql_connect);  
 
/*consulta a la base de datos*/ 
$consulta_filtro mysql_query("SELECT ID FROM ".$table." WHERE ojos='marrones'"); 
 
$photo_id = array(); 
 
while( 
$row mysql_fetch_array($consulta_filtro)) 
$photo_id[] = $row["ID"]; 
 
?> 
<script src="mootools-core-1.3.1.js" type="text/javascript" charset="utf-8"></script>  
<script src="mootools-more-1.3.1.1.js" type="text/javascript" charset="utf-8"></script>  
<script src="wall.js" type="text/javascript" charset="utf-8"></script> 
<script type="text/javascript" language="javascript">
 
window.addEvent("domready", function(){ 
var foo = <?PHP echo json_encode($photo_id); ?>;
var maxLength = foo.length; // Max Number images 
var contadorImagenes = 0;
var mosaicoImagenes = new Wall("wall", {
    "width":150,                
    "height":150,
    callOnUpdate: function(items){ 
        items.each(function(e, i){ 
            var a = new Element("img[src=images/"+foo[contadorImagenes]+".jpg]"); 
            a.inject(e.node).fade("hide").fade("in");
            contadorImagenes++; 
            // Reiniciar contador 
            if( contadorImagenes == maxLength ) contadorImagenes = 0; 
        }) 
    } 
}); 
// Init Wall 
mosaicoImagenes.initWall(); 
});</script> 
 
<div id="viewport">
<div id="wall"></div>
</div>
Cualquier duda me preguntas :).
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #12 (permalink)  
Antiguo 27/07/2011, 17:25
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: Javascript en PHP dentro de Javascript

¡Fantástico hgp147! Muchas gracias, la consulta ha quedado resuelta. Resolvemos por MP el resto ;)

Etiquetas: php+javascript+mysql
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:32.