php: 2 fragen

phore
hallo.

ich habe 2 probleme und zwar:

1. ich speichere ein <img> tag in meine mysql datenbank - der pfad etc. stimmt aber beim ausgeben kommt dann nix.. ich mache das mit BBcode:

php:
1:
2:
<?php $replace $text str_replace("[IMG]""<img scr=\""$text);
$replace $text str_replace("[/IMG]""\">"$text); ?>


wenn ich aber dann bei der page bei dem die news ausgegeben wurden im code schaue stimmt alles:

code:
1:
<img scr="bild.jpg">


muss man da noch zusätzlich was machen?

2. du hast mir ja schon bei forumhilfe mit der news / kommentare tabelle geholfen.. wie mach ich das jetzt am besten mit den kommentaren anzeigen? muss ich da mit JOIN arbeiten?

ich lese einfach alles newsbeiträge aus und unter dem beitrag steht jeweils ein link "kommentare(0)". beim klick auf kommentare soll man dann natürlich zu einer seite kommen bei dem es den news eintrag anzeigt und alle kommentare - wie mach ich das am besten?

ich brauche keinen fertigen code keine angst Augenzwinkern - hab einfach kein plan wie man das machen sollte / könnte.



danke und gruss,
phore
GreenRover
Also das mit den BBcode würde ich so machen:
php:
1:
<?php $text preg_replace("#\[img\](http://)?(.*?)\[/img\]#si""<IMG SRC=\"http://\\2\">"$text); ?>


und das mit den Kommentaren, willst du da jeweisl alle kommentare ausgegeben haben oder nur die anzahl?
phore
ok BB code funzt nun danke Augenzwinkern .

das mit dem zusammzählen schaff ich wahrscheinlich noch selber Augenzwinkern
aber ich weiss nicht wie ich das anstellen soll dass wenn man auf "kommentare" klickt dass dann jeweils die passenden (kommentare.beitragzahl = news.id) angezeigt werden (auf einer neuen seite).

ach ja, dann hab ich noch eine frage - ich habe mir gedacht es wär wohl am eifnachsten das editieren / löschen mit <input> tags zu machen da ich ja dann einfach eine if abfrage machen kann:

code:
1:
2:
3:
<form method="post">
<input type="submit" name="action" value="delete">
</form>

