php – POST devuelve array vacío en el segundo formulario

Tengo una vista a la que llego desde un controlador para mostrar un modelo concreto de camiseta. Después hago un post en la misma página para que elija el color de la camiseta y poder mostrar una lista con las cantidades de cada talla de ese modelo y color concretos, y poder modificarlas. Pues bien el segundo formulario que se pinta dentro de un bucle while, devuelve siempre un array vacío. Si cambio por get, sí recibo los datos por la url, pero ya no me lleva al controlador. Les dejo el código de la vista y del controlador que la pide. En el controlador que recibe los datos solo hay un var_dump() para verificar qué datos llegan.
Controlador:

public function indexByModel()
    {
        if(isset($_GET) && isset($_GET('modelo'))){
            $modelo = (int)$_GET('modelo');
                                               
            $prenda = New Prenda();
            $prenda->setId_modelo($modelo);
            $prendas = $prenda->getByModel();
            
            $result = array();
            $count = 0;
            while ($row = $prendas->fetch_object()){
                $result($count) = $row;
                $count++;
            }
            require_once 'views/prendas/prenda.php';    
    }else{
        echo "No llega el dato por la URL";
    }
       
}

y la vista ‘views/prendas/prenda.php

<div class="row">
<div class="col-5">
    <h1 class="bg-succes text-start mb-1"><?=$result(0)->modelo?></h1>
    <div>
        <img class="border-secondary img-thumbnail my-2" width="90%" src="<?=_URL_BASE_?>/assets/img/CamisetasUnisexCategoria.png">
    </div>
    <div>
        <?=$result(0)->categoria?> / <?=$result(0)->familia?>
    </div>
</div>
<div class="col">
    <h3>Colores</h3>
    
    <div class="row justify-content-start mb-5">  
        <?php $colores = Utils::showColores(); ?>
        <form action="" method="POST">
        <?php while ($color = $colores->fetch_object()): ?>       
            <button name="color" value="<?=$color->id?>" style="background-color:#<?=$color->codigo?>" title>
                <svg width="30" height="50" class="mr-3">
                    <rect width="30" height="30" style="fill:#<?=$color->codigo?>;" alt="<?=$color->color?>" />
                </svg>
            </button>  
        <?php endwhile; ?>   
        </form>
    </div>
    <?php if (isset($_POST) && isset($_POST('color'))): ?>
        <?php $color = (int)$_POST('color'); ?>
        <?php $prendas = Utils::showByModelColor($modelo, $color); ?>
        
        <table class="table text-center">
            <thead>
                <th>Color</th>
                <th>Talla</th>
                <th>Cantidad</th>
                <th>Modificar</th>
            </thead>
            <form action="<?=_URL_BASE_?>?controller=PrendaController&action=update" method="POST">
       
            <?php while($prenda = $prendas->fetch_object()): ?>
                <tr>
                    <td><?=$prenda->color?></td>
                    <td>
                        <?=$prenda->talla?>
                    </td>
                    <td>
                        <?=$prenda->cantidad?>
                    </td>
                    <td>
                       <input type="hidden" name="id()" value="<?=$prenda->id?>" />
                       <input type="number" name="cantidad()"value="<?=$prenda->cantidad?>" min="0" /> 
                        
                    </td>
                </tr>
                <?php endwhile; ?>
                
        </table>
        <input class="btn btn-dark float-right mr-2" type="submit" value="Actualizar" />        
        </form>
        <?php endif; ?>

</div>

El primer POST recibe correctamente el código de color para poder mostras las cantidad de prendas que hay en stock de ese modelo y color.
El segundo formulario muestra las prendas por color y talla y sus cantidades y debería envíar el id de la prenda y la cantidad, pero llega siempre vacío.
He leído páginas de este foro y en inglés. Y he buscado lo que he podido y entendido sobre si podía envíar dos posts sucesivos en la misma página, y o bien no lo he encontrado o no he entendido lo que he encontrado. Llevo días atascado, agradezco su ayuda.

matlab – La función fitlm devuelve “Warning: Regression design matrix is rank deficient to within machine precision.”

usando la función fitlm, de la toolbox Statistical and Machine Learning, para obtener modelo lineal recibo el mensaje “Warning: Regression design matrix is rank deficient to within machine precision.”
El código que utilizo es:

mdl = fitlm( tabla, ‘linear’, ‘RobustOpts’, ‘off’ );

tabla es una tabla con 766.539 filas y dos columnas

   Min    Median   Max 

WSPD 0.18776 9.3878 21.216
WVHT 0.17 1.03 3.6

PHP devuelve 1 hora más de la establecida

Estimados tengo la siguiente consulta estoy trabajando en localhost con wamppserver, actualmente en mi pais (Chile) son las 2021-04-18 22:49:16, pero si yo ejecuto las siguientes lineas en PHP, me devuelve 1 hora más siendo las 2021-04-18 23:49:16, si ejectuto las mismas lineas de codigo, pero en el servidor web, me devuelve la hora de forma correcta.

date_default_timezone_set("America/Santiago");
$fecha = date('Y-m-d H:i:s');
echo $fecha;

Adjunto los php.ini de ambos servidores

Localhost

introducir la descripción de la imagen aquí

Servidor Web

introducir la descripción de la imagen aquí

array – ¿Quisiera entender que devuelve cada parte de la línea de código?¿Cómo recibe e interpreta la matriz Data a start luego de pasar por for?

Data es <class ‘numpy.ndarray’> (4,1) ((-1.38695219) (0.54272042) (-0.42211588) (1.26634765))

Obs = 2

X = np.atleast_3d(np.array((Data(start:start + Obs) for start in range(0, Data.shape(0) - Obs))))

print(X)

(((-1.38695219) ( 0.54272042)) (( 0.54272042) (-0.42211588)))

Porque al leer un archivo de texto externo me devuelve un None, Python

tengo un script que carga un mensaje externo y lee su informacion. El problema es que me devuelve un None

def cargar_mensaje():

    ruta_mensaje = input("Inserte la ruta del arch de texto: ")

    r = open(ruta_mensaje, "r")
    mensaje = r.read()
       
    r.close()

    return mensaje

print(cargar_mensaje())

¿Puede ser por la codificación del txt? (Es undicode)

script – return row[0] === userId.matches(userId); no devuelve nada

// Archivo Código.gs

// URL que genera Google Sheet al solicitar link para compartir
var myGoogleSheetURL =
  "https://es.stackoverflow.com/OCULTO";

// Nombre de la hoja donde estan nuestros datos
var myGoogleSheetName = "https://es.stackoverflow.com/OCULTO";

/**
 * Función de inicialización ( la primera que se ejecuta )
 */
function doGet() {
  // Muestra el HTML
  var template = HtmlService.createTemplateFromFile('formulario');
  return template.evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

/**
 * Funcion que sera llamada al hacer click en el boton del formulario
 * @param form formulario recibido desde el frontend
 */
function receiveForm(form) {
  // Obtenemos el valor del campo userId
  var userId = form.userId;

  // Llama a la funcion para buscar datos, pasandole el parametro
  return searchData(userId);
}

/**
 * Busca en la hoja de calculos los datos del usuario
 * @param userId ID del usuario que queremos buscar
 */
function searchData(userId) {
  // Obtiene la hoja de calculos
  var sheet = getSpreadSheet(myGoogleSheetURL, myGoogleSheetName);

  // Recorre todas las filas buscando la coincidencia del userID con el valor
  // de la columna 0
  var rowsResult = sheet
    .getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())
    .getValues()
    .filter(function (row) {
      return row(0) === userId.matches(userId);
    });

  // Obtiene el resultado
  var firstRow = rowsResult(0);

  // Parsea cada uno de los campos
  var user = {
    id: firstRow(0),
    email: firstRow(1),
    phone: firstRow(2),
  };

  // Serializa el OBJ para enviar la respuesta al frontend
  var result = JSON.stringify(user);
  return result;
}

/**
 * Obtiene una hoja de calculo según la URL y nombre de la hoja especificados
 */
