PHP - usar un valor de busqueda y ocuparlo en un option

 
Vista:

usar un valor de busqueda y ocuparlo en un option

Publicado por Noe (178 intervenciones) el 25/02/2023 19:09:54
Hola foro !!!
esperando me puedan ayudar y es con lo siguiente deseo ocupar un valor que traigo de una búsqueda
y mostrarlo en un <option> para mostrar en que categoría esta de dicho producto
catálogo de productos
1-- Electrónica
2-- Telefonía
3—Computación
aqui invoco la funcion de busqueda
1
2
3
4
5
6
<div>
         Id Producto<br>
         <input type="text" placeholder="Id producto..." name="idp" id="idp" class="campo largo1"
         onchange="TraeProducto(this.value)" onkeyup="javascript:this.value=this.value.toUpperCase();"
         class="uppercase" />
      </div>
aqui esta la busqueda todo funciona correctamente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function TraeProducto(id){
      $.post("busca_producto.php",{ClaveId:id},function(retorno){
         registro = retorno.split("*");
         if (registro[0] == "NoEncontrado"){
            alert('El producto no esta registrado...');
            document.forms.frm.idp.value='';
            $('#idp').focus();
         }else{
            document.getElementById('entra').disabled=false;
            $('#idp').val(registro[0]);
            $('#nom').val(registro[1]);
            $('#pre').val(registro[2]);
            $('#des').val(registro[3]);
            $('#tip').val(registro[4]);
            $('#nom').focus();
         }
      });
   }
asi muestro los valores
1
2
<input type="text" name="nom" id="nom" class="campo largo2" />
<input type="text" name="pre" id="pre" step="eny" class="campo largo1" />
y lo que deso es que el valor de $('#tip').val(registro[4]); lo pueda utilizar en el option para hacer una busqueda y saber en que categoria esta muestro como tengo el script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div>
         Descripcion Producto
         <?php
            $tipp=3;
            $sql="SELECT clave,descripcion From des_producto Where clave = ?";
            $resu=$pdo->prepare($sql);
            $resu->execute(array($tipp));
            $dato = $resu->fetchall(PDO::FETCH_ASSOC);
            $pcve = $dato[0]['clave'];
            $pdes = $dato[0]['descripcion'];
         ?>
         <select name="tip" class="list" id="nom" tabindex="10">
            <option><?php echo $pdes; ?></option><?php
               $stmt = $pdo->query("SELECT clave,descripcion From des_producto");
               While ($row = $stmt->fetch()){
                  echo '<option value=" '.$row['clave'].' "> '.$row['descripcion'].' </option> ';
               } ?>
         </select>
      </div>

como ven esta manualmente con $tipp=3; Espero me haya explicado bien
GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

usar un valor de busqueda y ocuparlo en un option

Publicado por Noe (178 intervenciones) el 22/03/2023 01:50:26
Hola Alejandro !!!

gracias por responder, vi tu comentario hasta este sábado pasado pensé que ya nadie iba a contestar hice los cambios que me sugeriste y lo tengo así
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript">
   function TraeProducto(id){
      $.post("busca_prod.php",{ClaveId:id},function(retorno){
         registro = retorno.split("*");
         if (registro[0] == "NoEncontrado"){
            alert('El producto no esta registrado...');
            document.forms.frm.idp.value='';
            $('#idp').focus();
         }else{
            document.getElementById('entra').disabled=false;
            $('#idp').val(registro[0]);
            $('#nom').val(registro[1]);
            $('#pre').val(registro[2]);
            $('#des').val(registro[3]);
            $('#tip').val(registro[4]);
            var categoria = registro[4];
            $('#nom').focus();
         }
      });
   }
   </script>

y el select así

1
2
3
4
5
6
7
8
9
<select name="tip" class="list" tabindex="10">
            <option></option>
            <?php
            $stmt = $pdo->query("SELECT clave,descripcion From des_producto");
            While ($row = $stmt->fetch()){
               $selected = ($row['clave'] == $categoria) ? 'selected' : '';
               echo '<option value="'.$row['clave'].'" '.$selected.'>'.$row['descripcion']. '</option>';
            } ?>
         </select>

pero no nuestra la categoría.
te agradecería mucho si me pudieras ayudar.
GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro

usar un valor de busqueda y ocuparlo en un option

Publicado por Alejandro (1 intervención) el 03/04/2023 23:49:25
Hola Noé.

Para poder mostrar la categoría en el select, tienes que asegurarte de que la variable '$categoria' tenga un valor asignado antes de llegar a la sección del select. En tu código, la variable '$categoria' se asigna dentro de la función 'TraeProducto()' después de hacer una llamada AJAX al archivo 'busca_prod.php'. Esto significa que la variable '$categoria' solo tendrá un valor asignado después de que el usuario seleccione un producto en el formulario y se realice la llamada AJAX.

Para solucionar esto, puedes mover la sección del select dentro de la función 'TraeProducto()' después de asignar la variable $categoria, o puedes asignar un valor predeterminado a la variable '$categoria' antes de que se muestre el formulario. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// asignar un valor predeterminado a $categoria
$categoria = '';
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   // código para procesar el formulario enviado
} else {
   // código para mostrar el formulario vacío con la variable $categoria predefinida
?>
 
<form method="post" action="">
   <!-- campos del formulario aquí -->
   <select name="tip" class="list" tabindex="10">
      <option></option>
      <?php
         $stmt = $pdo->query("SELECT clave,descripcion From des_producto");
         While ($row = $stmt->fetch()){
            $selected = ($row['clave'] == $categoria) ? 'selected' : '';
            echo '<option value="'.$row['clave'].'" '.$selected.'>'.$row['descripcion']. '</option>';
         }
      ?>
   </select>
</form>
 
<?php
}
?>

En este ejemplo, la variable '$categoria' se inicializa con una cadena vacía en la parte superior del script PHP. Luego, en la sección del select, se utiliza el operador ternario para determinar si la opción debe ser seleccionada o no, de acuerdo con el valor actual de '$categoria'. Si '$categoria' está vacía, ninguna opción se seleccionará automáticamente.

Espero que esto te ayude.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar