[PHP] Na reactie gaat plaatje weg

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een nieuwssysteem waarbij je een foto kunt selecteren uit een meerkeuzelijst. Die foto's leest die gewoon uit een map. Dan slaat die de bestandsnaam op in de db en hoef ik hem alleen maar te echo-en met [img]"pics/<?php[/img]">

Dit werkt allemaal naar behoren, maar ik heb ook een reactiefunctie. Dus je kan op het nieuwsbericht reageren. Als dit echter gebeurt krijg ik bij het plaatje een kruisje te zien, dat die het plaatje niet meer kan vinden. En dat terwijl ik dacht dat dat er helemaal los van stond.

In ieder geval heb ik hier mn nieuwsscript:

PHP:
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<table width="800"  border="0" cellspacing="0" cellpadding="0"> 
  <tr> 
    <td bgcolor="333333" colspan="4">[img]"header_test3.jpg"[/img]</td> 
  </tr> 
  <tr> 
    <td bgcolor="000000" class="style35" border="1">&nbsp;</td> 
  </tr> 
</table> 
<? 
require("database.php"); 

function maand($counter) 
{ 
    if ($counter == 1) 
    $count = "Januari"; 
    elseif ($counter == 2) 
    $count = "Februari"; 
    elseif ($counter == 3) 
    $count = "Maart"; 
    elseif ($counter == 4) 
    $count = "April"; 
    elseif ($counter == 5) 
    $count = "Mei"; 
    elseif ($counter == 6) 
    $count = "Juni"; 
    elseif ($counter == 7) 
    $count = "Juli"; 
    elseif ($counter == 8) 
    $count = "Augustus"; 
    elseif ($counter == 9) 
    $count = "September"; 
    elseif ($counter == 10) 
    $count = "Oktober"; 
    elseif ($counter == 11) 
    $count = "November"; 
    elseif ($counter == 12) 
    $count = "December"; 

    return $count; 
} 

