Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

CoLlaboracion para constula wpdb con php.

Estas en el tema de CoLlaboracion para constula wpdb con php. en el foro de WordPress en Foros del Web. Hola compañeros, de tanto matarme la cabeza he aprendido bastante, tengo un dilema y es el siguiente: Necesito hacer una consulta a la base de ...
  #1 (permalink)  
Antiguo 25/10/2011, 07:22
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Busqueda CoLlaboracion para constula wpdb con php.

Hola compañeros, de tanto matarme la cabeza he aprendido bastante, tengo un dilema y es el siguiente:

Necesito hacer una consulta a la base de datos de wordpress, la consulta consiste en entrar a la tabla wp-postmeta consultar en la id ".$_GET['id']." cinco meta_key con su respectivo valor, para cuando sean llamados mostrarlos.
Esto es externo el theme por lo que no lo podría hacerse tan fácil como si fuera cosutom fields.

Código PHP:

Lo que pretendo lograr con wordpress
<?
    
exit();
    }
    if(
$_GET['get']=="list"){
if(!
is_numeric($_GET['id'])){exit("error!");}
$result $msdb->query("SELECT * FROM ms_cp WHERE id = '".$_GET['id']."' ");
if(!
$result){die('eror!!!');}
$row mysql_fetch_array($resultMYSQL_ASSOC);
$toditit=array($row['namesos'],$row['calle'],$row['nuermo'],$row['postal'],$row['link']);
        
?>

Mi codigo:
$result = $msdb->query("SELECT * FROM `wp-postmeta` WHERE post_id = '".$_GET['id']."' ");
 es lo único que se me ocurre.
Por favor necesito ayuda urgente levo dos días haciendo arreglos de este tipo y ya me falta poco, por favor.
  #2 (permalink)  
Antiguo 25/10/2011, 08:02
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: CoLlaboracion para constula wpdb con php.

hola por que no lo haces facil:

Código PHP:
Ver original
  1. echo '<pre>';
  2. echo var_dump($_GET); //MOSTRAME ESTE ESULTADO
  3. echo '</pre>';    
  4.  
  5. if(isset($_GET['get']) && $_GET['get']=="list"){
  6.     if(!is_numeric($_GET['id'])){exit("error!");}
  7.         $id=$_GET['id'];
  8.         $result = $msdb->query("SELECT * FROM ms_cp WHERE id = $id ");
  9.     if(!$result){die('eror!!!');}
  10.         $row = mysql_fetch_array($result, MYSQL_ASSOC);
  11.         //$toditit=array($row['namesos'],$row['calle'],$row['nuermo'],$row['postal'],$row['link']);
  12.         ?>
  #3 (permalink)  
Antiguo 25/10/2011, 08:21
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: CoLlaboracion para constula wpdb con php.

no me funciona, en si no entiendo con .$_GET['id']. podemos tener el id del post_id de la tabla wp-postmeta y como saco los meta_value de esta tabla? que serian namesos, calle, nuermo, postall.
  #4 (permalink)  
Antiguo 25/10/2011, 08:23
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: CoLlaboracion para constula wpdb con php.

mostrame el resultado
  #5 (permalink)  
Antiguo 25/10/2011, 18:33
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: CoLlaboracion para constula wpdb con php.

Parse error: syntax error, unexpected $end in /home/xxx/public_html/xxx/xxxx/xxx.php on line 288
  #6 (permalink)  
Antiguo 25/10/2011, 18:36
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: CoLlaboracion para constula wpdb con php.

Código PHP:
<?
include("../wp-config.php");
$wpdb =& msMySQL::getInstance();
if(
$_GET['get'] =='opera'){ 
?>
bueno aqui muestra que si se ejecuta con opera, lo lleva a otro lado. falta codigo pero es html asi que no se preocupen.

<?
    
exit();
    }
    if(
$_GET['get']=="list"){
if(!
is_numeric($_GET['id'])){exit("ERROR!!");}
$result $wpdb->query("SELECT * FROM wp-postmeta WHERE post_id = '".$_GET['id']."' ");
if(!
$result){die('OTRO ERROR!!!!');}
$row mysql_fetch_array($resultMYSQL_ASSOC);
$toditit=array($row['META-KEY'],$row['META-KEY'],$row['META-KEY'],$row['META-KEY'],$row['META-KEY']);
        
?>
creo que hasta hay he avanzado un poco, pero sigue sin funcionar alguna sugerencia para que sea valido en wordpress, lo malo es que esta por fuera del theme.
  #7 (permalink)  
Antiguo 25/10/2011, 19:35
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: CoLlaboracion para constula wpdb con php.

porque no utilizas el objeto $wpdb y aprovechas las ventajas que este brinda??
Código PHP:
Ver original
  1. global $wpdb;
  2. data = $wpdb->get_row($wpdb->prepare("SELECT * FROM tu_tabla WHERE ID = %d", 1), ARRAY_A);

es algo que tenemos que tomar siempre en cuenta la ventaja de el Framework o CMS en este caso que estamos utilizando
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 25/10/2011, 20:12
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: CoLlaboracion para constula wpdb con php.

carlos_belisario disculpa mi ignorancia pero fue muy poco lo que te entendí, además que cuando yo llame la meta_key debe salir el meta_value osea algo así:

Cita:
<?

if($row['meta-key'] != "" || $row['meta-key'] != NULL){
?>
aqui lo que se cumpla.
  #9 (permalink)  
Antiguo 25/10/2011, 20:40
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: CoLlaboracion para constula wpdb con php.

pues no entiendo bien lo que deseas por eso no te coloque la consulta, solo te indique que puedes trabajar con las funcionalidades que da wordpress, este nos da una clase para gestionar las consultas a la DB, que es $wpdb, el link de referencia en el post anterior, consultar las meta es sencillo
Código PHP:
Ver original
  1. $metas = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = %d", 2), ARRAY_A);
entonces que debes de hacer verificar si $meta esta o no vacia dependiendo si tiene o no valores el post en la tabla postmeta, pero como te indique no entiendo bien que es lo que deseas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 25/10/2011, 20:56
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Busqueda Respuesta: CoLlaboracion para constula wpdb con php.

Mira que llevo días con esto no me lo creerás vamos que si me pueden brindar ayuda se los agradecer muchas gracias, carlós por ayudarme mira ya de una vez por todas te motrare lo que he ido logrando y lo que quiero:

el $_GET['id es generado en el single.php que apunta al archivo que estamos trabajando.
Código PHP:
//con esto accedo al archivo del wp-config para poder tener acceso a la base de datos
<?
include("../wp-config.php");
?>
//aqui hay codigo html no lo pongo para que no nos confundamos.

//con esto puedo consultar la base de datos de worpdress para tener acceso con la ID que me entrega el parámetro $_GET['id'] a la tabla wp-postmeta que es donde tengo los campos personalizados, mega, nuermo, postal, entonces digamos que de la ID 1 necesito imprimir el valor de mega, entonces sale el mega.
    <?
    
exit();
    }
    if(
$_GET['get']=="list"){

if(!
is_numeric($_GET['id'])){exit("error!!!!!!!!!!!!!!");}
$postx1 $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = '".$_GET['id']."' "2), ARRAY_A);
        if(!
$postx1){die('eror!!!');}
            
$row mysql_fetch_array($postx1MYSQL_ASSOC);
            
$toditit=array($row['mega'],$row['calle'],$row['nuermo'],$row['postal'],$row['link']);
            
?>

//Bien ahora necesito que cuando se cumpla mega salga el valor.

<?



if($row['mega'] != "" || $row['mega'] != NULL){
 
//no se si esto asi esta bien
    
?>

    <li style="width:33.333333333333%;margin-top:10px;"><a href="#" id="f_0"><img src="img/servers/mega.jpg" height="130" width="130" border="0" /></a></li>

    <script type="text/javascript">

    $("#f_0").click(function() {

        goSource('megasos');

        return false;

    });

    </script>

    

    <?

    
}

if(
$row['calle'] != "" || $row['calle'] != NULL){

        
?>

    

    <li style="width:33.333333333333%;margin-top:10px;"><a href="#" id="f_1"><img src="img/servers/bitshare.jpg" height="130" width="130" border="0" /></a></li>

    <script type="text/javascript">

    $("#f_1").click(function() {

        goSource('calle');

        return false;

    });

    </script>
///y aqui el resto de campos y termina con

    <?

    
}

    
mysql_free_result($result);

?>

    <?

        
exit();

        }
Agradezco si me pueden ayudar muchas gracias.

Última edición por Okapps; 25/10/2011 a las 21:05
  #11 (permalink)  
Antiguo 25/10/2011, 21:07
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: CoLlaboracion para constula wpdb con php.

lo primero ve la referencia que te deje de $wpdb ya que no lo estas utilizando bien te explico el porque
$wpdp->get_results() te trae el resultado de la consulta que pasaste añ darle el parametro de ARRAY_A en un array asociativo, por lo tanto $postx1 tendria un array asociativo con los datos obtenidos de tu consulta,
$wpdb->prepare te hace una prepared statement que en el caso de el objeto $wpdb el parametro se pasa indicando el tipo
%d para los numeros enteros
%s para los String
entonces al hacer esto
Código PHP:
Ver original
  1. $metas = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = %d", 2), ARRAY_A);
obtendrias los datos de la tabla postmeta cuyo post_id sea 2 que fue con el que yo hice las pruebas, en tu caso el 2 se sustituiria con $_GET['id'],
Y como te dije si estas utilizando el objeo $wpdb no es necesario que utilices las funciones mysql_*, porque ya tienes un objeto que te gestiona la base de datos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #12 (permalink)  
Antiguo 25/10/2011, 21:47
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: CoLlaboracion para constula wpdb con php.

Y los llamo asi:

Cita:
if($row['mega'] != "" || $row['mega'] != NULL){
?>
mysql_free_result($result); esto sobra entonces igual que

Cita:
$row = mysql_fetch_array($postx1, MYSQL_ASSOC);
$toditit=array($row['mega'],$row['calle'],$row['nuermo'],$row['postal'],$row['link']);
  #13 (permalink)  
Antiguo 26/10/2011, 10:17
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Respuesta: CoLlaboracion para constula wpdb con php.

Hola, creo que deberías consultar la documentación de la clase para que puedas salir del atolladero http://codex.wordpress.org/wpdb

No me metí a leer todo el código que tienes (perdón por eso), pero lo que deseas hacer no es muy complicado con ayuda de la clase y la docu que te paso antes...

Saludos.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #14 (permalink)  
Antiguo 27/10/2011, 07:31
 
Fecha de Ingreso: octubre-2011
Ubicación: conoceme y averigualo
Mensajes: 64
Antigüedad: 13 años, 1 mes
Puntos: 2
Mensaje Respuesta: CoLlaboracion para constula wpdb con php.

En verdad alguien que me ayude a ejecutar este php en wordpress...

Código PHP:
<?

    
exit();

    }

    if(
$_GET['get']=="list"){

if(!
is_numeric($_GET['id'])){exit("error!!!!!!!!!!!");}

$result $msdb->query("SELECT * FROM ms_stream WHERE id = '".$_GET['id']."' ");

if(!
$result){die('error!!!!');}

$row mysql_fetch_array($resultMYSQL_ASSOC);

$toditit=array($row['mega'],$row['bitshare'],$row['ffactory'],$row['mfire'],$row['hotfile']);

        
?>

Etiquetas: mysql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:44.