function getSpreadSheet(url, sheetName) {
  var ss = SpreadsheetApp.openByUrl(url);
  var sheet = ss.getSheetByName(sheetName);
  return sheet;
}
<!-- archivo formulario.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>OCULTO</title>
    <link rel="icon" href="https://es.stackoverflow.com/OCULTO">
    <base target="_top" />
    <style>
      :root {
        --primary-color: #4caf50;
      }
      body {
        text-align: center;
        font-family: 'Helvetica', 'Arial', sans-serif;
      }
      input {
        font-size: 16px;
      }
      input(type="text") {
        border: none;
        border-bottom: 2px solid var(--primary-color);
        margin: 10px;
        padding: 10px;
        text-align: center;
      }
      input(type="button") {
        background-color: var(--primary-color);
        border: none;
        color: white;
        padding: 16px 32px;
        text-decoration: none;
        margin: 10px 2px;
        cursor: pointer;
      }
      input(type="button"):disabled {
        background-color: #dadada;
      }
    </style>
    <title>OCULTO</title>
  </head>

  <body>
    <!-- Inicio del formulario-->
    <form action="https://es.stackoverflow.com/#">
      <input
        id="inputUserId"
        type="text"
        value=""
        name="userId"
        placeholder="PRODUCT NAME"
        onfocus="clearDiv()"
        onkeyup="javascript:this.value=this.value.toUpperCase();"
      />
      <br />

      <input
        id="btnSend"
        type="button"
        onClick="formSubmit()"
        value="Search"
      />
    </form>
    <!-- Fin del formulario-->

    <!-- div donde se mostraran los resultados -->
    <br>
    <div id="divResponse"></div>
  </body>
  <script type="text/javascript">
    // Función que se ejecuta al presionar el boton del formulario
    function formSubmit() {
      document.getElementById("divResponse").innerHTML = "Searching...";

      // Llama a la funcion receiveForm de nuestro script
      google.script.run
        .withSuccessHandler(onSuccess)
        .withFailureHandler(onFailure)
        .receiveForm(document.forms(0));

      // Deshabilita los inputs y el btn mientra se hace la llamada
      disableInputs();
    }

    // Función que se ejecuta cuando la busqueda ocurre con exito
    function onSuccess(response) {
      // Parsea la respuesta
      var user = JSON.parse(response);

      // Carga el campo email de la respuesta en el div
      document.getElementById("divResponse").innerHTML = user.email;

      // Habilita el campo y boton
      enableInputs();
    }

    // Función que se ejecuta cuando la busqueda ocurre con ERROR
    function onFailure() {
      // Pone mensaje en div
      document.getElementById("divResponse").innerHTML = "Fabric not found";
      enableInputs();
    }

    // Desabilita boton y campo de texto
    function disableInputs() {
      document.getElementById("btnSend").disabled = true;
      document.getElementById("inputUserId").disabled = true;
    }

    // Habilita boton y campo de texto
    function enableInputs() {
      document.getElementById("btnSend").disabled = false;
      document.getElementById("inputUserId").disabled = false;
    }

    function clearDiv() {
      document.getElementById("divResponse").innerHTML = "";
    }
  </script>
</html>

php – Consulta en MySQL no me devuelve mas de 33 registros

Tengo una API REST sencilla realizada con PHP y MySQL y ya esta en un servidor. Tengo el problema de que mi consulta para recoger todos los datos de una tabla, y me la devuelva en formato JSON, siempre me devuelve una lista vacía.

La tabla tiene unos 2056 registros, y realizando pruebas he visto que si añado un LIMIT 33 si me devuelve la lista con los 33 primeros registros, pero a partir de ahí no devuelve ninguno.

He tocado la configuración del php.ini aumentando varios parámetros, los cuales:

memory_limit y post_max_size

Pero tampoco ha cambiado mucho. La versión de PHP del servidor, para este dominio, esta en la 5.6 que también la he subido a todas las posibles de 7.X y tampoco…

Este el el método que utilizo para recoger todos los datos:

function getDocumentos(){

    $query = "SELECT * FROM documentos";
    $resultado = conexion()->query($query);
    
    $listaDocumentos = array();
    
    foreach($resultado as $res){
        $listaDocumentos() = $res;
    }
      
    return $listaDocumentos;
}

Y mi archivo index.php para llamar a este método es el siguiente:

<?php
    
    header('Access-Control-Allow-Origin: *'); 
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
    header('Content-Type: application/json');

    require_once('funciones_documentos.php');

    switch($_SERVER('REQUEST_METHOD')){

        case 'POST':

            $postBody = file_get_contents("php://input"); //Obtener todos los datos del body.
            $convertirArray = json_decode($postBody,true);

            if(json_last_error() == 0){ //El JSON no da error.
                crearDocumento($convertirArray);
                http_response_code(200);

            }else{
                http_response_code(400);
            }

        break;

        case 'GET':

            $contenido_url = $_GET('url');
            $id_cliente = intval(preg_replace('/(^0-9)+/','',$contenido_url),10);

            if($contenido_url == ''){
                
                $respuesta = getDocumentos();

                $listadoDocumentos = json_encode($respuesta);
                                
                echo convertirUTF8($listadoDocumentos);
                http_response_code(200);
      
            }else{
                //Cojo todos los documentos de un cliente.
                $respuesta = getDocumentosCliente($id_cliente);
                $listaDocumentos = json_encode($respuesta);
                echo convertirUTF8($listaDocumentos);
                http_response_code(200);
            }
        break;

        case 'DELETE':
      
            $contenido_url = $_GET('url');
            $id_documento = intval(preg_replace('/(^0-9)+/','',$contenido_url),10);

            if($contenido_url == ''){ //Si no hay ID no elimina nada.
                http_response_code(400);
                
            }else{ //Borramos con el id

                eliminarDocumento($id_documento);
                http_response_code(200);
            }
        break;
    }