if (!$_GET['id'] && !$_POST['id']) 
{ 
    $counter = 1; 
    while($counter <= 12) 
    { 
        if ($counter == 1) 
        $counter = "0" . $counter; 

        $sql = "SELECT id,titel,pic,datum,substring(datum, 7, 4) as year FROM nieuws WHERE SUBSTRING(datum, 4, 2) = ".$counter." order by id DESC,year DESC"; 
        $res = mysql_query($sql); 

        if (mysql_num_rows($res) >= 1) 
        { 
            $year = $row['year']; 
            $berichten = mysql_num_rows($res); 
            $month = maand($counter); 
            if ($berichten == 1){ 
                $nieuwbericht="<b>".$month." ".$year."</b> (".$berichten." bericht)"; 
            }else{ 
                $nieuwbericht="<b>".$month." ".$year."</b> (".$berichten." berichten)"; 
            } 
            $nieuwbericht.="<blockquote><span class=\"style35\">"; 

            while ($row = mysql_fetch_array($res)) 
            { 
                $sql2 = "select id from reacties where tid = '".$row['id']."'"; 
                $res2 = mysql_query($sql2); 
                $count = mysql_num_rows($res2); 
                $nieuwbericht.="[".$row['datum']."] <a class=\"style35\" href=".$_SERVER['PHP_SELF']."?id=".$row['id'].">".$row['titel']."</a> (".$count.")<br>"; 
            } 
            $nieuwbericht.="</blockquote></span>"; 
        } 
        else 
        { 
            if ($counter <= 12) 
            { 
                $length = strlen(maand($counter)) - 1; 
                $month = strtoupper(substr(maand($counter), 0, -$length)) . substr(maand($counter), 1); 
                if ($counter == 11) 
                $months .= $month." en "; 
                elseif ($counter == 12) 
                $months .= $month; 
                else 
                $months .= $month.", "; 
            } 
            if ($counter == 12) 
            { 
                if (strlen($months) <= 8) 
                $nieuwbericht.="<span class='style36'>Er zijn (nog) geen nieuwsberichten van de maand: ".$months.".</span>"; 
                else 
                $nieuwbericht.="<span class='style36'>Er zijn (nog) geen nieuwsberichten van de maanden: ".$months.".</span>"; 
            } 
        } 
        $counter++; 
    } 
} 
else 
{ 
    if ($_POST['submit'] && $_POST['naam'] && $_POST['msg']) 
    { 
        $datum = date('d.m.Y H:i'); 

        $sql = "INSERT INTO reacties (id, naam, titel, msg, datum, ipadres, tid) VALUES "; 
        $sql .= "('', '".$_POST['naam']."', '".$_POST['titel']."', '".$_POST['msg']."', '".$datum."', '".$_SERVER['REMOTE_ADDR']."', '".$_GET['id']."')"; 
        $res = mysql_query($sql); 

        if ($res) 
        $nieuwbericht.="<SCRIPT LANGUAGE='javascript' TYPE='text/javascript'>window.location='".$_SERVER['PHP_SELF']."?id=".$_GET['id']."'</SCRIPT>\n"; 
        else 
        $nieuwbericht.="Reactie niet toegevoegd."; 
    } 
    else 
    { 
        $sql = "SELECT id,titel,msg,pic,datum FROM nieuws WHERE id = '".$_GET['id']."'"; 
        $res = mysql_query($sql); 

        $nieuwbericht.="<br>"; 

        if (mysql_num_rows($res) >= 1) 
        { 
            $row = mysql_fetch_array($res); 
            $hiddentitel = $row['titel']; 

            $nieuwbericht.="<span class='style25'>".$row['titel']."</span><p>"; 

            $row['msg'] = nl2br($row['msg']); 
            $nieuwbericht.=$row['msg']."<p>"; 

            $nieuwbericht.="<hr color='#000000'><p>"; 

            $sql = "SELECT id,naam,titel,msg,datum FROM reacties WHERE tid = '".$_GET['id']."' ORDER BY id DESC"; 
            $res = mysql_query($sql); 

            $nieuwbericht.="<a name='reacties'><table border='0' cellspacing='0' cellpadding='0' bordercolor='#CFC9B4' width='100%'><tr><td>"; 
            $nieuwbericht.="<table border=0 cellspacing=0 cellpadding=5 width='100%'></a>"; 

            if (mysql_num_rows($res) >= 1) 
            { 
                while ($row = mysql_fetch_array($res)) 
                { 
                    $nieuwbericht.="<tr><td class='style35' bgcolor='#e8e8e8'><b>".$row['naam']."</b> [".$row['datum']."]</td></tr>"; 
                    $nieuwbericht.="<tr><td class='style35' bgcolor='#e8e8e8'>".nl2br($row['msg'])."</td></tr>"; 
                } 
            } 
            else 
            { 
                $nieuwbericht.="<tr><td bgcolor='#e8e8e8' class='style35'><b>Er zijn nog geen reacties op dit bericht</b></td></tr>"; 
            } 

            $nieuwbericht.="</td></tr></table></table><p>"; 

            $nieuwbericht.="<form method='post' action='".$_SERVER['PHP_SELF']."?id=".$_GET['id']."'>"; 
            $nieuwbericht.="<input type='hidden' name='titel' value='".$hiddentitel."'>"; 
            $nieuwbericht.="<table border='0' cellspacing='0' cellpadding='5' bgcolor='#e8e8e8' bordercolor='#CFC9B4' width='100%'>"; 
            $nieuwbericht.="<tr><td><table border=0 cellspacing=0 cellpadding=0 bgcolor='#e8e8e8'>"; 
            $nieuwbericht.="<tr><td width='60' valign='top' class='style35'>Naam</td><td><input type='text' class='' name='naam'>"; 
            $nieuwbericht.="<tr><td width='60' valign='top' class='style35'>Bericht</td><td><textarea class='style35' name='msg' rows='5' cols='40'></textarea><br>"; 
            $nieuwbericht.="<tr><td width='60'>&nbsp;</td><td><input type='submit' name='submit' class='style35' value='Reageer'>"; 
            $nieuwbericht.="</table></td></tr>"; 
            $nieuwbericht.="</table>"; 
            $nieuwbericht.="</form>"; 
        } 
        else 
        { 
            $nieuwbericht.="Nieuws bericht niet gevonden."; 
        } 
        $nieuwbericht.="<table><tr><td class=\"style58\"><a href='".$_SERVER['PHP_SELF']."' target='mainFrame'>Overzicht</a></td></tr></table"; 
    } 
} 
?> 
<table cellpadding="0" cellspacing="0"> 
  <tr> 
    <td bgcolor="333333" width="154" height="786" align="left" valign="top" cellspacing="0" cellpadding="0"> 
        [img]"pics/<?php[/img]" width="154" border="1" bordercolor="000000"> 
    </td> 
    <td width="9" height="786" align="left" valign="top"></td> 
    <td width="538" align="left" valign="top" bgcolor="#EFEFEF" class="style36"><?php echo $nieuwbericht ?></td> 
    <td width="99" align="left" valign="middle" bgcolor="#EFEFEF">&nbsp;</td> 
  </tr> 
</table>


---------------------------------------------------------------------------

Het gaat me dus even helemaal om het einde.

[img]"pics/<?php[/img]" width="154" border="1" bordercolor="000000">

Hier gaat die de mist in, maar heeft een van julile een idee?

Voorbeeld is te zien op http://mattie.homeip.net/sites/test1/
Als je op een nieuwsitem klikt, kun je het nader bekijken.


Alvast Bedankt!

