html – Como mostrar datos segun dato seleccionado desde un select en otro select en angular9?

Estoy intentando mostrar los datos que tengo en un select, los datos los obtengo desde un Array, El nombre de cada estado los muestra bien,pero yo quiero que al hacer click en un estado muestre los nombres que contiene ese estado en otro select y al hacer click en el otro estado que muestre los nombres también. Como podría lograr hacerlo?

En el select state1 y state2, al hacer click en state1 tendria que mostrar en otro select muni1 y muni2 , lo mismo con state2.

el html:

<div class="form-group">
      <li *ngFor="let data of dat">
            <select class="form-control" type="text"> 
                <option *ngFor="let estados of data.states">
                     {{estados.name}}
            </option>
    </select>
      </li>
 </div>

el archivo ts

public dat = [
    {
      "id": 0,
      "country": "EEUU",
      "states": [
        {
          "id": 1, 
          "name": "state1", 
          "muni": [
            {
              "id": 1, 
              "name": "muni1", 
            },
             {
              "id": 2, 
              "name": "muni2", 
            }
          ]
        },
        {
          "id": 2, 
          "name": "state2", 
          "muni": [
            {
              "id": 1, 
              "name": "otra1", 
            },
             {
              "id": 2, 
              "name": "otra2", 
            }
          ]
        },
     }
  ]

java – ¿Cómo guardar datos al salir y entrar a app en Android Studio?

Soy nuevo en Android studio, lo que tengo programado es un simple botón que al ser pulsado va incrementando un numero de 1 en 1, lo que intento hacer es que si el usuario sale de la app y vuelve a entrar se quede el numero que dejó.
¿Alguna idea?

public class MainActivity extends AppCompatActivity {
    Button btn_click;
   int numero=0;
       TextView CajaDeTexto;


    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      CajaDeTexto=findViewById(R.id.number);
        btn_click=findViewById(R.id.btn_click);

        btn_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
          numero++;
          CajaDeTexto.setText(Integer.toString(numero));

  }

 }
        });
  

    }

python – ¿Cómo se puede acceder a las líneas de un marco de datos de múltiples índices?

Quiero acceder a las líneas que tienen tanto el ID de la tienda X como el ID del artículo Y. Puedo filtrar para uno pero no para ambos.

                                     date            item_price item_cnt_day
                                      min        max       mean          sum
date_block_num shop_id item_id                                              
1              5       30      2013-02-16 2013-02-25      399.0          5.0
                       31      2013-02-16 2013-02-24      699.0          3.0
                       32      2013-02-15 2013-02-15      349.0          2.0
                       33      2013-02-10 2013-02-24      499.0          3.0
                       35      2013-02-15 2013-02-15      399.0          1.0
...                                   ...        ...        ...          ...
33             5       22100   2015-10-06 2015-10-06      629.0          1.0
                       22102   2015-10-10 2015-10-21     1250.0          5.0
                       22104   2015-10-27 2015-10-27      249.0          1.0
                       22163   2015-10-24 2015-10-24      169.0          1.0
                       22164   2015-10-15 2015-10-15      549.0          1.0

En efecto intenté con:

print(sales_monthly.loc(sales_monthly.index.get_level_values(1) == row('shop_id')))

Pero cuando intento con

print(sales_monthly.loc(sales_monthly.index.get_level_values(1) == row('shop_id') && sales_monthly.index.get_level_values(2) == row('item_id')))

Nunca funciona

¿Cómo puedo hacer para validar los datos de un excel en php y antes de subirlo a la BD?

tengo un problema el cual aún no logro resolver y agradecería muchísimo si me pueden ayudar o dar una idea de como lo puedo resolver. Les comento: Estoy elaborando un programa en el cual pueda subir un excel (tabla) a la BD la tabla contiene el ID, NOMBRE, APELLIDO, TELEFONO, CORREO, CÓDIGO POSTAL eso es algo que ya logre hacer, mi problema radica en que antes de subír mi excel a la BD quiero validar mis datos.

Este es mi código

<?php 
    if(is_array($_FILES('archivoexcel')) && count($_FILES('archivoexcel'))>0){
        
        //Se llama a la libreria phpExcel
        require_once 'PHPExcel/Classes/PHPExcel.php';
        require_once 'conexion.php';

        $tmpfname = $_FILES('archivoexcel')('tmp_name');
        //crear excel para leerlo despues
        $leerexcel = PHPExcel_IOFactory::createReaderForFile($tmpfname);
        
     //Cargar Excel
     $excelobj = $leerexcel->load($tmpfname);
     
     //Cargar la hoja en la que se trabajara
     $hoja = $excelobj -> getSheet (0);
     $filas = $hoja ->getHighestRow();
    

     echo "<table id='table_detalle' class='table' style='width:100%;
     table-layout:fixed'>
        <thead>
            <tr bgcolor='black' style='color:pink'>
                <td> idContactos </td>
                <td> Nombre </td>
                <td> Apellido </td>
                <td> Telefono </td>
                <td> Correo </td>
                <td> Codigo Postal </td>
            </tr>
        </thead><tbody id='tbody_tabla_detalle'>";
        
        for($row = 2;$row<=$filas;$row++){
            $idContactos = $hoja->getCell('A'.$row)->getValue();
            $nombre = $hoja->getCell('B'.$row)->getValue();
            $primerApellido = $hoja->getCell('C'.$row)->getValue();
            $telefono = $hoja->getCell('D'.$row)->getValue();
            $correo = $hoja->getCell('E'.$row)->getValue();
            $codigoPostal = $hoja->getCell('F'.$row)->getValue();
            $query = "select count(*) as contador from contactos where idContactos='".$idContactos."'";
            $resultado = $mysqli->query($query);
            $respuesta = $resultado->fetch_assoc();  
            if($respuesta('contador')=='0'){ 
                if($idContactos==""){

                }else{
                    echo "<tr>";
                    echo "<td> ".$idContactos." </td>";
                    echo "<td> ".$nombre." </td>";
                    echo "<td> ".$primerApellido." </td>";
                    echo "<td> ".$telefono." </td>";
                    echo "<td> ".$correo." </td>";
                    echo "<td> ".$codigoPostal." </td>";
                    echo "</tr>";
                }
            
            }
            
        }
        
        echo "</tbody></table>";
            

    }


?>

sql – Multiples base de datos db2 Consulta con DBEAVER

me he instalado en el trabajo Dbeaver y la verdad que me gusta un montón pero no se si tiene una funcionalidad que me gustaría hacer……no la encuentro.

En el trabajo tengo como mas de 100 base de datos db2, correspondientes cada una a un centro diferente, tiene todo igual con sus directorios y ficheros iguales y lo único que cambia son los datos.

Tengo una sql para consultar datos y la tengo que lanzar una a una en cada base de datos para traerme los datos.
Me gustaría saber si hay alguna forma con el dbeaver de que lance la misma consulta conectandose a las diferentes base de datos y me recopile los resultados el solito

Gracias.

php – ¿Insertar codigo ascii a la base de datos sirve para seguridad o no?

lo que pasa es que normalmente tengo la costumbre de insertar datos en la base de datos en UTF-8, pero un día se me ocurrió insertar un código javascript en la base de datos y me topo que es facilmente vulnerable, entonces pensé si de pronto agrego código ASCII al insertar y al hacer la consulta (incluyendo el proceso) y en el final ya puedo quitarlo. ¿consideran que hay otras maneras de hacerlo más seguro o como lo estoy haciendo está bien?

<?php
function addASCII($var){

    if(isset($var) && !empty($var) && $var){
        return htmlentities(addslashes($var));
    }else{
        return null;
    }
    
}


function removeASCII($var){
        
    if(isset($var) && !empty($var) && $var){
        return html_entity_decode(stripslashes($var));
    }else{
        return null;
    }

}


$pdo->prepare("INSERT INTO prueba (nombre) VALUES (:nombre)");
$query->execute(('nombre'=> addASCII('josé muñoz')));



$querypdo = $pdo->prepare("SELECT nombre FROM prueba");
$querypdo->execute();

    while($row = $querypdo->fetch()){
      $nombre= $row('nombre');
    }

  //supongamos que ya aquí he hecho todo el proceso y ahora voy a mostrar el nombre

    echo 'Nombre sin ASCII'.removeASCII($nombre);

?>

php – ¿Cómo guardar la información de un select sin que pierdan los datos cuándo se actualiza la página?

tengo una tabla de productos en él cuál recibo por método GET la “ID” del producto para después mostrar su información e ir modificándolo.

Código de cómo recojo la ID del producto

    if (isset($_SESSION('carrito'))){
    //si existe buscamos si ya estaba agregado ese producto
    if (isset($_GET('id'))){
      $arreglo = $_SESSION('carrito');
      $encontro = false;
      $numero = 0;
      for ($i=0;$i<count($arreglo);$i++){
        if ($arreglo($i)('Id') == $_GET('id')){
          $encontro = true;
          $numero=$i;
        }
      }
      if ($encontro == true){
        $arreglo($numero)('Cantidad')=$arreglo($numero)('Cantidad')+1;
        $_SESSION('carrito')=$arreglo;
      }else{
            //No estaba el registro
        $tipo = "";
        $nombre = "";
        $descripcion = "";
        $res = $conexion->query('SELECT * FROM productos WHERE id='.$_GET('id'))or die($conexion->error);
        $fila = mysqli_fetch_row($res);
        $tipo = $fila(1);
        $nombre = $fila(2);
        $descripcion = $fila(3);
        $arregloNuevo = array(
          'Id' => $_GET('id'),
          'Tipo' => $tipo,
          'Nombre' => $nombre,
          'Descripcion' => $descripcion,
          'Bodega' => 'Sin asignar',
          'Cantidad' => 1,
          'ValorUnitario' => 0,
          'Descuento' => 0,
          'Impuesto' => 0,
          'ValorCargos' => 0,
          'ImpuestosRetencion' => 0,
          'Total' => 0
        );
        array_push($arreglo, $arregloNuevo);
        $_SESSION('carrito')=$arreglo;
      }
    }
  }else{
    //creamos la variable de sesion
    if (isset($_GET('id'))){
      $tipo = "";
      $nombre = "";
      $descripcion = "";
      $res = $conexion->query('SELECT * FROM productos WHERE id='.$_GET('id'))or die($conexion->error);
      $fila = mysqli_fetch_row($res);
      $tipo = $fila(1);
      $nombre = $fila(2);
      $descripcion = $fila(3);
      $arreglo() = array(
        'Id' => $_GET('id'),
        'Tipo' => $tipo,
        'Nombre' => $nombre,
        'Descripcion' => $descripcion,
        'Bodega' => 'Sin asignar',
        'Cantidad' => 1,
        'ValorUnitario' => 0,
        'Descuento' => 0,
        'Impuesto' => 0,
        'ValorCargos' => 0,
        'ImpuestosRetencion' => 0,
        'Total' => 0
      );
      $_SESSION('carrito')=$arreglo;
    }
  }

Anexo código de la tabla en la cuál muestro los productos

<table class="table table-sm" id="tablaContenido">
                    <thead>
                      <tr>
                        <th>#</th>
                        <th>Tipo</th>
                        <th>Ítem</th>
                        <th>Descripción</th>
                        <th>Bodegas</th>
                        <th>Cant.</th>
                        <th>Vr. Unitario</th>
                        <th>Descuento</th>
                        <th>Imp Cargo</th>
                        <th>Vr.+Cargos</th>
                        <th>Imp Retención</th>
                        <th>Valor</th>
                      </tr>
                    </thead>
                    <tbody>
                      <?php
                      $total= 0;
                      $cont = 1;
                      if (isset($_SESSION('carrito'))){
                        $arregloCarrito = $_SESSION('carrito');
                        for ($i=0;$i<count($arregloCarrito);$i++){
                          $total = $total + ($arregloCarrito($i)('ValorUnitario') * $arregloCarrito($i)('Cantidad'));
                          ?>
                          <tr>
                            <td><?php echo $cont; ?></td>
                            <td>
                              <select class="form-control form-control-sm">
                                <option>Producto</option>
                                <option>Activo Fijo</option>
                                <option>Gasto / Cuenta Contable</option>
                              </select>
                            </td>
                            <td><p><?php echo $arregloCarrito($i)('Nombre'); ?></p></td>
                            <td><p><?php echo $arregloCarrito($i)('Descripcion'); ?></p></td>
                            <td>
                              <select class="form-control form-control-sm" id="bodegas">
                                <?php 
                                $query = $conexion->query("SELECT * FROM bodegas")or die("Error en la consulta"); 
                                if ($arregloCarrito($i)('Bodega') == 'Sin asignar') {
                                  echo '<option selected>Sin asignar</option>';
                                  while ($campo = $query->fetch_array()) {
                                    echo '<option>'.$campo('nombre').'</option>';
                                  } }else{
                                    echo '<option>Sin asignar</option>';
                                    echo '<option selected data-id='.$arregloCarrito($i)("Id").'>'.$arregloCarrito($i)('Bodega').'</option>';
                                  } ?>
                                </select>
                              </td>
                              <td>
                                <div class="input-group mb-3" style="max-width: 120px;">
                                  <input type="text" class="form-control text-center txtCantidad"
                                  data-precio="<?php echo $arregloCarrito($i)('ValorUnitario'); ?>"
                                  data-id="<?php echo $arregloCarrito($i)('Id'); ?>"
                                  value="<?php echo $arregloCarrito($i)('Cantidad'); ?>" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
                                </div>
                              </td>
                              <td><?php echo $arregloCarrito($i)('ValorUnitario'); ?></td>
                              <td><?php echo $arregloCarrito($i)('Descuento'); ?></td>
                              <td><?php echo $arregloCarrito($i)('Impuesto'); ?></td>
                              <td><?php echo $arregloCarrito($i)('ValorCargos'); ?></td>
                              <td><?php echo $arregloCarrito($i)('ImpuestosRetencion'); ?></td>
                              <td class="cant<?php echo $arregloCarrito($i)('Id'); ?>">
                                $<?php echo $arregloCarrito($i)('ValorUnitario') * $arregloCarrito($i)('Cantidad'); ?>
                              </td>
                              <td><a href="#" class="btn btn-primary btn-sm btnEliminar" data-id="<?php echo $arregloCarrito($i)('Id'); ?>">X</a></td>
                            </tr>
                            <?php
                            $cont++;
                          } 
                        } ?>

                      </tbody>
                    </table>

Tengo un problema con la parte de las bodegas ya que yo necesito que se guarde la información por productos de cada bodega que selecciona la persona que guarda la información

introducir la descripción de la imagen aquí

Pero cada vez que selecciono la bodega para el producto con ID = 1, automáticamente también se selecciona para la bodega con ID = 2

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

Tengo una parte del código con las cantidades, que SÍ funciona independientemente, si cambio la cantidad del producto con ID=1 lo hace y se queda guardado sólo para ese ID=1

<td>
                                    <div class="input-group mb-3" style="max-width: 120px;">
                                      <input type="text" class="form-control text-center txtCantidad"
                                      data-precio="<?php echo $arregloCarrito($i)('ValorUnitario'); ?>"
                                      data-id="<?php echo $arregloCarrito($i)('Id'); ?>"
                                      value="<?php echo $arregloCarrito($i)('Cantidad'); ?>" placeholder="" aria-label="Example text with button addon" aria-describedby="button-addon1">
                                    </div>
                                  </td>

AJAX

$(".txtCantidad").keyup(function(){
       var cantidad = $(this).val();
       var precio = $(this).data('precio');
       var id = $(this).data('id');
       incrementar(cantidad,precio,id);
     });
      function incrementar(cantidad,precio,id){
       var mult = parseFloat(cantidad)* parseFloat(precio);
       $(".cant"+id).text("$"+mult);
       $.ajax({
         method:'POST',
         url:'./php/actualizar_carrito.php',
         data:{
           id:id,
           cantidad:cantidad
         }
       }).done(function(respuesta){
        $('#contenidoTotal').load('./ventas/total_compra.php');
      });
     }

actualizar_carrito

session_start();
error_reporting(0);
if ($_SESSION('id_user') == "") {
  echo "<script>alert('Por favor inicie sesión primero!');
  window.location.href='../'</script>";
}
$arreglo = $_SESSION('carrito');
for ($i=0; $i<count($arreglo); $i++){
    //$arreglo($i)('Bodega') = $_POST('bodega');
    if ($arreglo($i)('Id') == $_POST('id')){
        $arreglo($i)('Cantidad')=$_POST('cantidad');
        $_SESSION('carrito') = $arreglo;
        break;
    }
    //$_SESSION('carrito') = $arreglo;
}

Lo que quiero hacer es que así cómo la cantidad de cada producto queda guardado para el mismo, lo haga con el de las bodegas, si selecciono la bodega principal para la ID = 1 quede guardado para esa ID = 1 y no intervenga con el otro producto con ID = 2 y que trabajen por separado así sucesivamente dependiendo de los productos que incluya el cliente… ¿Me podrían ayudar?