?>

Es algo básico, pero esta funcionando, solo que no me devuelve todos los datos de una tabla y me parece muy raro que solo devuelva hasta 33. He probado a traerme los datos con Postman, y con la pagina ReqBin y usando la aplicación en si, que esta hecha en angular y nada

Sabrían por que?

javascript – AJAX status nunca devuelve 200

Estoy haciendo una página simple para mostrar todas las imágenes que usa chromecast como presentación. He encontrado un archivo JSON en github con los enlaces a las imágenes. El problema está en que algunas ya no están en el servidor (devuelven 404), entonces mi idea es que antes de cargarlas, solicitar solamente la cabecera (función fetchHead) para no cargar el cuerpo de la imagen, si esta devuelve un 404, no la incluyo, pero parece ser que cuando el if es correcto (devuelve true porque el status de la cabecera es 200), siempre devuelve false, por lo tanto nunca se carga la imagen.

Voy a dejar el código, pero me parece que el problema está en el alcance del return…

probe = (a) => {
for (i = 0; i < 10; i++) {
    if (fetchHead(a(i).url)) {
        console.log("done");
    } else {
        console.log("err");
    }
}
};

fetchHead = (a) => {
    let head = new XMLHttpRequest();
    head.onreadystatechange = function() {
        if (this.readystate === 2) {
            if (this.status === 200) {
                return true;
            } else {
                return false;
            }
        }
    };
    head.open('HEAD', a);
    head.send();
};

Ni que decir tiene que el parámetro a es el objeto JSON de github

Me explico fatal, pero creo que con el código puede quedar claro…

Aclaro, en el for hay un 10 para no sobrecargar el servidor a llamadas, tener en cuenta que cada carga completa de esta página son unos 120MB de imágenes.

reactjs – Al crear un menu en una columna de mui-datatable en react, esta solo devuelve los datos del ultimo elemento de la lista

Utilizando la librería mui-datatable en react, cree una columna custom utilizando customBodyRender para agregar un menú y al hacer click en una de las opciones, este realizara una acción.

El problema es que al hacer click en la acción, los datos que entran a la función siempre son los del ultimo registro de la tabla, independiente de seleccione el menú de la primera fila, los datos siempre son del ultimo.

Lo que necesito es que al hacer click en el menú de alguna fila, me devuelva los datos de esa fila.

Código de ejemplo: https://codesandbox.io/s/wonderful-mclaren-ivvlq?file=/src/App.js

Fila seleccionada

Datos mostrados

php – Laravel – Resource no devuelve las propiedades que tengo definidas

tengo un modelo que se llama UserCar definido de esta forma

<?php

 namespace App;

use IlluminateDatabaseEloquentModel;

class UserCar extends Model
{

    protected $table = 'user_cars';

    protected $fillable = ('id','name','model_id','fuelType','....','user_id');

    public function modelo() {
       return $this->hasOne(CarModel::class,'id','model_id');
   }
}

Y mi intención es al obtener el resultado de un item, hacer uso de un Resource para poder añadir campos dinámicos si es necesario o tratar los datos

Resource UserCar

class UserCarResource extends JsonResource
{


    /**
     * Transform the resource into an array.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array
     */
    public function toArray($request)
    {

        return (
            'name' => $this->name . ' test test',
            'model_name' => $this->name . ' test test',
            'model_id' => $this->model_id,
            'model_text' => 'model name',
            'fuelType' => $this->fuelType,
            'fuelType_text' => 'Gasolina',
            'yearFabrication' => $this->yearFabrication,
            'potency' => $this->potency,
            'enabled' => $this->enabled,

        );
    }
}

Y luego para hacer uso de el, lo hago de esta manera

    $car =  UserCarResource::collection(UserCar::where('id',$id)->get());

    dd($car);

Esto veo que me devuelve un UserCarResource, pero no veo que me devuelva por ejemplo la propiedad “model_name” que creo de forma expresa en el resource, o bien el nombre que en el resource lo creo expresamente de esta forma “‘name’ => $this->name . ‘ test test’,” concatenando “test test” pues no lo veo en la muestra del resource.

introducir la descripción de la imagen aquí