[ Voor 27% gewijzigd door Verwijderd op 26-09-2004 23:59 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

In je niet werkende plaatjes wordt er geen filenaam toegevoegd aan de URL http://mattie.homeip.net/sites/test1/pics/, dus dat is het probleem. $row['pic'] is dus niet gevuld. Hoe dat komt? Geen idee, ik ga niet jouw code debuggen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jawel, dat krijgt die wel... het probleem alleen is als er een reactie geplaatst is. Dan lijkt het alsof die $row[pic] ineens leeg is. Dit staat er toch helemaal los van op het eind? Kijk ik zal wel een nieuw berichten met foto's erbij maken. Dan kunnen jullie reageren en kijken waar het fout loop

http://mattie.homeip.net/sites/test1/

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die echo van $row['pic'] staat sowieso op een heel vreemde plaats. Je fetcht de data in een if block, en drukt die variabele af buiten dat block, waar die variabele dus mogelijk helemaal niet geset is. Wat nu dus blijkbaar blijkt. Je kan waarschijnlijk beter een andere manier van afdrukken zoeken (hulpvariabele voor opslag van de waarde van $row['pic'] bijvoorbeeld, en dan alleen als die var niet leeg is, een pic afdrukken).

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op 26 september 2004 @ 23:58:
Het gaat me dus even helemaal om het einde.
Tjezus geef aub dan alleen die code, denk je nu echt dat iedereen hier voor de lol 180 regels code gaat debuggen voor jou? :/

Dat je een probleem hebt okee, maar isoleer dan aub in ieder geval alvast het probleem voor ons en geef aan dat je door zelf te debuggen tot 10 regels terug bent gekomen :)

* curry684 wacht op de edit tot een menselijke startpost :)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wat zeg je me nu allemaal..?

Als ik jou het laatste regeltje gaf heb jij toch geen enkel inzicht in wat ik bedoel en wat ik wil bereiken? :/

Laat ik het zo zeggen, het bestaat uit 3 blokken. Een waarmee alle nieuwsitems weergegeven worden. 2e is het nieuwsbericht zelf. (Na je op een link geklikt te hebben, laat die het nieuwsbericht zien van het bijbehorende id) en het 3e (waar het om gaat ) stuk is dus het gedeelte waar je reacties kunt geven. Die komen dan direct onder het nieuwsbericht te staan...

Laat ik iets gemakkelijekr maken dan.. Het gaat dus zo'n beetje om regel 129 t/m 190 ... Want wat ervoor staat voert die simpelweg WEL goed uit...

[ Voor 185% gewijzigd door Verwijderd op 27-09-2004 00:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet het al, maar nu begint het meer op een script request te lijken.

Hij voert die echo van $nieubericht uit NA dat die variabele $row[pic] gezet is...


Is er een of andere manier om die waarde op te slaan en NA die echo van $nieuwbericht te "setten"?


Nu zeg ik het precies andersom.... IK SNAP ER HELEMAAL NIKS MEER VAN :/

[ Voor 16% gewijzigd door Verwijderd op 27-09-2004 01:25 . Reden: OMDAT IK ECHT OFFICIEEL GEWOON ACHTERLIJKBEN!!! ]


Acties:
  • 0 Henk 'm!

Verwijderd

Edit: Zit ik gewoon te antwoorden terwijl die zelf al zei dat ie het antwoord had..... 8)7 8)7 8)7

Doordat hij in dit stukje code elke keer de row doorloopt en een reactie plaatst probeert hij elke keer "row['pic']" op te halen terwijl het database vakje leeg is:
PHP:
1
2
3
4
5
6
7
8
if (mysql_num_rows($res) >= 1) 
            { 
                while ($row = mysql_fetch_array($res)) 
                { 
                    $nieuwbericht.="<tr><td class='style35' bgcolor='#e8e8e8'><b>".$row['naam']."</b> [".$row['datum']."]</td></tr>"; 
                    $nieuwbericht.="<tr><td class='style35' bgcolor='#e8e8e8'>".nl2br($row['msg'])."</td></tr>"; 
                } 
            }


Dus probeer eens het volgende stukje aan te passen met een extra variabele:
(regel 50 - 54)


PHP:
1
2
3
4
5
6
7
$sql = "SELECT id,titel,msg,pic,datum FROM nieuws WHERE id = '".$_GET['id']."'"; 
        $res = mysql_query($sql); 

        $nieuwbericht.="<br>"; 

        if (mysql_num_rows($res) >= 1) 
        {


(bijv)
PHP:
1
2
3
4
5
6
7
$sql = "SELECT id,titel,msg,pic,datum FROM nieuws WHERE id = '".$_GET['id']."'"; 
        $res = mysql_query($sql); 

        $nieuwbericht.="<br>"; 

        if (mysql_num_rows($res) >= 1) 
        { $pic = $row['pic'];


en verander de plek waar hij het plaatje plaatst naar:

PHP:
1
<?php echo $pic; ?>

[ Voor 78% gewijzigd door Verwijderd op 27-09-2004 16:49 ]

Pagina: 1