- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema Array
-
Problema Array
Salve,
ho creato questo codice per inviare messaggi privati, volendo nel campo destinatario possono essere inseriti più destinatari divisi con una virgola:
[php]<?php
error_reporting(E_ALL);
require('include/config.php');if(!isset($_SESSION['login']))
{
header('Location: /');
exit;
}
elseif(isset($_POST['invia']))
{
$destinatario = (isset($_POST['destinatario'])) ? trim($_POST['destinatario']) : '';
$object = (isset($_POST['object'])) ? trim($_POST['object']) : '';
$msg = (isset($_POST['msg'])) ? trim($_POST['msg']) : '';if(strlen($destinatario) == 0 || strlen($msg) == 0)
$err_vuoto=true;
elseif(strlen($msg) < 6)
$err_corto=true;
else
{
if(strlen($object) == 0)
{
$object = 'Nessun Oggetto';
}
if(strstr($destinatario,','))
{
$data = time();
$msg = nl2br($msg);$explode=explode(',',$destinatario); foreach($explode as $destinatari) { $query=mysql_query("SELECT id FROM utenti WHERE user='$destinatari'") OR die(mysql_error()); } while($result=mysql_fetch_array($query)) { $query_msg = mysql_query("INSERT INTO msg (id_mittente, id_destinatario, object, msg, data_invio) VALUES ('{$_SESSION['login']}', '{$result['id']}', '$object', '$msg', '$data')") OR die(mysql_error()); } header('Location: /privata.php?page=msg'); exit; } else { $query_destinatario = mysql_query("SELECT id FROM utenti WHERE user = '$destinatario' LIMIT 1") OR die(mysql_error()); $array_query = mysql_fetch_array($query_destinatario); if($array_query['id'] == $_SESSION['login']) { $err_user=true; } elseif(mysql_num_rows($query_destinatario) == 1) { $data = time(); $msg = nl2br($msg); $query_msg = mysql_query("INSERT INTO msg (id_mittente, id_destinatario, object, msg, data_invio) VALUES ('{$_SESSION['login']}', '{$array_query['id']}', '$object', '$msg', '$data')") OR die(mysql_error()); header('Location: /privata.php?page=msg'); exit; } else { $err_user1=true; } }
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Nuovo Messaggio</title>
<link rel="stylesheet" href="/theme/style.css" type="text/css">
</head>
<body>
<table>
<tr>
<td valign="top">
<?php require('include/menu.php'); ?>
</td>
<td>
<!-- inizio del form -->
<table>
<?php if(isset($err_vuoto)){echo '<strong class="error">- Devi riempire tutti i campi</strong><br />';}elseif(isset($err_corto)){echo '<strong class="error">- Messaggio troppo corto</strong><br />';}elseif(isset($err_user)){echo '<strong class="error">- Non puoi mandarti messaggi da solo</strong><br />';}elseif(isset($err_user1)){echo '<strong class="error">- Nessun Utente registrato con questo NickName</strong><br />';} ?>
<form action="" method="post">
<tr><td>Destinatario</td><td><input name="destinatario" type="text" name="destinatario" <?php if(isset($_GET['subpages'])) { echo 'value='.$_GET['subpages'].''; } ?> maxlenght="12" /></td></tr>
<tr><td>Oggetto</td><td><input name="object" type="text" name="object" maxlenght="12" /></td></tr>
<tr><td>Testo</td><td><textarea name="msg" id="msg" style="width: 100%; height: 150px;"></textarea><br /></td></tr>
<tr><td><input name="invia" type="submit" id="invia" value="Invia Messaggio" /></td><tr>
</form>
</table>
<!-- fine del form -->
</td>
</tr>
</table>
<?php
require('include/footer.php');
?>
</body>
</html> [/php]Funziona tutto, o quasi, la parte incriminata è appunto quella per inviare pvt multipli:
[php]if(strstr($destinatario,','))
{
$data = time();
$msg = nl2br($msg);$explode=explode(',',$destinatario); foreach($explode as $destinatari) { $query=mysql_query("SELECT id FROM utenti WHERE user='$destinatari'") OR die(mysql_error()); } while($result=mysql_fetch_array($query)) { $query_msg = mysql_query("INSERT INTO msg (id_mittente, id_destinatario, object, msg, data_invio) VALUES ('{$_SESSION['login']}', '{$result['id']}', '$object', '$msg', '$data')") OR die(mysql_error()); } header('Location: /privata.php?page=msg'); exit; }[/php]
Durante l'explode, se ci sono più destinatari, prende solo l'ultimo.
Esempio: Account1,Account2,Account3 Il pvt viene inviato solo ad Account3.
Potete aiutarmi?
-
Ciao RCayla,
prova cosi:
[php]
if(strstr($destinatario,','))
{
$data = time();
$msg = nl2br($msg);$explode=explode(',',$destinatario); foreach($explode as $destinatari) { $query=mysql_query("SELECT id FROM utenti WHERE user='$destinatari'") OR die(mysql_error());
if(mysql_num_rows($query) > 0)
{
$result=mysql_fetch_array($query);
$query_msg = mysql_query("INSERT INTO msg (id_mittente, id_destinatario, object, msg, data_invio) VALUES ('{$_SESSION['login']}', '{$result['id']}', '$object', '$msg', '$data')") OR die(mysql_error());
}
}
header('Location: /privata.php?page=msg');
exit;
[/php]
-
Perfetto funziona, grazie mille
-
Figurati.