Ontvangen en verzender

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patric hoog

patric hoog

12/07/2024 10:39:32
Quote Anchor link
Zelf opgelost!

Voor degenen die in de toekomst hetzelfde probleem tegenkomen: het probleem was dat het script naar de verkeerde tabel in de database keek om te bepalen wie het laatst een bericht stuurde. Het had mt.from_user moeten zijn in plaats van m.form_user.




Hallo iedereen,

Ik ben bezig met een chat script voor mijn website en ik loop tegen het volgende probleem aan. Wanneer iemand een bericht ontvangt, is de tekst dun en degene die het bericht verstuurde heeft dikke tekst. Dit zou juist andersom moeten zijn, maar wanneer ik het probeer om te draaien, doet het script precies het tegenovergestelde.


Heeft iemand een idee wat er fout gaat?

mt.read_from == Verzender heeft het gelezen
mt.read_to == Ontvanger heeft het gelezen

Alvast bedankt!


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
  
<?php
$messages_per_page
= 10;
$page = isset($_GET['paged']) ? (int)$_GET['paged'] : 1;
if ($page < 1) {
    $page = 1;
}

$offset = ($page - 1) * $messages_per_page;

$query = "
SELECT
    m.id,
    m.title,
    m.from_user,
    m.to_user,
    m.datum,
    m.message_id,
    mt.text,
    mt.response_placed,
    mt.read_from,
    mt.read_to,
    mem.username AS last_user
FROM
    messages m
JOIN
    (SELECT
         message_id,
         MAX(response_placed) as latest_response
     FROM
         message_text
     GROUP BY
         message_id) latest_mt
    ON m.message_id = latest_mt.message_id
JOIN
    message_text mt
    ON m.message_id = mt.message_id
    AND mt.response_placed = latest_mt.latest_response
JOIN
    members mem
    ON mem.id = mt.from_user
WHERE
    (m.from_user = ? AND mt.delete_from = 0) OR
    (m.to_user = ? AND mt.delete_to = 0)
ORDER BY
    mt.response_placed DESC
LIMIT ? OFFSET ?"
;

$stmt = $dbcreat->prepare($query);
$stmt->bind_param('iiii', $user_id, $user_id, $messages_per_page, $offset);
$stmt->execute();
$result = $stmt->get_result();

$count_query = "
    SELECT
        COUNT(DISTINCT m.message_id) as total
    FROM
        messages m
    JOIN
        message_text mt ON m.message_id = mt.message_id
    WHERE
        (m.from_user = ? AND mt.delete_from = 0) OR
        (m.to_user = ? AND mt.delete_to = 0)"
;

$count_stmt = $dbcreat->prepare($count_query);
$count_stmt->bind_param('ii', $user_id, $user_id);
$count_stmt->execute();
$count_result = $count_stmt->get_result();
$total_messages = $count_result->fetch_assoc()['total'];
$total_pages = ceil($total_messages / $messages_per_page);

if (!isset($total_pages)) {
    $total_pages = 1;
}

?>


<div class="compact-content-box">
    <?php if ($result->num_rows > 0): ?>
        <ul>
            <?php while ($row = $result->fetch_assoc()): ?>
                <?php
 if (($row['from_user'] == $user_id && $row['read_from'] == 0) || ($row['to_user'] == $user_id && $row['read_to'] == 0)) {
                    $is_bold = true;
                }
else{
                    $is_bold = false;

                }

                ?>

                <li>
                    <div>
                        <a href="?page=view_message&message_id=<?php echo htmlspecialchars($row['message_id']); ?>" style="<?= $is_bold ? 'font-weight: bold;' : '' ?>">
                            <?php echo trim(htmlspecialchars($row['title'])); ?>
                        </a>
                        <div class="note-stats">
                            Last response: <a href="?page=profile&id=<?php echo trim(htmlspecialchars($row['last_user'])); ?>"><?php echo htmlspecialchars($row['last_user']) ?></a> - at: <?php echo htmlspecialchars($row['response_placed']) ?>
                        </div>
                    </div>
                    <div>
                        <form method="post" style="display:inline;">
                            <input type="hidden" name="message_id" value="<?= $row['message_id'] ?>">
                            <button type="submit" name="delete_message">Delete</button>
                        </form>
                    </div>
                </li>
            <?php endwhile; ?>
        </ul>
    </div>

    <div class="content-box">
        <!-- Pagination Links -->
        <div class="pagination">
            <?php if ($page > 1): ?>
                <a href="?page=all_messages&paged=<?= $page - 1 ?>">&laquo; Previous</a>
            <?php endif; ?>

            <?php for ($i = 1; $i <= $total_pages; $i++): ?>
                <a href="?page=all_messages&paged=<?= $i ?>" <?= $i == $page ? 'class="active"' : '' ?>><?= $i ?></a>
            <?php endfor; ?>

            <?php if ($page < $total_pages): ?>
                <a href="?page=all_messages&paged=<?= $page + 1 ?>">Next &raquo;</a>
            <?php endif; ?>
        </div>
    </div>
    <?php else: ?>
        <p>No messages found, <a href="?page=new_message">click here to create a new message</a>.</p>
    <?php endif; ?>
</div>
<?php
} else {
    echo '<p class="compact"><strong>To view this page you have to login first.</strong></p>';
}[
/code]
Gewijzigd op 12/07/2024 10:58:56 door Patric hoog
 
PHP hulp

PHP hulp

21/11/2024 18:00:04
 
Ramon van Dongen

Ramon van Dongen

12/07/2024 16:55:04
Quote Anchor link
Quote:
Het had mt.from_user moeten zijn in plaats van m.form_user.
Misschien de tabelnamen toch gewoon uitschrijven ipv afkorten, dan had je dit eerder gezien ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.