[PHP] Invio messaggio a tutti gli iscritti

Andrea_2017

Utente Attivo
17 Set 2017
26
0
1
40
Ciao a tutti!Ho un piccolo quesito da sottoporvi e al quale non riesco a trovare risposta da solo..forse per molti di voi sarà una cavolata,ma per me sta diventando un tormento.
Dunque vado al sodo,ho un sito web con database sql e codice scritto in php, all'interno del sito viene utilizzato un sistema di messaggistica tra iscritti. Io come gestore del sito ho un pannello dove pubblicare su di una bacheca le varie news,io vorrei riuscire a far inviare un messaggio (tramite la messaggistica interna) a tutti gli iscritti quando pubblico qualcosa di nuovo su di questa bacheca,di modo tale che tutti siano avvisati della pubblicazione.

Sul database ho una tabella denominata "personaggi" con i vari campi, tra cui id e nome dell'utente iscritto e poi un'altra tabella denominata "messaggi" con il campo mittente,destinatario,testo ecc

e questo è il codice che ho scritto:
PHP:
$rs=query("SELECT * FROM personaggi WHERE  id LIKE '%' ");
    $user_id=$rs['id'];
  
if (isset ($_POST['testo_news']))
    {
      
        $testo_news=$_POST["testo_news"];
        $testo_news=str_replace("'","''", $testo_news);
        $testo_news = mysql_real_escape_string($testo_news);
            $testo_news = filter_var($testo_news, FILTER_SANITIZE_STRING);
      
        $titolo_news=$_POST["titolo_news"];
        $titolo_news=str_replace("'","''", $titolo_news);
        $titolo_news = mysql_real_escape_string($titolo_news);
            $titolo_news = filter_var($titolo_news, FILTER_SANITIZE_STRING);
      
        $data_news=$_POST["data_news"];
        $data_news=str_replace("'","''", $data_news);
      
        $autore=$_POST["autore"];
        $autore=str_replace("'","''", $autore);
      
        $tipo=$_POST["tipo"];
        $tipo=str_replace("'","''", $tipo);
      
  

      
      
        #inseriso i dati
        $rs = "INSERT INTO news (testo_news, titolo_news, data, autore, tipo) VALUES('$testo_news', '$titolo_news', NOW() , '$_SESSION[nome_pg]', '$tipo')";
        $Result = mysql_query($rs);
      
        #iinvio missiva a tutti gli iscritti
        $rs = "INSERT INTO messaggi_on (mittente_nome, mittente, destinatario, data, titolo, testo) VALUES('Gestione','$_SESSION[id_pg]', '$user_id', NOW() , 'Notizie della Land-$titolo_news', '$testo_news')";
        $Result = mysql_query($rs);

di per se il codice funziona,il problema è che il messaggio viene inviato solo al primo utente che si è iscritto e a nessun altro.
Suppongo e sicuramente sbaglio qualcosa,qualcuno riuscirebbe ad aiutarmi a correggere l'errore?
grazie in anticipo e chi mi salverà da questa croce!
 
Ultima modifica di un moderatore:
Ho fatto una prova modificando il codice nel modo seguente:
PHP:
$db=dbconnect();

$rs = query("SELECT * FROM personaggi WHERE id = " . $_SESSION['id_pg']);
$admin = $rs['admin'];
$master = $rs['master'];



if (($admin == 1) || ($master == 1)) {


if (isset ($_GET['cancella']))
    {
  
        #cancello la razza
        $cancella = "DELETE FROM news WHERE id_news =" . $_GET['cancella'];
        $Result = mysql_query($cancella);

    }
  
    $utenti = array(
  1 => '370',
  2 => '369',

);

foreach ($utenti as $personaggi => $user) {
 $user=$rs['id'];
}
  

  
  
if (isset ($_POST['testo_news']))
    {
      
        $testo_news=$_POST["testo_news"];
        $testo_news=str_replace("'","''", $testo_news);
        $testo_news = mysql_real_escape_string($testo_news);
            $testo_news = filter_var($testo_news, FILTER_SANITIZE_STRING);
      
        $titolo_news=$_POST["titolo_news"];
        $titolo_news=str_replace("'","''", $titolo_news);
        $titolo_news = mysql_real_escape_string($titolo_news);
            $titolo_news = filter_var($titolo_news, FILTER_SANITIZE_STRING);
      
        $data_news=$_POST["data_news"];
        $data_news=str_replace("'","''", $data_news);
      
        $autore=$_POST["autore"];
        $autore=str_replace("'","''", $autore);
      
        $tipo=$_POST["tipo"];
        $tipo=str_replace("'","''", $tipo);
      
  

      
      
        #inseriso i dati
        $rs = "INSERT INTO news (testo_news, titolo_news, data, autore, tipo) VALUES('$testo_news', '$titolo_news', NOW() , '$_SESSION[nome_pg]', '$tipo')";
        $Result = mysql_query($rs);
      
      
        #iinvio missiva a tutti gli iscritti
        $rs = "INSERT INTO messaggi_on (mittente_nome, mittente, destinatario_nome, data, titolo, testo) VALUES('Gestione','$_SESSION[id_pg]', '$user', NOW() , 'Notizie della Land-$titolo_news', '$testo_news')";
        $Result = mysql_query($rs);
      
      
                header("Location: news.php", true);
  
    }

#elenco le razze
$lista_news=array();
$result = query ("QUERY SELECT id_news, titolo_news, data FROM news ORDER BY data DESC");
while ($rs=query('while',$result))
    {
        $lista_news[] = array(  
      
                                    'id_news'=> $rs['id_news'],
                                    'titolo_news'=> $rs['titolo_news']

                                );
    }
query('free', $result);
?>

volevo provare ad inviare il messaggio a due utenti definiti con id 369 e 370

PHP:
$utenti = array(
  1 => '370',
  2 => '369',

);

foreach ($utenti as $personaggi => $user) {
 $user=$rs['id'];
}

il problema è che lo invia solo al 370
dove sbaglio?mi sto interfacciando alla programmazione da poco e quindi non sono espertissimo... mi sapete aiutare a scrivere il pezzo mancante?o a correggerlo...grazie
 
Ultima modifica:

Discussioni simili