Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
¿La forma más eficiente de hacer una lista de opciones html desde mysql?

Puedo recuperar registros de mis tablas por encima de 5000 registros mínimos, y tengo cuatro formas de hacerlo, y no sé cuál y por qué es el adecuado para mi trabajo solicitado y cuál es mejor si se trata de registros menores: (Consultas)

 #---- Rows SELECT a.`id`, a.`content` FROM `docs` a;

Uso el ciclo while() para cada fila:

 while ($row = $rows->fetch()) { echo "<option value=\"{$row['id']}\">{$row['content']}</option>"; }

 #---- Group SELECT GROUP_CONCAT( a.`id`, ".", a.`content` ) AS `options` FROM `docs` a;

Yo uso el bucle exploit() + foreach() (no se permite que el contenido tenga naturalmente "." en su texto) :

 foreach (explode(",", $options) as $option) { $option = explode(".", $option); //[0]: id, [1]: content echo "<option value=\"{$option[0]}\">{$option[1]}</option>"; }

 #---- HTML Rows SELECT CONCAT("<option value=\"",a.`id`,"\">",a.`content`,"</option>") AS `option` FROM `docs` a;

Aplico html en la consulta y luego uso while() loop :

 while ($row = $rows->fetch()) { echo $row; }

 #---- HTML Group SELECT GROUP_CONCAT("<option value=\"",a.`id`,"\">",a.`content`,"</option>" SEPARATOR "") FROM `docs` a;

aquí todo ya está hecho en consulta para solo imprimir:

 echo $rows->fetch();
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Tomaré el requisito de su cliente al pie de la letra, aunque un menú desplegable de 5000 elementos me volvería loco si tuviera que usarlo.

Podría considerar usar el elemento de lista de datos HTML5 para mejorar un poco este UX.

Desde el punto de vista de php, la forma en que genera este código probablemente no sea lo suficientemente importante como para preocuparse. Sin embargo, desde el punto de vista de MySQL, la consulta más simple con el ciclo while (su primera opción) es mejor. ¿Por qué?

  • GROUP_CONCAT() necesita una configuración si genera cadenas largas con él. Lee esto. Longitud máxima de MySQL y GROUP_CONCAT() Un desarrollador inteligente, especialmente cuando se enfrenta a un requisito extraño, lo mantiene simple.

  • El procesamiento de un conjunto de resultados de tamaño mediano fila por fila puede reducir los requisitos de RAM en su programa php y en su servidor MySQL.

  • Es más fácil de leer para el momento inevitable en que usted, o alguien, necesita hacer un mejor trabajo con esta experiencia de usuario.

over 4 years ago · Santiago Trujillo Report

0

Puede usar JQuery select2 y aplicarle un método de búsqueda, que obtendrá datos a través de una llamada AJAX. Uso JSON para completar la selección. Estoy agregando un código de muestra aquí, modifíquelo según sus requisitos.

HTML de muestra

 <select name="ItemID" id="ItemID"> <option value="0">--</option> </select>

JavaScript relacionado

 $("#ItemID").select2({ minimumInputLength:3, ajax: { url: 'json/getItemList.php', dataType: 'json', data: function (params) { return { Src: params.term }; }, processResults: function (data) { var items = []; for (var i = 0; i < data.length; ++i) { items.push({id: data[i][0], text: data[i][1]}); } return { results: items, } }, }, });

Código PHP relacionado

 <?php $Src = ""; if(isset($_REQUEST['Src'])) $Src = $_REQUEST['Src']; // Write your own code to fetch data, and replace the below line //$oList = $mdb->getItemListJSON3($tcmp->getCompanyID(), $Src, 2); $jsonStr = json_encode($oList); print($jsonStr); ?>
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!