Un usuario preguntó 👇
Hola, necesito separar los resultados del campo para obtener este formato «150 00», «602 00», «709 00», etc. Mi código:
$sql = "SELECT GROUP_CONCAT(value) AS data FROM wp_cf7_vdata_entry WHERE <code>name</code> = 'psc'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["data"]; // now 150 00,602 00,709 00
...
¡Gracias por tu ayuda!
(@jakept)
Hace 2 años, 9 meses
Qué es $conn
? Y no veo la diferencia entre el formato de su comentario y su pregunta. ¿Quieres poner comillas alrededor de los números? ¿Qué estás haciendo con los datos?
(@ ferda2)
Hace 2 años, 9 meses
Conn es:
$conn = new mysqli($servername, $username, $password, $dbname);
Ahora tengo el resultado en el formato 150 00,602 00,709 00. Quiero el resultado en el formato «150 00», «602 00», «709 00» (comillas alrededor de los números) para su uso posterior.
(@jakept)
Hace 2 años, 9 meses
Primer uso $wpdb
Si está interactuando con una base de datos de WordPress y necesita ejecutar todos los elementos en un conjunto de resultados, no los sincronizaría en MySQL, hágalo en PHP después de la operación.
Le $wpdb
un get_col()
el método lanzará un conjunto unidimensional de los valores seleccionados en esa columna, que es lo que busca.
Luego, recorra esos, agregue las comillas y finalmente implode()
junto con comas:
global $wpdb; $results = $wpdb->get_col("SELECT value AS data FROM wp_cf7_vdata_entry WHERE name="psc""); foreach ( $results as &$result ) { $result=""" . $result . '"'; } $formatted_results = implode( ',', $results );
Esta respuesta fue modificada hace 2 años, 9 meses por. Esta respuesta fue modificada hace 2 años, 9 meses por. Esta respuesta fue modificada hace 2 años, 9 meses por. Esta respuesta fue modificada hace 2 años, 9 meses por.
(@ ferda2)
Hace 2 años, 9 meses
¡Muchas gracias! Por favor, indique cómo pegar el resultado en JavaScript. Mi código (PHP):
$_SESSION["psc"] = $formatted_results;
Javascript:
...
var addressArray = new Array("150 00","602 00","709 00"); // TEST only - working (fixed definition)
var addressArray = new Array('<?php echo $_SESSION["psc"]; ?>') // show only 602 00 marker
var geocoder = new google.maps.Geocoder();
...
(@ ferda2)
Hace 2 años, 9 meses
Mi objetivo es crear un mapa de acuerdo con https://developers.google.com/maps/documentation/javascript/marker-clustering, pero solo tengo un código postal del formulario de contacto 7.
(@jakept)
Hace 2 años, 9 meses
Ah, debería decirse que lo deseaba así para JavaScript. La respuesta es diferente. PHP y WordPress tienen mejores formas de enviar datos a JavaScript que compilar manualmente dicha cadena.
Debe archivar su JS para el mapa, luego agregarle valores PHP wp_localize_script()
.
Así que imagina que estás poniendo en cola tu script así:
wp_enqueue_script( 'ferda2', 'path/to/script.js' );
Proporcionas variables para ello wp_localize_script()
especificando el mismo ‘mango’ (ferda2
).
global $wpdb; $results = $wpdb->get_col("SELECT value AS data FROM wp_cf7_vdata_entry WHERE name="psc""); wp_localize_script( 'ferda2', 'ferda2', array( 'postcodes' => $results, 'psc' => $_SESSION['psc'], ) );
Lo que hace esto es una vez ferda2
en cola (primer argumento), objeto global de JavaScript ferda2
(se crea el segundo argumento) con valores con formato JS (tercer argumento).
Entonces, en su secuencia de comandos, ahora puede acceder a esos datos ferda2.postcodes
y ferda2.psc
. Lo usaría como su caso de uso:
var addressArray = ferda2.postcodes; var addressArray = [ferda2.psc]; // show only 602 00 marker var geocoder = new google.maps.Geocoder();
Note que cambié new Array()
a []
. Esta es la mejor forma de crear matrices en JavaScript. postcodes
no es necesario por su valor ferda2.postcodes
ya creado como una edición con wp_localize_script()
.
Esta respuesta fue modificada hace 2 años, 9 meses por. Esta respuesta fue modificada hace 2 años, 9 meses por.
(@ ferda2)
Hace 2 años, 9 meses
Es muy dificil para mi. Solo controlo HTML y CSS (al menos PHP). ¿Podemos organizar el procesamiento (por dinero)? Necesito crear un mapa (Google – Marker Clustering) a partir de los datos del Formulario de contacto 7 (solo código postal). En Drupal funciona bien, hay un plugin Markercluster Sheet. WordPress no ofrece nada como esto.
(@diondesigns)
Hace 2 años, 9 meses
Tenga en cuenta que intentar contratar asistencia bloqueará su tema. Espero que esto resuelva su problema de una manera que lo entienda.
Lo siguiente usa su código original y las credenciales SS proporcionadas $wpdb
. El código es simple y la sobrecarga de recursos no se asociará con la $wpdb
funciones para obtener resultados de la base de datos.
Primero, el código PHP. No lo use si está desarrollando un plugin para su distribución a menos que verifique que $wpdb
usando PHP mysqli extensión.
El es group_concat_max_len
una variable establece la longitud máxima permitida de los datos devueltos por su consulta. Si tiene más de mil números en su matriz, debe aumentar este valor en consecuencia. No lo configure por encima de 512K.
global $wpdb;
$conn = $wpdb->__get('dbh');
mysqli_query($conn, 'SET SESSION group_concat_max_len = 32768');
$sql = "SELECT GROUP_CONCAT(value SEPARATOR '","') AS data FROM wp_cf7_vdata_entry WHERE name = 'psc'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
mysqli_free_result($result);
$_SESSION["psc"] = '["' . $row . '"]';
unset($conn);
Y aquí está el código JS para la matriz:
var addressArray = <?php echo $_SESSION["psc"]; ?>;
Esta respuesta fue modificada hace 2 años, 9 meses por. Esta respuesta fue modificada hace 2 años, 9 meses por. Esta respuesta fue modificada hace 2 años, 9 meses por.
(@ ferda2)
Hace 2 años, 9 meses
Desafortunadamente, este script no funciona. Mi experimento:
PHP
global $wpdb;
$results = $wpdb->get_col("SELECT value FROM wp_cf7_vdata_entry WHERE name = 'psc'");
foreach ( $results as &$result ) {
$result = '"' . $result . '"';
}
$formatted_results = implode( ',', $results );
$_SESSION["psc"] = $formatted_results;
Javascript
var addressArray = new Array('<?php echo $_SESSION["psc"]; ?>') // Console output: Array [ ""590 06","301 00","691 41","602 00","350 66","590 06"" ]
var addressArray = addressArray.join(" and "); // Console output: "590 06","301 00","691 41","602 00","350 66","590 06"
(@ infovision123)
Hace 2 años, 9 meses
Vision B-info es el mejor proveedor de servicios web en jaipur y proporciona servidor dedicado, servidor VPS, alojamiento compartido, alojamiento de revendedor, servicios SMS a granel, registro de dominio.
http://www.infovision.com/
¿Solucionó tu problema??
0 / 0