Personal Messages

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 22 Νοέμ 2008 12:51

Μπορει καποιος να εξηγησει τη λειτουργια των PM 's ;

Εχω στο μυαλο μου καποια πραγματακια , σχετικα με το
"Καλως ηρθατε χρηστη ΤΑΔΕ , εχετε 3432 μυνηματα " , και πως θα ενημερωνεται
ο αριθμος των PM 's , αλλα δεν εχω ιδεα σχετικα με την λογικη του
" να σταλει κειμενο απο ενα χρηστη , σε εναν αλλο "

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Personal Messages

Δημοσίευση από dimsis » 22 Νοέμ 2008 12:55

Φτιάξε φόρμες όπως αυτές που βλέπεις όταν στέλνεις μήνυμα μέσα από κάποιο web mail ή κάποιου mail client, και για κάθε πεδίο της φόρμας να έχεις ένα αντίστοιχο πεδίο στην βάση δεδομένων σου, όπου καταγράφονται... που κολάς;

Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 22 Νοέμ 2008 13:01

Ειχα καποιες αποριες στο ΠΩΣ θα διαβαζει ο χρηστης , που θα λαβει το ΠΜ ,
αλλα κατι καταλαβα τωρα...

Μην παρεξηγεις , ειναι η πρωτη αποπειρα δημιουργιας ενος site ( πτυχιακη )

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Personal Messages

Δημοσίευση από dimsis » 22 Νοέμ 2008 14:24

Μια πολύ απλή μορφή θα μπορούσε να ήταν:
Έχεις κάποια μοναδικά πεδία κλειδιά για κάθε user.
Οπότε στον πίνακα των μηνυμάτων (εξερχομένων - εισερχομένων) βάλε το id του αποστολέα και του παραλήπτη. Βάλε και ένα πεδίο αν αναγνώστηκε ή όχι το μήνυμα. (ακόμα και bit μπορεί να κάνει δουλειά) και ασφαλώς ημερομηνίες αποστολής - λήψης.
Όταν κάνει login ο χρήστης (π.χ. ο παραλήπτης) κρατάς σε μια session μεταβλητή το ID του και έπειτα τραβάς ένα query από τον πίνακα αλληλογραφίας, όπου ζητάς τα νέα μηνύματα του ID του χρήστη που δεν έχουν αναγνωστεί και έπειτα τα εμφανίζεις.
Αντίστοιχα για να στείλεις μήνυμα, του βάζεις ένα κουμπί αποστολή μηνύματος που οδηγεί σε φόρμα, με Προς, Θέμα και Κείμενο (τα εντελώς βασικά γράφω) και αυτή η φόρμα όταν γίνει submit γράφει (insert) στον πίνακα αλληλογραφίας το ID του αποστολέα που το έχεις σε Session μεταβλητή, τραβάς και ένα query για να συσχετίσεις το ID με το όνομα ή ονόματα χρήστη/ων που έγραψε στο ΠΡΟΣ και τα καταχωρείς...

Το "Καλως ηρθατε χρηστη ΤΑΔΕ , εχετε 3432 μυνηματα " βγαίνει επίσης τραβώντας ένα ερώτημα στη βάση σου, όπου ζητάς για τον login user τα νέα αδιάβαστα μηνύματα ή το σύνολο τους, αναλόγως τι θέλεις να πάρεις. Κατά τα άλλα βάλε και μια λίστα εισερχομένων - εξερχομένων - απεσταλμένων που πάλι απλά queries στον πίνακα αλληλογραφίας είναι και είσαι ΟΚ.

Αυτά ως απλή μεθοδολογία πάντα...

Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 22 Νοέμ 2008 14:54

Αναλυτικοτατος... ;)

Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 17 Δεκ 2008 16:44

Μπορει καποιος να μ εξηγησει γιατι ο παρακατω κωδικας δεν λειτουργει ;

Κώδικας: Επιλογή όλων

