Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61

    Ricavare dati da due Tabelle per mandare email

    Salve vi espongo il mio problema.
    Ho 2 tabelle sul database una che si chiama "user" l'altra che si chiama "user_field_value" ed hanno vari campi che adesso vi illustro.

    La Tabella "user" ha i seguenti campi:
    - user_id
    - username
    - email

    mentre la Tabella "user_field_value" ha i seguenti campi:

    - user_id
    - field_id
    - field_value

    come si può notare l'unico dato che hanno in comune è L' "user_id"

    Quello di cui ho bisogno è : poter ricavare dalla tabella "user" i dati del campo email e dalla tabella "user_field_value" i dati del campo field_value , ma vorrei che solo gli utenti che hanno il campo "filed_value" == 1 e il campo "filed_id" == EmailID possano ricevere un email.

    Mi spiego meglio: ho bisogno di ricavare dal database le email degli utenti che hanno scelto di ricevere la posta elettronica e la scelta se riceverla o no (1 = si , 0 = no) è determinata dal campo filed_value che si differenzia per ogni utente cosi che nel sistema è stato salvato chi vuole ricevere la posta elettronica e chi no in riferimento al campo dell' email che si trova sulla tabella "user_field_value" e che si chiama "field_id" .

    Esp.: Tabella "user" :
    user_id | email
    1 | pippo@libero.it
    2 | pluto@libero.it

    Tabella "user_filed_value":
    user_id | field_id | field_value
    1 | EmailID | 1
    2 | EmailID | 0

    da questo esempio il sistema che sto realizzando manderebbe l'email solo all'utente con "user_id" = 1 e con email = pippo@libero.it e che come "filed_id" = EmailID e come "field_value" = 1 , mentre l'altro utente non riceverebbe l'email.

    Necessito che tutti i campi citati (user_id, field_id, field_value e email) vengano verificati se presenti nelle preferenze dell'utente.

    Adesso immaginate che ci siano centinaia di utenti iscritti e che tramite il sistema che sto creando vorrei mandare un email a solo chi ha scelto di ricevere le email.

    Scusate la lunghezza del post , spero di essermi spiegato di cosa ho bisogno.

    Grazie dell'aiuto.

  2. #2
    Ciao, puoi ricavare i dati che ti interessano con una query molto semplice :

    SELECT u.email,uf.field_value
    FROM user as u JOIN user_field_value as uf ON(u.user_id = uf.user_id)
    WHERE uf.field_value = 1 AND uf.filed_id = 'EmailID'


    Non hai specificato che dbms usi quindi potrebbero esserci delle piccole variazioni di sintassi, ma la sostanza non cambia

    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    Quote Originariamente inviata da bomberdini Visualizza il messaggio
    Ciao, puoi ricavare i dati che ti interessano con una query molto semplice :

    SELECT u.email,uf.field_value
    FROM user as u JOIN user_field_value as uf ON(u.user_id = uf.user_id)
    WHERE uf.field_value = 1 AND uf.filed_id = 'EmailID'


    Non hai specificato che dbms usi quindi potrebbero esserci delle piccole variazioni di sintassi, ma la sostanza non cambia

    utilizzo MySQL ma la query della stringa che mi hai passato dice che è errata :

    Fatal error: Method XenForo_Template_Public::__toString() must not throw an exception in /home/tkujmgzt/public_html/demo/xenforo/library/XenForo/Template/Abstract.php(265) : eval()'d code on line 0

    il codice che ho inserito è questo:
    $thread_qry11 = " SELECT u.email,uf.field_value
    FROM user as u JOIN user_field_value as uf ON(u.user_id = uf.user_id)
    WHERE uf.field_value = 1 AND uf.filed_id = 'EmailID' ";
    $row11 = XenForo_Application::get('db')->fetchAll($thread_qry11);

    foreach ( $row11 AS $rows11 ) {
    $mailuseremail = $rows11['email'];



    }

  4. #4
    in mysql quella query va bene, non so se non vanno le parentesi nella condizione del join.

    Quindi :
    SELECT u.email,uf.field_value
    FROM user as u JOIN user_field_value as uf ON u.user_id = uf.user_id
    WHERE uf.field_value = 1 AND uf.filed_id = 'EmailID'
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    No continua a darmi lo stesso errore ...

  6. #6
    rileggendo l'errore che ti da ho visto che non e' un errore sulla query

    Ma un errore del codice.

    In particolare sulle eccezioni...

    e al quanto pare e' un errore noto : http://www.andrew-kirkpatrick.com/20...-an-exception/
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    non funziona neanche inserendo quella funzione che mi hai segnalato ( scusa il gioco di parole ) ...

  8. #8
    puoi postare la funzione ?
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  9. #9
    anche la funzione dove scrivi la query
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    61
    codice:
    class xenD_Listener_xenDDay
    {
    	
    
    
    	
     public static function includeMyDigestDay($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
        {
    
    
    $db = XenForo_Application::getDb();
                           
                         
    
    
                            if ( !$db ) {
    
    
                                die( 'This script did not connect to the database' . mysql_error() );
                            }
    
    
        $thread_qry11 = "SELECT u.email,uf.field_value FROM xf_user as u JOIN xf_user_field_value as uf ON u.user_id = uf.user_id WHERE uf.field_value = '1' AND uf.filed_id = 'xDNewsletter'";
    			
    			                        $row11 = XenForo_Application::get('db')->fetchAll($thread_qry11);
    			
    			                        foreach ( $row11 AS $rows11 ) {
    			                        	$mailuseremail = $rows11['email'];
    			                        	
    			                        	
    			                        }
    
    
    }


    la funzione che mi hai passato nel link è questa :





    codice:
    public function __toString()
    {
        try {
            return (string) $this->name;
        } catch (Exception $exception) {
            return '';
        }
    }
    Ovviamente tutto nella classe di riferimento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.