¿Se puede hacer un for con una variable que contenga PHP?

  • Autor Autor samuelsuteras
  • Fecha de inicio Fecha de inicio
samuelsuteras

samuelsuteras

Épsilon
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Buenas!

Quiero optimizar un poco mi codigo y me preguntaba si podria hacer un for o un while en javascript usando una variable que contiene valores PHP, Dejo el ejemplo a continuacion.


Tengo este codigo:


JavaScript:
var var_p1 = <?php $variable_product = wc_get_product($variations_id[0]); echo $price = $variable_product->get_price(); ?>;
            var var_p2 = <?php $variable_product = wc_get_product($variations_id[1]); echo $price = $variable_product->get_price(); ?>;
            var var_p3 = <?php $variable_product = wc_get_product($variations_id[2]); echo $price = $variable_product->get_price(); ?>;
            var var_p4 = <?php $variable_product = wc_get_product($variations_id[3]); echo $price = $variable_product->get_price(); ?>;


Donde variations_id es un array de php y el resto son funciones de woocommerce.

Como es algo tan repetitivo me gustaria saber si se puede hacer esto en un for en javascript.


JavaScript:
for (var i = 0; i <= 9; i++) {
   n += <?php $variable_product = wc_get_product($variations_id[i]); echo $price = $variable_product->get_price(); ?>;
}

Lo he intentado pero no lo consigo hacer funcionar
 
Que se ejecuta primero? el codigo javascript o el codigo php? creo que ahi esta el problema.
 
Pero y como hago si necesito primero el JS?
 
Pero y como hago si necesito primero el JS?

El js solo comienza a ejecutarse cuando estés del lado del cliente(navegador), o sea, cuando el PHP (server) haya terminado su ejecución.

Si necesitas por ej. tener un array en js con los precios, puedes generarlos con PHP de esta manera:

PHP:
<script type="text/javascript">
  const precios = [];
  <?php
  for ($i ; $i <= 9; i++) {
    $variable_product = wc_get_product($variations_id[1]);
    $price = $variable_product->get_price();
    echo "precios.push($price)";
  }
  ?>
  console.log(precios) // mostramos el array generado en la consola.
</script>

Luego con ese array puedes concatenar, hacer foreach a los datos, etc.

kj
 
Muchas gracias, voy a probar y te comento.

Por cierto feliz cumple 🙂
 
Mira,

esto en PHP antes de <html>
1648668025239.png


Luego abajo en el HTML
1648668130079.png


En resumen, con PHP extraigo info de la base de datos y construyo código HTML
 
Si es verdad en primer lugar se carga el PHP en el lado servidor y construye la pagina, después de esto el cliente carga el HTML resultante con su JavaScript y sus eventos.
Por experiencia no es muy bueno tener codigo JS embebido con PHP como hizo kj2
Es más... es muy raro ver ese tipo de código embebido en los actuales scripts, y es de malas prácticas programando
- En donde se aplica el JavaScript es en uno o dos archivos a lo sumo con codigo JS.
- El PHP se encuentra en controladores y modelos dentro de aplicación y bien diferenciados.
- El HTML apoyado por el CSS y JS se encuentra en las vistas que reflejan la pagina del usuario.
 
Última edición:
Si es verdad en primer lugar se carga el PHP en el lado servidor y construye la pagina, después de esto el cliente carga el HTML resultante con su JavaScript y sus eventos.
Por experiencia no es muy bueno tener codigo JS embebido con PHP como hizo kj2
Es más... es muy raro ver ese tipo de código embebido en los actuales scripts, y es de malas prácticas programando
- En donde se aplica el JavaScript es en uno o dos archivos a lo sumo con codigo JS.
- El PHP se encuentra en controladores y modelos dentro de aplicación y bien diferenciados.
- El HTML apoyado por el CSS y JS se encuentra en las vistas que reflejan la pagina del usuario.
Coincido en gran parte. Siempre resulta más cómodo tener bien modularizado el código, para evitar fallos indetectables a futuro. Aunque si difiero en que el patron MVC sea la panacea para cualquier problema. Por ejemplo, el codigo del compañero kj2, bien enfocado desde el paradigma reflexivo o desde la metaprogramación, puede ser perfectamente válido. Código que genera código.
Pero como ya dije, este enfoque muchas veces abre más huecos de los que cierra, y es aplicable a casos concretos (yo diria "excepcionales"). Para este problema en particular, seguramente se pueden encontrar soluciones más elegantes, modulares y mantenibles, que no hagan uso de este tipo de magia negra.
 
Se hacen demasiado lío.

El problema se lo debe resolver según el contexto, que en este caso es un usuario que aún no sabía la diferencia del backend y frontend en lo que a ejecución respecta.

Si se ponen a decirle que haga un correcto diseño, cuando la gran mayoría de programadores con los que te encuentras hoy en día no te saben ni diferenciar un patrón de diseño de una arquitectura de diseño o un MVC de un DDD (muchos ni siquiera conocen otra cosa aparte de MVC). Le están poniendo el listón muy alto y con sobre ingeniería, cuando ahora mismo lo que requiere para avanzar es más picar código que ponerse a pensar como hacer MVC en wordpress (y hago incapié en que es un wordpress justamente xD).

kj
 
Se hacen demasiado lío.

El problema se lo debe resolver según el contexto, que en este caso es un usuario que aún no sabía la diferencia del backend y frontend en lo que a ejecución respecta.

Si se ponen a decirle que haga un correcto diseño, cuando la gran mayoría de programadores con los que te encuentras hoy en día no te saben ni diferenciar un patrón de diseño de una arquitectura de diseño o un MVC de un DDD (muchos ni siquiera conocen otra cosa aparte de MVC). Le están poniendo el listón muy alto y con sobre ingeniería, cuando ahora mismo lo que requiere para avanzar es más picar código que ponerse a pensar como hacer MVC en wordpress (y hago incapié en que es un wordpress justamente xD).

kj
Jajaja no bro... No es lio. Es solo una pequeña y sana discusión entre programadores que saben lo que hacen.
A mis pupilos yo siempre trato de enseñarlos a pensar desde diferentes perspectivas, para que sepan que han 50.000 formas de resolver un problema. Por eso le respondí al amigo samuelsuteras con una pregunta. Para que pensara un poco. Porque es demasiado fácil dejarle la solución y ya.
Es verdad que parece no saber la diferencia entre el back y el front, pero se ve que quiere aprender y mejorar. Y eventualmente lo va a lograr.
 
Atrás
Arriba