Witam.
Mam problem z prywatnymi wiadomościami. Analizowałem kod kilka razy ale na nic nie wpadłem. Problem polega na tym, że gdy ktoś wysyła wiadomość to odbiorca otrzymuje dwie chodź została wysłana jedna. Niektórych wiadomości wysłanych oraz nadawczych nie można odczytać ponieważ wywala błąd:
Cytat
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /virtual/k/o/kosek.ugu.pl/odbiorcza.php on line 15
.
Wszystkie pliki znajdują się na stronie głównej czyli kosek.ugu.pl.
Oto kod odiorcza.php
<?
require "sesje.php";
require "naglowek.php";
if($_GET["id"]){
$id=intval($_GET["id"]); //zamieniamy zmienną na liczbe, zapobiega to atakom typu sql injection if(mysql_num_rows(mysql_query("select wiad_od from wiadomosci where wiad_id=$id and wiad_czyj=0 and wiad_od=".$_SESSION["zalogowany"]))){ mysql_query("delete from wiadomosci where wiad_id=$id"); //sprawdzamy czy wiadomość którą użytkownik chce usunąć faktycznie ależy do niego echo "Usunięto wiadomość!<br>"; }
}
else if($_GET["co"]){
$co=intval($_GET["co"]); //zamieniamy zmienną na liczbe, zapobiega to atakom typu sql injection if(mysql_num_rows(mysql_query("select wiad_od from wiadomosci where wiad_id=$id and wiad_czyj=0 and wiad_od=".$_SESSION["zalogowany"]))){ mysql_query("update wiadomosci set wiad_przeczytane=1 where wiad_id=$co"); //po raz kolejny zostaje sprawdzony warunek, $wynik=mysql_query("select * from wiadomosci where wiad_id=$co and wiad_czyj=0"); //który również sprawdza właściciela wiadomości echo "<br><br><table><tr><td>Nadawca: ".$nadawca["user_login"]."</td><td>Data: ".date("d/m/Y H:i", strtotime($rekord["wiad_data"]))."</td><td><a href='odbiorcza.php?id=".$rekord["wiad_id"]."'>usuń</a></td></tr>"; echo "<tr><td colspan=3>".$rekord["wiad_temat"]."</td></tr>"; echo "<tr><td colspan=3>".$rekord["wiad_tresc"]."</td></tr>"; }
}
else{
$wynik=mysql_query("select * from wiadomosci where wiad_do=".$_SESSION["zalogowany"]." and wiad_czyj=0 order by wiad_data");
echo "<table><tr><td>Nadawca</td><td>Temat</td><td>Data</td><td> </td></tr>"; if(!mysql_num_rows($wynik))echo "<tr><td colspan=4 style='text-align:center'>Nie masz żadnych wiadomości!</td></tr>"; $kw1="";$kw2="";
if(!$rekord["wiad_przeczytane"]){$kw1="<b>";$kw2="</b>";}
echo "<tr><td>".$nadawca["user_login"]."</td><td><a href='odbiorcza.php?co=".$rekord["wiad_id"]."'>$kw1".$rekord["wiad_temat"]."$kw2</td><td>".date("d/m/Y H:i", strtotime($rekord["wiad_data"]))."</td><td><a href='odbiorcza.php?id=".$rekord["wiad_id"]."'>usuń</a></td></tr>"; }
}
require "stopka.php";
?>
Nie wiem czy się przyda ale dam jeszcze nadawczą czyli newmsg.php
<?
require "sesje.php";
require "naglowek.php";
if($_POST["tresc"] && $_POST["do"] && $_POST["temat"]){
echo "<br><br>Wysłano wiadomość!<br>"; }
else if($_POST["submit"]){
echo "<br><br>Nie uzupełniono wszystkich pól!<br>"; }
echo "<form action='newmsg.php' method=post>"; echo "<br>Temat: <input name=temat size=30>"; echo "<br>ID: <input name=do>"; $wynik=mysql_query("select user_id from users order by user_id"); echo "<option value=".$rekord["user_id"].">".$rekord["user_login"]; }
echo "Treść: <br><textarea name='tresc' rows=8 cols=50></textarea>"; echo "<br><input type=submit value='wyślij wiadomość' name=submit>"; require "stopka.php";
?>
Proszę o jakieś rady sam sobie nie mogę poradzić :<