$uid = $_SESSION['UserID'];
 $receivequery=mysql_query("SELECT * FROM messages WHERE ReceiverID='$uid'  AND Read='Unread' ") or die(mysql_error());
To προβλημα εστιαζεται στο

Κώδικας: Επιλογή όλων

Read='Unread'
,
ενω στο πινακα εχω πεδιο Read , που μπορει να παρει μονο τις τιμες Read,Unread...

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Personal Messages

Δημοσίευση από Apostolis_38 » 17 Δεκ 2008 19:00

Δοκίμασε το

Κώδικας: Επιλογή όλων

Read=" '%Unread%' "
και δες αν θα σου φέρει εγγραφές.
Αν ναί, τότε το πρόβλημα είναι οτι δεν κάνει match τους χαρακτήρες Unread.

Αν και δεν έχω την τρελλή εμπειρία στην php θα σου προτείνω κάτι, επειδή κι εγώ αντιμετωπίζω μερικές φορές προβλήματα όταν προσπαθώ να "τραβήξω" εγγραφές που βασίζονται σε κείμενο (ένα κενό ή λάθος χαρακτήρας είναι αρκετό στο να μην φέρνει αποτελέσματα το query).
Οταν ορίζεις ένα πεδίο να παίρνει "yes" or "no" τιμές προτίμησε να δουλεύεις με νούμερα (π.χ. 0 και 1) αντί για χαρακτήρες. Με τους αριθμούς ποτέ δεν υπάρχει πρόβλημα.
Αυτή είναι η άποψη μου.

Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 17 Δεκ 2008 19:34

Αν και εχω αλλαξει τα ερωτηματα μου που βασιζονται σε αυτο σε :
α)

Κώδικας: Επιλογή όλων

$query = " SELECT * FROM messages  WHERE ReceiverID='$uid'  AND Read='0' LIMIT ".$offset.",".$rowsPerPage;
και

β)

Κώδικας: Επιλογή όλων

$query2   = "SELECT COUNT(*) AS numrows FROM messages WHERE ReceiverID='$uid' AND Read='0'  ";
παλι "Query failed" , αν και πλεον εβαλα το πεδιο Read να δεχεται 0/1.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Personal Messages

Δημοσίευση από korgr » 17 Δεκ 2008 20:43

Δεν μας δίνεις και μια εικόνα του table σου; (σε sql)
Μήπως κάποιο πεδίο το έχεις γραμμένο διαφορετικά από το πως το χρησιμοποιείς στο query.
Αν δεν έχουμε το table σου μόνο εικασίες μπορούμε να κάνουμε..

Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 18 Δεκ 2008 01:31

Οριστε και ο πινακας...

Κώδικας: Επιλογή όλων

