php – ¿Cómo mostrar valor de una columna en un input cuando he seleccionado un elemento mediante un select?

Estoy tratando de mostrar el valor de un ítem seleccionado en un <select> en un <input type=text> o en un <label>, es decir, primeramente cargo el con la información que obtengo en una consulta realizada a la tabla de la base de datos:

<?php
   include("db.php");
   $con = conectar();
   $sql1 = mysqli_query($con,"SELECT COD_SERVICIO, DESCRIPCION_SERVICIO, COSTO_SERVICIO FROM servicios");

   $fechaAct = date("Y-m-d");
   $estado = "P";
?>
<select id="servicios" name="servicios">
  <?php
    while ($servicios = mysqli_fetch_array($sql1)) {
    ?>
    <option value="<?php echo $servicios('COD_SERVICIO') ?>"><?php echo$servicios('DESCRIPCION_SERVICIO') ?></option>
    <?php
    }
    ?>
</select>

y a parte como ya mencione al inicio quiero mostrar el COSTO_SERVICIO del ítem que se ha seleccionado; lo que voy a mostrar a continuación se que tiene errores y quiero aprender a darle solución

<label for="costo"><strong>Costo</strong>
                     <input type="text" name="costoServicio" value="<?php echo $sql1('COSTO_SERVICIO')?>"></td>

también he intentado cambiar de lugar el cierre de corchete } de la sentencia while del código php embebido en el html al después del input que contendrá dicho costo y se da un error ya que no se visualizan los elementos que tengo después, a continuación esta una captura de lo que obtengo visualmente:

introducir la descripción de la imagen aquí

¿Cómo puedo arreglar esta parte?

nodejs – no puedo conectarme a sql server con node.js mediante mssql

import sql from “mssql”;

const dbConfig = {
  server: "localhost",
  user: "sa",
  password: "EDWINESPINAL",
  database: "prueba",
  options: {
    encrypt: true,
    trustServerCertificate: true,
  },
};

async function getConnection() {
  try {
    const conn = new sql.ConnectionPool(dbConfig);
    conn
      .connect()
      .then(() => {
        const req = new sql.Request(conn);
        req.query("select * from cliente").then((client) => {
          console.log(client);
        });
      })
      .catch((err) => {
        console.log(err);
      });
  } catch (error) {
    console.log(error);
  }
}
getConnection();

Este es el código que tengo, he estado varias horas y no doy con el problema
he visto varias formas en youtube y tampoco me han resultado

Forma de obtener valor de una etiqueta p mediante javascript

Estoy tratando de ver el valor con que se muestra en el navegador la etiqueta. Para propósitos de la explicación mencionare “texto” envés de “valor”. inicialmente tiene el texto “prueba” luego mediante una función le cambio el texto a “auxiliar” (cadena que se encuentra en un objeto de un archivo .json), posterior en la función añado un evento

document.getElementById('ttlSECT1_1').addEventListener("click",ver);

y en un función distinta creo una la siguiente función:

 function ver(e) {
  if(!e) e = window.event;
  var a = e.target.id;
  var b = a.textContent;
  console.log(a);
}

y esto es lo de la etiqueta en el html:

<p id="ttlSECT1_1">título</p>

No me funciona la parte de la variable b en la función ver, especificamente el .textContent también he intentado con .innerText, .innerHTML y .value pero solo veo en consola el undefined.
¿Cómo puedo ver en consola el texto? esto lo hago porque en esa función quiero guardar ese dato en el sessionStorage

formularios – ¿Cómo detectar mediante jQuery si un input file tiene valor?

Un saludo para todos. Llevo poco tiempo en el campo de la programación y me pidieron realizar un formulario en el cual el usuario pueda elegir entre subir imágenes seleccionando desde su dispositivo o tomar una foto con la cámara para después subir los archivos al servidor. Mi problema esta en que tengo un input file para seleccionar las fotos y un input radio para seleccionar tomar la foto, pero no se como declarar el parámetro para detectar si el input file tiene un valor para que se envíe los datos.

No se si me explico bien, porque en jQuery coloque una condicion if de si el usuario opta por la opción de tomar foto (radio == 0), la foto se tome y se envíe al servidor. En el caso contrario debo colocar una condicíon else para que el programa detecte que el usuario pulso la opción de seleccionar fotos. Supongo que debo declarar un parámetro para que determine si el input file tiene un valor, pero no se como hacerlo. Les agradecería su ayuda porque me urge terminar el proyecto 🙁

Este es mi código HTML:

<form action="#" method="post" enctype="multipart/form-data" id="upload-multi-images">
    <div class="row">
        <div class="col-xl-2 col-lg-2 col-md-3 col-sm-4 col-xs-12" id="add-photo-container">
            <div class="add-new-photo first" id="add-photo">
                <span><i class="icon-gallery"></i></span>
            </div>
            <input type="file" multiple id="add-new-photo">
        </div>
        <div class="col-xl-2 col-lg-2 col-md-3 col-sm-4 col-xs-12">
            <div class="add-new-photo first" id="add-camera">
                <span><i class="icon-camera"></i></span>
            </div>
        </div>
        <input type="radio" name="camara" id="camara" value="0">
        <video id="video" autoplay="autoplay" class="video_container none"></video>
    </div>
    <div class="button-container">
        <button type="submit">Subir imágenes</button>
    </div>
    <canvas id="canvas" class="none"></canvas>
</form>

Este es mi código jQuery:

$(document).on("submit", "#upload-multi-images", function(e){
    e.preventDefault();
    var camara = $("input(name='camara'):checked").val();
    if (radio == 0) {
        cxt.drawImage(video, 0, 0, 300, 150);
        var data = canvas.toDataURL("image/jpeg");
        var info = data.split(",", 2);
        $.ajax({
            url: "upload.php",
            type: "post",
            dataType: "json",
            data: formData,
            cache: false,
            contentType: false,
            processData: false,
                beforeSend: function(){
                    loading(true, "Subiendo foto...");
                },
                success: function(res){
                    loading(false);
                    if (res.status == "true"){
                        swal("MENSAJE", response.messages , "success");
                        $("#upload-multi-images")(0).reset();
                        $("#add-new-photo").click();
                        formData = new FormData();
                    }else{
                        alert(res.error);
                    }
                },
                error: function(e){
                    console.log(e.responseText);
                }
        });
    }
});

¿En SQL Server mediante consultas existe alguna forma de mostrar varias veces aquellos registros que tengan cierto valor en un campo?

Quiero que aparezcan registros duplicados en aquellos que tengan valor superior a 1 en el campo de unidades. Pasar de esto:

Cód. art Cód. color Talla Unidades
48310S.0 400 M 1
48310S.0 400 L 1
48318P.0 500 M 1
48318P.0 500 L 1
48318P.0 500 XL 1
49318E.0 500 M 2
49318E.0 500 L 2
49318E.0 500 XL 1

A esto:

Cód. art Cód. color Talla Unidades
48310S.0 400 M 1
48310S.0 400 L 1
48318P.0 500 M 1
48318P.0 500 L 1
48318P.0 500 XL 1
49318E.0 500 M 2
49318E.0 500 M 2
49318E.0 500 L 2
49318E.0 500 L 2
49318E.0 500 XL 1

Es decir, duplicando esas dos filas ya que tienen 2 como valor. Y si fueran 3 uds. triplicando las filas.

Algo engorroso pero que quizá podría funcionar sería declarar un contador y una cadena de texto que vaya concatenando los select de esas filas que tengan más de una unidad, pero no sé muy bien cómo hacerlo porque la consulta de la que ya estoy partiendo hay campos calculados: un GROUP BY por artículo, color y talla respectivamente, y el campo unidades es el resultado de un COUNT(*) dividido por otro campo de número entero que no estoy mostrando aquí.

php – Como mostrar porcentaje de avance mediante ajax al ejecutar script

Estimados tengo el siguiente problema. Tratare de ser lo más breve posible en la explicación del código para que se entienda mi objetivo.

Tengo un script php donde se envían una serie de datos mediante ajax, en dicho script se realizan las validaciones correspondientes y se van retornando los respectivos mensajes ya sean de error o de éxito, los cuales se muestran al usuario para advertirle si:

  • Faltan datos
  • Si no a seleccionado un archivo
  • Si todo salió correcto

Cuando todo sale correcto, se insertan los datos en la base de datos, se envía un correo electrónico al usuario y se genera una orden de servicio la cual se le muestra al usuario en pantalla.

Obviamente todo el proceso desde que se inicia el script hasta hasta que todo sale bien, transcurre en un determinado tiempo.
Me gustaría mostrar en caso de éxito un % de avance hasta que el cliente recibe el mensaje con la orden de servicio en pantalla.

Adjunto un poco lo que tengo, pero el % de avance se muestra siempre, salga todo bien o todo mal. Aclaro que es la primera vez que intento implementar una barra de progreso.

public function Orden(){
    $con = new Conexion(DB_PORTAL); 
    $mail = new EnviarCorreo();
    $idusuario = $_SESSION('idusuario');
    $creditos = $con->obtenerdato("creditos","usuarios","idusuario = ?",($idusuario));
    if($creditos > 0){
        if(!(empty($_POST('fabricante'))) and !(empty($_POST('modelo'))) and !(empty($_POST('año'))) and !(empty($_POST('motor'))) and !(empty($_POST('transmision'))) and !(empty($_POST('combustible'))) and !(empty($_POST('patente'))) and !(empty($_POST('kilometraje'))) and !(empty($_POST('ecu'))) and !(empty($_POST('herramienta'))) and !(empty($_POST('versionherramienta'))) and !(empty($_POST('servicioprincipal'))) and !(empty($_FILES('archivo'))) and ($_POST('confirmado') == '1')){
           //AQUI SE RECIBEN, VALIDAN Y SANEAN TOSOS LOS DATOS, LOS OMITI PORQUE SON MUCHOS INPUTS
            $totalcreditos = $total_servicioprincipal + $total_adicionales;
            $query_saldo = $con->obtenerdatos("creditos","usuarios","idusuario = ?",($idusuario));
            $saldoanterior = $query_saldo(0)('creditos');
            $saldoactual = $saldoanterior - $totalcreditos;
            $conjunto = array(NULL,$ordenservicio,$servicioprincipal,$implode,$totalcreditos,$saldoanterior,$saldoactual,$fabricante,$modelo,$año,$motor,$transmision,$combustible,$patente,$kilometraje,$ecu,$herramienta,$versionherramienta,$informacion,'archivos',$nombrefinal,"",$fecha,$idusuario,$estado,NULL,$totalcreditos,$idusuario);
            if($creditos >= $totalcreditos){
                $subir = move_uploaded_file($nombretemporal,$ruta.$nombrefinal);
                if($subir){
                    $query = $con->insertar_actualizar("ordenes","?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?","usuarios","creditos = creditos - ?","idusuario = ?",$conjunto);
                    include dirname(__FILE__).'/../../../logica/portal/general/plantilla_ordenes.php';
                    $enviar = $mail->Enviar($correoOrigen,$aliasCorreo,$asunto,$body,$correo,$nombre,$imagenes);
                    if($query){
                        if($enviar == 'correo enviado'){
                            $HTML = ('Orden generada exitosamente',$ordenservicio);
                        }else{
                            $HTML = ('Orden generada exitosamente, pero a ocurrido un error al enviar el correo de respaldo',$ordenservicio);
                        }
                    }else{
                        $HTML = 'A ocurrido un error a la hora de generar la orden de servicio, favor intente nuevamente';
                        unlink($nombrefinal);
                    }
                }else{
                    $HTML = 'Error al subir el archivo';
                }
            }else{
                $HTML = ('Creditos insuficientes','SALDO INSUFICIENTE PARA EL SERVICIO SELECCIONADO');
            }
        }else{
            $HTML = $this->validar();
        }
    }else{
        $HTML = ('Creditos insuficientes','SALDO ACTUAL IGUAL O MENOR A 0');
    }
    return $HTML;

}   

Función ajax que procesa y envía los datos

function generar_orden(){
   //AQUI SE PASAN TODOS LOS VALORES DE LOS INPUT A UN FORM DATA, OMITIDOS AL SER MUCHOS
    $.ajax({  
        url:"<?php echo $dominioRaiz;?>logica/portal/ordenes/generar_orden.php",
        xhrFields: { withCredentials: true },
        method: "POST",
        dataType: "json",
        contentType:false,
        data: datos,
        processData:false,  
        success:function(data){   
            if(data.html1 == 'Existen campos vacios que deben ser llenados'){
                $('#faltan_datos').modal('show');
            }else if(data.html1 == 'Favor acepte los terminos y condiciones'){
                $('#aceptar_terminos').modal('show');                   
            }else if(data.html1 == 'Favor seleccione un archivo para subir'){
                $('#archivo_vacio').modal('show');
            }else if(data.html1(0) == 'Creditos insuficientes'){
                $('#mensaje_creditos').html(data.html1(1));
                $('#creditos_insuficientes').modal('show');
            }else if(data.html1(0) == 'Orden generada exitosamente'){
                $('#nro_orden').html(data.html1(1));
                $('#registro_correcto').modal('show');
                creditos();
                saldo_actual();
            }
            // console.log(data.html1);
        },
        xhr: function() {
            var xhr = new window.XMLHttpRequest();

            xhr.upload.addEventListener("progress", function(evt) {
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                percentComplete = parseInt(percentComplete * 100);
                console.log(percentComplete);
            //   $(".xprogress").html("Progreso: "+ percentComplete +"%");
            //  $(".progressbar .carga").css("width" , percentComplete + "%");

            //   if (percentComplete === 100) {

            //   }

            }
            }, false);

            return xhr;
        },
    }); 
}

javascript – ¿Como puedo recibir los datos que envio mediante fetch (JS) en un PHP?

Envié un objeto mediante fetch desde JavaScript, pero cunado intento obtener los datos en mi archivo PHP e insertarlos en mi base de datos MySQL, simplemente no se inserta ningún dato. Investigando encontré que los datos se podrían obtener así:

El archivo “be_connection.php” solo contiene la conexión a la base de datos

be_saveAvg.php


$promedio = json_decode(file_get_contents("php://input") , true);

$insertProm = mysqli_query($conexion, "INSERT INTO promedios(promedio) VALUES ('$promedio(0)')");

bucle for – como itero con un foreach php un arreglo de una consulta recibido mediante un post

tengo un blucle for que recibe un $row = $_POST[‘row’] y me realizo el siguiente recorrido:

      <td><?php echo  $suc?></td>
      <td><?php echo $_POST['Fecha']; ?></td>
      <td><?php echo $_POST['Hora'] ?></td>
      <td><?php echo $_POST['tipo'] ?></td>
      <td><?php echo $_POST['caja'] ?></td>
      <td><?php echo $_POST['cajafactura'] ?></td>
      <td><?php echo $_POST['cajeta_nombre'] ?></td>
      <td><?php echo $_POST['cod_SAP'] ?></td>
      <td><?php echo $_POST['barra'] ?></td>
      <td><?php echo $_POST['descri_mater'] ?></td>
      <td><?php echo $_POST['Prec_Unit'] ?></td>
      <td><?php echo $_POST['IVA'] ?></td>
      <td><?php echo $_POST['Uni_Vendidas'] ?></td>
      <td><?php echo $_POST['Uni_devueltas'] ?></td>
  </tr>
       

el hace el recorrido de los registros pero me vuisualiza la repeticion de un mismo registro por la cantidad de registros encontrados, como si estuviera dulpicado los registros,pero no lo estan solo que si encuentra 4 registros de la consulta toma unos de ellos y los repite 4 vecez

javascript – mostrar select option correcto cuando se le pasa un id mediante jQuery?

Estoy trabajando en un sistema de alta baja y modificación de un catalogo de productos.
No logro que el select me muestre la opción que le paso por medio de un id cuyo valor esta dentro del boton editar.

Código de botón

<button type="button" class="btn btn-primary lapiz" data-descr3="$marca_sub" data- 
descr2="$nombre_sub" data-descr1="$categoria" data-descr="$id_sub" data-toggle="modal" data- 
target=".editar"><i class="fas fa-pen"></i></button>

esto abre un modal cuyo código es:

<div class="modal fade editar" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria- 
hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
    <div class="modal-header">
      <h5 class="modal-title" id="exampleModalLabel">Editar Sub Categoría</h5>
      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
      </button>
  </div>
<div class="modal-body">
    <form action="bm.php" method="post">
        <div class="form-group">
            <input name="id_cat1" type="text" class="form-control" value="">
        </div>
        <div class="form-group">
            <label style="width: 100%">Categoría</label>
<select name="categoria1" id="categoria1" style="width: 100%">
<option>Seleccionar</option>
<?php
$query = "SELECT * FROM categoria";
$result = mysqli_query($link, $query);
while($row = mysqli_fetch_array($result))
{
$id = $row('id_cat');
$categoria = $row('nombre_cat');
echo"
<option value="$id">$categoria</option>n";
}
?>
</select>
</div>
        <div class="form-group">
            <label style="width: 100%">Sub Categoría</label>
            <input name="scategoria1" type="text" required="required" class="form-control" value="">
        </div>
        <div class="form-group">
            <label style="width: 100%">Marca</label>
            <input name="marca1" type="text" class="form-control" value="">
            </div>
        <div class="form-group mt-5">
            <input type="submit" class="btn btn-primary" value="Editar" name="btnEditar">
            <input type="reset" class="btn btn-secondary" value="Borrar">
        </div>
    </form>
</div>
</div>
</div>
</div>

y el scripts es este

<script>
$(document).on('click', '.lapiz', function () {
    var descr = $(this).attr('data-descr');
    var descr1 = $(this).attr('data-descr1');
    var descr2 = $(this).attr('data-descr2');
    var descr3 = $(this).attr('data-descr3');
    $('.editar input(name=id_cat1)').val(descr);
    $('.editar input(name=categoria1)').val(descr1);
    $('.editar input(name=scategoria1)').val(descr2);
    $('.editar input(name=marca1)').val(descr3);
    $('.editar #categoria1').puidropdown('selectValue', descr);
    $('.editar').showModal(); // o similar
});
</script>

Mediante este script logro pasar todas las variables pero no logro que el select entienda la variable descr que seria el id y me muestre esa categoría.

Muchas Gracias