Insertar consulta inserta 2 entradas, debe insertar 1

4

He escrito una pequeña publicación por el complemento de vistas, bueno, al menos he iniciado una.

Mis tablas están configuradas, pero cuando se actualizan, el código agrega 2 entradas a mi tabla cuando se carga una publicación y se realiza un seguimiento de las vistas. Literalmente no tengo idea de por qué esto está sucediendo. Parece que la segunda ID de entrada ingresada en la tabla DB es la publicación directamente después de la que está cargada. Ejemplo: si la publicación que se está viendo tiene id = 121, el código agrega las publicaciones 121 y 124.

Aquí está mi código de inserción:

if( is_single() && !is_page() ):
    // add a new data row into the views DB table with the post ID         
    $wpdb->query("INSERT INTO {$ppbv} (post_id, post_type) VALUES ('{$post->ID}','{$post->post_type}');"); 

    $data = $wpdb->get_row("SELECT * FROM {$ppbv_total} WHERE post_id='{$post->ID}'", ARRAY_A); // get the data row that has the matching post ID       

    if(!is_null($data)): // if we have a matching data row  
        $new_views = $data['views'] + 1; // increase the views by 1
        // update the data row with the new views
        $wpdb->query("UPDATE {$ppbv_total} SET views='{$new_views}' WHERE post_id='{$post->ID}';");           
    else: // if we don't have a matching data row (nobody's viewed the post yet)
        // add a new data row into the DB with the post ID and 1 view  
        $wpdb->query("INSERT INTO {$ppbv_total} (post_id, post_type, views) VALUES ('{$post->ID}','{$post->post_type}','1');"); 
    endif;
endif;

¡Si alguien pudiera arrojar algo de luz sobre esto, lo apreciaría enormemente!

    
pregunta dkmojo 13.07.2012 - 17:58

2 respuestas

1

Suena como búsqueda previa del navegador, vea los tickets principales de WordPress # 12603 , #14382 , y # 20192 .

Básicamente, a veces algunos navegadores ven lo que es la próxima publicación y deciden seguir adelante y cargarlo mientras lees este. Entonces, cuando vas a la siguiente publicación, se carga de inmediato, en lugar de que tengas que esperar. La desventaja, como se encontró en este caso, es que a veces esto tiene efectos secundarios inesperados si el usuario no termina de ver la otra publicación.

    
respondido por el J.D. 07.06.2014 - 22:16
0
$location = $_SERVER[‘DOCUMENT_ROOT’];

include ( $location . '/wp-config.php' );
include ( $location . '/wp-load.php' );

global $wpdb;
$contactus_table = $wpdb->prefix."user";
if( isset( $_POST['submit'] ) ) {   
    $name=$_POST['name'];
    $email=$_POST['email'];
    $phone=$_POST['phone'];
    $message=$_POST['message'];

    $sql = "INSERT INTO $contactus_table        
        ('name','email','phone','message')VALUES        
        ('$name','$email','$phone','$message')";

    if( $wpdb->query( $sql ) ) {
        echo "data is inserted";
    }
}
    
respondido por el ANKUSH POFALE 18.08.2015 - 21:59

Lea otras preguntas en las etiquetas