Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2020, 11:18
Avatar de cuatrosoles
cuatrosoles
 
Fecha de Ingreso: junio-2009
Mensajes: 66
Antigüedad: 14 años, 10 meses
Puntos: 1
Consulta foreach anidado, no logro hacerlo funcionar

Estoy intentando traer de una base de datos los registros correspondientes a 'medida' y 'precio'.
Base de Datos:



En razon de estos arrays:

Código:
array(5) {
  ["accion"]=>
  string(9) "act_plato"
  ["categoria_id"]=>
  string(3) "142"
  ["id"]=>
  string(3) "640"
  ["index"]=>
  string(1) "1"
  ["datos"]=>
  array(1) {
    ["plt"]=>
    array(1) {
      [2]=>
      array(6) {
        ["es"]=>
        array(2) {
          ["nombre"]=>
          string(10) "Plato Tres"
          ["texto"]=>
          string(22) "Descripcion plato tres"
        }
        ["en"]=>
        array(2) {
          ["nombre"]=>
          string(0) ""
          ["texto"]=>
          string(0) ""
        }
        ["precios"]=>
        array(2) {
          [0]=>
          array(2) {
            ["medida"]=>
            string(14) "Porcion Grande"
            ["precio"]=>
            string(2) "25"
          }
          [1]=>
          array(2) {
            ["medida"]=>
            string(13) "Porcion Chica"
            ["precio"]=>
            string(2) "18"
          }
        }
      }
    }
  }
}

$arrPrecios = $platos[$index + 1]['precios'];

$cp = $dao->query("select * from carta_platos where id=$id")->fetch();
$id_plato = $cp['id'];
$pp = $dao->query("select * from carta_precios where carta_platos_id=$id_plato")->fetchAll();

foreach ($pp as $ppid) {

      $precioId = $ppid['id'];
      //echo $precioId."\n";

      foreach ($arrPrecios as $values) { 
            //$precioId = $value['id'];
            $precioMedida = $values['medida'];
            $precioPrecio = $values['precio'];

            $sqlPrecio = "UPDATE carta_precios SET medida='$precioMedida',precio='$precioPrecio',carta_platos_id='$id_plato',estado='0' WHERE id='$precioId' AND carta_platos_id='$id_plato'";

            $dao->exec($sqlPrecio);
            }
        }
Cada vez que actualizo el precio o la medida de un plato me guarda solo el ultimo en todos los registros de la base de datos correspondiente a ese plato. Por ejemplo, si yo guardara esta edicion, en la base de datos se actualizaria la tabla "carta_precios" con id 1 y 2 con el mismo registro ("Porcion Chica", "15"). Se entiende?
Gracias por su ayuda desde ya.