Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] prywatne wiadomości
Forum PHP.pl > Forum > PHP
klapaucius
Witam wszystkich! Mam problem nad ktorym siedze juz 2 dni i nic nie moge wskurac. Mianowicie na mojej stronie zrobilem system wiadomosci. Chce jednak zrobic cos takiego, ze jesli ktos w polu "adresat" wpisze nieprawidlową nazwe uzytkownika, to zeby wywalil wlasnie taki komunikat ze taki user nei istnieje. Niestety mam problem bo za kazdym razem pisze to samo, ze uzytkownik nie istnieje, nawet jak wpsize poprawnie. Oto kod:
  1. <?php
  2. include('baza.php');
  3. include('gora.php');
  4. $date = date("Y-m-d H:i:s");
  5. $q = mysql_query("SELECT `id` FROM `users` WHERE `user` = '".addslashes($_POST['odbiorca'])."'") or die ("Błąd przy q!");
  6.    if(isset($_POST['temat']) && isset($_POST['odbiorca']) && isset($_POST['tresc'])) {
  7.                         if(isset($q['id'])){
  8.                                               mysql_query("INSERT INTO `wiadomosci` (`login`, `od`, `temat`, `tresc`, `date`) VALUES ('".addslashes($_POST['odbiorca'])."', '$user', '".addslashes($_POST['temat'])."', '".addslashes($_POST['tresc'])."', '$date')") or die ("Błąd przy wysyłaniu wiadomości!");
  9.                                               echo "Wiadomość wysłana";
  10.                               }
  11.                         else{
  12.                                               echo "Nie ma takiego nicku" ;
  13.                             }
  14.    } else {
  15.        echo "<form method='POST'>
  16.                        <p>Temat: <input type='text' name='temat' size='40' maxsize='100' value='".$_POST['temat']."' /></p>
  17.                        <p>Treść: <textarea name='tresc' columns='80' rows='5' >".$_POST['tresc']."</textarea></p>
  18.                        <p>Adresat: <input type='text' name='odbiorca' maxsize='50' value='".$_POST['odbiorca']."' />
  19.                        <input type='submit' name='wyslij' value='Wyślij wiadomość' />
  20.                    </form>";
  21.    }
  22. include('dol.php');
  23. ?>

pozdrawiam
erix
  1. <?php
  2. if(isset($q['id'])){
  3. ?>

A wiesz, po co jest mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual? Kurs PHP+MySQL.
ucho
A gdzie pobierasz wyniki zapytania SQL? Żadnego mysql_fetch_* nie widzę
marcio
Ja mam to zrobione tak kodu nie podam bo to jest latwe:

Masz form ktos wpisuje dane i naciska submit po czym sprawdzasz czy pola nie sa puste jezeli nie to robisz zapytanie takie jakie masz:
Kod
$q = mysql_query("SELECT `id` FROM `users` WHERE `user` = '".addslashes($_POST['odbiorca'])."'") or die ("Błąd przy q!");

Np za pomoca mysql_num_rows() sprawdzasz czy znaleziono takiego user;'a jesli tak dodajesz do bazu jesli nie to nie dodajesz.
klapaucius
aah tak zapomnailem o fetchowaniu.... no ale teraz dziala.... Dzieki wielkie Wam i prosze o wyrozumailosc bo tak szczerze to nigdy nie uczylem sie ani mysql ani php tongue.gif znam je jedynie troche z innnych jezykow programowania smile.gif dzieki jeszcze raz i pozdrawiam!!!
erix
To może na przyszłość zamień kolejność: NAJPIERW podstawy, dopiero potem kodzisz?
tomekpl
Polecam użycie odczytywanie id użytkownika z GET
strona.pl/message/1
Formatowanie adresu jak kto woli.

Wtedy sprawdzasz
  1. <?php
  2. $id=intval($_GET['id']);
  3. $sql=mysql_query("SELECT id FROM users WHERE id='$id' ");
  4. $ile=mysql_num_rows($sql);
  5.  
  6. if($ile>0){
  7. jest uzytkownik pokaz opcje wysylania, a do pola input gdzie jest nazwa u&#380;ytkownika daj readolny="readonly" i input z hidden z id usera
  8. }else{
  9. brak
  10. }
  11. ?>

Oczywiście pamiętamy o sql injection i strukturach połączenia do bazy i wyświetlania wyników.



Cytat(erix @ 22.07.2009, 18:24:41 ) *
To może na przyszłość zamień kolejność: NAJPIERW podstawy, dopiero potem kodzisz?

A co ty taki książkowy się zrobiłeś? Nie znam, cię, ale po kilku postach można stwierdzić ten fakt. Forum jest po to by pomagać.
MaestroS
Cytat(tomekpl @ 23.07.2009, 04:29:47 ) *
Polecam użycie odczytywanie id użytkownika z GET
strona.pl/message/1
Formatowanie adresu jak kto woli.

Wtedy sprawdzasz
  1. <?php
  2. $id=intval($_GET['id']);
  3. $sql=mysql_query(&#092;"SELECT id FROM users WHERE id='$id' \");
  4. $ile=mysql_num_rows($sql);
  5.  
  6. if($ile>0){
  7. jest uzytkownik pokaz opcje wysylania, a do pola input gdzie jest nazwa u&#380;ytkownika daj readolny=\"readonly\" i input z hidden z id usera
  8. }else{
  9. brak
  10. }
  11. ?>

Oczywiście pamiętamy o sql injection i strukturach połączenia do bazy i wyświetlania wyników.




A co ty taki książkowy się zrobiłeś? Nie znam, cię, ale po kilku postach można stwierdzić ten fakt. Forum jest po to by pomagać.


Wybacz, ale jeżeli czytać o INSERT to czemu nie o SELECT? Jeżeli używać mysql_query() to czemu nie wiedzieć o mysql_num_rows() ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.