CREATE TABLE `messages` (
  `mesID` int(25) NOT NULL auto_increment,
  `JourneyID` int(25) NOT NULL,
  `SenderID` int(25) NOT NULL,
  `ReceiverID` int(25) NOT NULL,
  `Title` varchar(25) NOT NULL,
  `MessageText` varchar(150) NOT NULL,
  `Read` set('0','1') NOT NULL,
  `Date` date NOT NULL,
  `Time` time NOT NULL,
  `Type` set('PM','Comment') NOT NULL,
  PRIMARY KEY  (`mesID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

Βλεπετε κατι που δεν μπορω να δω ; :think:


Υ.Γ. To fail γινεται παντα οταν ανακαταευω στον κωδικα το πεδιο Read...

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Personal Messages

Δημοσίευση από fafos » 18 Δεκ 2008 02:03

Sou exo ksanapei nomizo na xrhsimopoieis to "anapodo autaki" ( ``aristera sto plhktrologio dipla sto 1) giati yparxoun kapoies koines lekseis pou "spane" to query:

Κώδικας: Επιλογή όλων

$query = " SELECT * FROM messages  WHERE `ReceiverID`='$uid'  AND `Read`='0' LIMIT $offset, $rowsPerPage";

Κώδικας: Επιλογή όλων

$query2   = "SELECT COUNT(*) AS `numrows` FROM messages WHERE `ReceiverID`='$uid' AND `Read`='0'  ";

Reserved Words:
http://dev.mysql.com/doc/refman/5.1/en/ ... words.html

Άβαταρ μέλους
loxy
Δημοσιεύσεις: 208
Εγγραφή: 17 Ιούλ 2007 01:18

Personal Messages

Δημοσίευση από loxy » 18 Δεκ 2008 02:38

Σωστος ,fafos
Χρησιμοποιησα τα αναποδα αυτακια, αλλα μονο στην περιπτωση του "value" ...

:oops:

[Τοση ωρα μπροστα απο κωδικα (οχι περιπλοκο ,για τους επαγγελματιες ), το λαθος μπορει να ειναι μπροστα στα ματια σου και να μην το βλεπεις.
Αυτο ,ομως, μαλλον ειναι μια αλλη συζητηση...]

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Personal Messages

Δημοσίευση από fafos » 18 Δεκ 2008 02:47

kai ego exo faei kollhmata.. aplos pas mia volta sthn veranta, kaneis ena tsigaro kai to vriskeis.. :D

mia fora eixa faei ena kollhma opou mou petage error gia mia teleia ston kodika.. ego omos evlepa oti ola htan entaksei kai den eleipe kammia teleia!! telika to problhma htan oti h teleia pou evlepa ego ston kodika htan enas kokos skonhs sthn othoni kai sthn pragmatikothta eixa ksexasei na thn valo.. 8)

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Personal Messages

Δημοσίευση από korgr » 18 Δεκ 2008 08:48

fafos έγραψε:
mia fora eixa faei ena kollhma opou mou petage error gia mia teleia ston kodika.. ego omos evlepa oti ola htan entaksei kai den eleipe kammia teleia!! telika to problhma htan oti h teleia pou evlepa ego ston kodika htan enas kokos skonhs sthn othoni kai sthn pragmatikothta eixa ksexasei na thn valo.. 8)
Για αυτές τις περιπτώσεις fafos καλό είναι να χρησιμοποιούμε καλού κακού την turnDustToDot(); :lol:
Χωρίς πλάκα είναι απίστευτο από που μπορεί να σου έρθει κόλημα και να ψάχνεσαι άπειρες ώρες...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Personal Messages

Δημοσίευση από Banavas » 18 Δεκ 2008 10:29

Αντίστοιχα για να στείλεις μήνυμα, του βάζεις ένα κουμπί αποστολή μηνύματος που οδηγεί σε φόρμα, με Προς, Θέμα και Κείμενο (τα εντελώς βασικά γράφω) και αυτή η φόρμα όταν γίνει submit γράφει (insert) στον πίνακα αλληλογραφίας το ID του αποστολέα που το έχεις σε Session μεταβλητή, τραβάς και ένα query για να συσχετίσεις το ID με το όνομα ή ονόματα χρήστη/ων που έγραψε στο ΠΡΟΣ και τα καταχωρείς...
Εδώ θέλει λίγο προσοχή. Θα ήταν καλύτερα να επιλέγει τον παραλήπτη από ένα drop - down menu box ή κάποιο άλλο τρόπο που να διασφαλίζει οτι ο παραλήπτης είναι υπαρκτός και σωστά επιλεγμένος. Αν γράφει ο χρήστης ένα όνομα στο Προς έχει πολλές πιθανότητες να μην το γράψει ακριβώς (πεζά - κεφαλαία, Ελληνικά - Αγγλικά, με κενά κλπ) οπότε το query στην βάση να μην βρίσκει τον συσχετιζόμενο παραλήπτη και το μήνυμα να παραμένει μεταίωρο (σαν το βήμα του πελαργού :wink: )
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες