Pasar un array de una pagina php a otra Js

Iniciado por protus08, 25 Julio 2020, 03:40 AM

0 Miembros y 1 Visitante están viendo este tema.

protus08

Hola todos, espero me puedan ayudar, tengo 3 paginas 2 php y una js, necesito que al presionar un botón en la primera pagina php pueda pasar un array otra pagina js y esta envie esos datos a otra pagina php y esta ultima lo procese e imprima el resultado en primera pagina php, pero no se como hacerlo, si quiero pasar un dato lo puedo hacer pero no se como hacerlo con un arrray.

este es mi código donde tengo el botón, dependiendo de lo que triga de la base de datos, me crea N input , que es lo son los que necesito pasar a la pagina js y como lo había dicho antes solo consigo que me pase el valor del primero que encuentra.
pagina1.php
Código (php) [Seleccionar]

@extends('layouts.app2')

@section('contenido')

      <div class='container'>

            <form id='formulario'>

        <div class='row md-2'>

                   <button class='btn-secondary btn-default row mt-5' type='submit' id='analizar' name='analizar'>Analizar</button>



          </div>

          <div class='row'>



                <table class='table  table-format table-hover'>

                  <thead>

                    <tr>

                       <th scope='col'>IP</th>

                      </tr>

                  </thead>

                  <tbody>

                 @foreach ($enlaces as $enla)



                     <tr>

                       <td><input id='prueba1' type='text' name='ip'  value='{{$enla.ip}}'></td>

                      <td><div id='estado'><div id='respuesta'></div></td>

                      </tr>



                @endforeach



                  </form>

                  <script src="{{ asset('js/app/ping.js')}}"></script>

                  </tbody>

              </table>

         </div>

     </div>

@endsection


este de aca es mi codigo js, donde solo me procesa el primer input que encuentra,y lo envia a otra pagina php donde trabajo ese datos. (solo logro que tome el primer input que pilla, no se como hacer para que recorra todos los que se creen en foreach de la pagina php)

Pagina2.js

Código (javascript) [Seleccionar]

formulario.addEventListener('submit',function(e){

  e.preventDefault();

console.log('pinchaste el boton')

var datos = new FormData(formulario);

console.log(datos.get('ip'))





fetch('http://localhost/scadabita2/resources/views/app/post.php',{

  method:'POST',

  body:datos

})

.then( res => res.json())

.then( data => {

  console.log(data)

  if(data === 'error')

  {

    respuesta.innerHTML=`<div>

   error

    </di>`

  }else{

    respuesta.innerHTML=`<div>

    ${data}

    </di>`

  }



})

})


esta es la pagina php que procesa el dato que envia la pagina js e imprime el resultado en la primera pagina php
pagina3.php
Código (php) [Seleccionar]

<?php

$data
=$_POST['ip'];

 
$PING1='ping '.$data.' -n 4';

   
$res=shell_exec($PING1);

   
$var=strstr($res'(100% perdidos)');

   
$findme='recibidos = 0';

   
$pos strpos($res$findme);

 

   if(
$pos == false)

   {

       
$findme='recibidos = 4';

        
$pos strpos($res$findme);

 

            if(
$pos == false)

            {

                
$RESULTADO="OKNOK.jpg";

                echo 
json_encode("<img src='../img/".$RESULTADO."'>");

            }

            else

            {

                
$RESULTADO="Ok.jpg";

                echo 
json_encode("<img src='../img/".$RESULTADO."'>");

            }

 

    }else

        {

        
$RESULTADO="NOk.jpg";

            echo 
json_encode("<img src='../img/".$RESULTADO."'>");

        }

 

?>



Espero me puedan ayuda por favorr!!!

[u]nsigned

#1
No te termine de entender del todo, pero si queres pasar muchos campos con el mismo nombre podes usar la notacion de array de php en el nombre del mismo en tu archivo pagina1.php agregandole corchetes [] en el atributo name:

Código (html4strict) [Seleccionar]
<td><input id='prueba1' type='text' name='ip[]'  value='{{$enla.ip}}'></td>

Sin agregar los corchetes cada nuevo elemento de tu bucle esta sobreescribiendo al anterior y al final solo tendras un único valor para la variable ip cuyo valor sera el del ultimo item del foreach.

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

protus08

[quote author=nsigned link=topic=506010.msg2225607#msg2225607 date=1595753084]
No te termine de entender del todo, pero si queres pasar muchos campos con el mismo nombre podes usar la notacion de array de php en el nombre del mismo en tu archivo pagina1.php agregandole corchetes [] en el atributo name:

Código (html4strict) [Seleccionar]
<td><input id='prueba1' type='text' name='ip[]'  value='{{$enla.ip}}'></td>

Sin agregar los corchetes cada nuevo elemento de tu bucle esta sobreescribiendo al anterior y al final solo tendras un único valor para la variable ip cuyo valor sera el del ultimo item del foreach.
[/quote]

muchas gracias por responder, cambie lo que me indicas, pero básicamente lo que no se, es como hacer para pasar ese arreglo a la pagina donde tengo mi codigo JS y como procesarla ahí, para pasarla a la otra pagina php y recibir el resultado en la primera pagina php. si me pudieras ayudar por favor.