php:
1:
<?php if ($action=="delete"?>


wie mach ich das am besten wenn der link "delete" ein textlink sein soll?

so long - phore
GreenRover
poste mal deine select befehl für die news.

und einfach <a href="<?=$_SERVER['PHP_SELF']?>?action=delete">dell</a>
phore
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:
<?
$abfrage "SELECT * FROM news ORDER BY id DESC LIMIT 5";
$ausgabe mysql_query($abfrage);
while($row mysql_fetch_array($ausgabe)) {
?>

<tr>
    <td colspan="2"><strong><? echo($row['datum']); ?> - <? echo($row['titel']); ?></strong></td>
</tr>
<tr>
    <td colspan="2"><? echo($row['text']); ?></td>
</tr>
<tr>
    <td width="200">&nbsp;</td>
    <td width="200" align="right">kommentare (0)</td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td align="right">&nbsp;</td>
</tr>
<tr>
    <td colspan="2"><img src="images/line.gif" width="400" height="2"></td>
</tr>
<tr>
    <td colspan="2" height="10">&nbsp;</td>
</tr>

<?
    ?>
GreenRover
code:
1:
2:
SELECT news.*, COUNT(kommentare.id) AS `kommentar_count` FROM `news`, `kommentare` 
WHERE kommentare.beitrag=news.id GROUP BY news.id ORDER BY news.id DESC LIMIT 5


guck dirm al das an. Das sollte es sein oder habe ich dich jetzt falsch verstnaden? ... muß in eien Zeile
phore
hm - habs jetzt mal ausprobiert:

php:
1:
2:
3:
4:
5:
<?
$abfrage "SELECT news.*, COUNT(kommentare.id) AS `kommentar_count` FROM `news`, `kommentare` WHERE kommentare.beitrag = news.id GROUP BY news.id ORDER BY news.id DESC LIMIT 5";
                    $ausgabe mysql_query($abfrage);
                    while($row mysql_fetch_array($ausgabe)) {
?>


code:
1:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /root.php on line 30



aber irgendwie hab ich das gefühl dass das nicht ganz das ist Augenzwinkern .
www.zeroweb.ch/zwv3/

das ist die seite - und unter jedem news eintrag hats ja "kommentare()" - wenn man da drauf klickt soll ed eine neue seite laden mit den zugehörigen kommentaren.

so long - phore
GreenRover
was soagt mysql_error();
phore
siehe edit - vielleicht meinen wir nicht dasselbe Augenzwinkern
GreenRover
mach mal
code:
1:
$ausgabe = mysql_query($abfrage); echo myslq_error();


um zu gucken was nicht passt.
phore
ok eine spaltenbezeichnung war falsch Augenzwinkern - aber jetzt kommt kein fehler aber es gibt auch nichts aus.. verwirrt
GreenRover
hnmm stimmt, das funktioniert ja nur wenn es kommentare gibt, also dann must du es in eienr extra abfrage machen
phore
das heisst? wäre es nicht am einfachsten wenn ich bei kommentare()
einfach

php:
1:
<a href="<?=$_SERVER['PHP_SELF']?>?action=showcomments">kommtare(<? $count ?>)</a>

machen würde.
dann einfach:

php:
1:
2:
3:
4:
5:
6:
7:
<?php if ($action == "showcomments")

{

SELECT befehl

?>

bzw. wenn das gehen würde wie müsste der SELECT aussehen?
also - wie "weiss" der SELECT befehl welche news.id jetzt gemeint ist?

so long - phore
GreenRover
mach doch einfach noch ein SELECT * FROM kommentar WHER beitrag=''{$row['id']}"

so das du die kommentagre die reckt in der news ausgibts
phore
ich will sie eben nicht direkt ausgeben Augenzwinkern - sondern auf einer seperaten seite..
btw: mit der lösung:
php:
1:
<a href="<?=$_SERVER['PHP_SELF']?>?action=delete">delete</a>


und:

php:
1:
<?php if ($action == "delete") {} ?>

passiert nix - bzw. ich werde wieder auf das index.php weitergeleitet (hab ich mal so eingestellt wenn ein ungültiger link aufgerufen wird)..
muss das "if()" nun anders aussehen?

so long - phore
GreenRover
zim mal deien ganzen kram und poste den DB aufbau.

Ich habe keine hnaung was du da alels für eine müll zusammen geschrieben hast.
phore
aaalso:

ausgeben:
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:
    <table width="400" border="0" cellspacing="0" cellpadding="0">
    <?
        $abfrage "SELECT * FROM news ORDER BY id DESC LIMIT 5";
        $ausgabe mysql_query($abfrage);
        while($row mysql_fetch_array($ausgabe)) {
    ?>
      <tr>
        <td colspan="2"><strong><? echo($row['datum']); ?> - <? echo($row['titel']); ?></strong></td>
      </tr>
      <tr>
        <td colspan="2"><? echo($row['text']); ?></td>
      </tr>
      <tr>
        <td width="200">&nbsp;</td>
        <td width="200" align="right">kommentare (0)</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td align="right">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="2"><img src="images/line.gif" width="400" height="2"></td>
      </tr>
   <tr>
     <td colspan="2" height="10">&nbsp;</td>
   </tr>
    <?
        } 
    ?>
   <tr>
     <td colspan="2" height="10" align="right">&raquo; <em><a href="?show=news">alle News (News archiv)</a></em></td>
   </tr>
    </table>


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

eintragen:
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:
<?
    //eintragen

    if ($action == "speichern") {
        if (!empty($_POST['titel_news'])) {
            $titel_news $_POST['titel_news'];
        }
        if (!empty($_POST['text_news'])) {
            $text_news $_POST['text_news'];
        }
        $text_news preg_replace("#\[img\](http://)?(.*?)\[/img\]#si""<IMG SRC=\"http://\\2\">"$text_news); 
        
        $datum date("d.m.Y");
    
        $SQL_Query_String "INSERT INTO news (titel, text, datum) VALUES ('$titel_news', '$text_news', '$datum')";
        mysql_query($SQL_Query_String);
        echo "Die News sind in der Datenbank gespeichert worden!";

    }

    //löschen
    if ($action == "delete") {
            $SQL_Qerry_String="DELETE FROM news WHERE id = '$news_id'";
            mysql_query($SQL_Qerry_String);
    }
?>


jo und die tabllen:

news
-- id
-- titel
-- text
-- datum

kommentare
-- id
-- beitragnr
-- name
-- text
-- datum


sonst noch was? Augen rollen
so long - phore
GreenRover
code:
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:
<?PHP
    //eintragen

    if ($_REQUEST['action'] == "speichern" && $_POST['titel_news']!="" && $_POST['text_news']!="") {

        $text_news = preg_replace("#\[img\](http://)?(.*?)\[/img\]#si", "<IMG SRC=\"http://\\2\">", $_POST['text_news']);

        mysql_query("INSERT INTO news (titel, text, datum) VALUES ('{$_POST['titel_news']}', '$text_news', NOW())");
        echo "Die News sind in der Datenbank gespeichert worden!";

    }

    //löschen
    if ($_REQUEST['action'] == "delete") 
    {
            mysql_query("DELETE FROM news WHERE id = '$news_id'");
    }
?>
   <table width="400" border="0" cellspacing="0" cellpadding="0">
    <?PHP
        $sql = "SELECT `id`, `title`, `text`, DATE_FORMAT(`datum`, '%d.%m.%Y') AS `datum` FROM `news` ORDER BY `id` DESC LIMIT 5";
        $ausgabe = mysql_query($sql);
        while($row = mysql_fetch_assoc($ausgabe)) {
	list($row['kommentare']=mysql_fetch_row(mysql_query("SELECT COUNT('id') FROM `kommentare` WHERE `beitragnr`='{$row['id']}'"));
    ?>
      <tr>
        <td colspan="2"><b><?=$row['datum'])?> - <?=$row['titel']?></b></td>
      </tr>
      <tr>
        <td colspan="2"><?=$row['text']?></td>
      </tr>
      <tr>
        <td width="200">&nbsp;</td>
        <td width="200" align="right">kommentare (<?=$row['kommentare'])?>)</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td align="right">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="2"><img src="images/line.gif" width="400" height="2"></td>
      </tr>
   <tr>
     <td colspan="2" height="10">&nbsp;</td>
   </tr>
    <?
        } 
    ?>
   <tr>
     <td colspan="2" height="10" align="right">&raquo; <em><a href="?show=news">alle News (News archiv)</a></em></td>
   </tr>
  </table>


@ Z24 must du noch `kommentare falls es so nicht stimmt. Und ob die lösch und eintrage funktion jetzt so stimmen, kann ich nicht sgane da die links fehlen.

Und das datums Fel must du noch auf DATA setzen nicht so wie es jetzt sit auf varchar
phore
yeah danke.
wie vorhergesagt gibt es folgenden fehler:

Zitat:
Parse error: parse error, unexpected '=', expecting ',' or ')' in /home/zeroweb/public_html/zwv3/news.php on line 111


hab auch mit `` probiert..
ist da was zuviel?
so long - phore
GreenRover
Aber was sit zeile 111? du hast mir nichts mit soo vielen Zeilen gepostet.

Postem al z 100-120 und makieren die 111