ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » [Last News] Problem mit einer Abfrage

Geschlossen
  1. #1
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Hallo,

    ich wollte gerne einige Inhalte in meiner Last News Box abfragen. Leider bin ich ein ziemlicher PHP/Mysql Noob und mache da einen Fehler.

    Zu allererst möchte ich das Datum abfragen. Welches ich so abfrage:

    $abf = 'SELECT a.news_time
            FROM prefix_news
    		WHERE (((' . pow(2, abs($_SESSION['authright'])) . " | news_recht) = news_recht) OR
    			(news_groups != 0 AND ((news_groups ^ $news_groups) != (news_groups | $news_groups)))) AND `show` > 0 AND `show` <= UNIX_TIMESTAMP() AND news_id != '.$tn_id.' AND archiv != 1 AND (endtime IS NULL OR endtime > UNIX_TIMESTAMP())
                  ORDER BY news_time DESC
    		LIMIT 0,5";


    Worin besteht denn da der Fehler? Er sagt mir das es news_time gar nicht gibt in der Tabelle news. Aber sie existiert doch? o.O

    Welchen Fehler begehe ich hier?

    Vielen Dank im Voraus lächeln


    Zuletzt modifiziert von Ra- am 09.03.2013 - 13:36:13
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Ich habe es nun selber gelöst bekommen. Problem jetzt ist folgende:

    Ich möchte auch noch die Anzahl der Kommentare anzeigen lassen. Wie geht das?
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    $koms = @db_result(db_query('SELECT COUNT(id) FROM prefix_koms'),0);


    Ich habe mal etwas versucht und oben genannten Code verwendet, allerdings zählt er damit ja nur die Overall Kommentare. Wie baue ich das so das er nur die Kommentare der jeweiligen News zählt?
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Ich hab dies bei mir so bzw glaub es ist so Standard?
    'ANZAHL' => db_count_query("SELECT COUNT(uid) FROM prefix_koms WHERE uid = " . $nid . " AND cat = 'NEWS'"),



    Zuletzt modifiziert von Siggi am 09.03.2013 - 17:26:28
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Öhm entweder funktioniert der Code nicht, oder es ist nur halb vorhanden. Jedenfalls wirft er mir einen sql Fehler aus :/
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Habs oben geupdatet aber dies sollte normal mit im Standard code sein.
    mairu.ilch.de/index.php?news-41

    dies liegt in ein array
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Hab hier mal den kompletten Code der include/boxes/lastnews.php

    als Variable habe ich $koms angegeben, fehlt nur noch der Inhalt der Variable was mit dem Codeschnipsel nicht so richtig funktionieren mag :/

    <?php
    #   Copyright by Manuel Staechele
    #   Support www.ilch.de
    #   Modded by Mairu für News Extended
    
    defined ('main') or die ( 'no direct access' );
    
    $umbruch = 80; # Laenge des Newstitel
    $news_groups = 0;
    
    $news_groups = 0;
    foreach ($_SESSION['authgrp'] as $id => $bool){
    	$news_groups = $news_groups | pow(2, $id);
    }
    
    
    $tn_id = intval(@db_result($news_opts = db_query("SELECT v1, v2 FROM prefix_allg WHERE k = 'news' LIMIT 1"),0,0));
    $abf = 'SELECT *, DATE_FORMAT(`news_time`,"%d.%m.%Y") AS `newtime`,`news_text` AS `text`, `user_id` AS `newsautor`
            FROM prefix_news
    		WHERE (((' . pow(2, abs($_SESSION['authright'])) . " | news_recht) = news_recht) OR
    			(news_groups != 0 AND ((news_groups ^ $news_groups) != (news_groups | $news_groups)))) AND `show` > 0 AND `show` <= UNIX_TIMESTAMP() AND news_id != '.$tn_id.' AND archiv != 1 AND (endtime IS NULL OR endtime > UNIX_TIMESTAMP())
                  ORDER BY news_time DESC
    		LIMIT 0,5";
    $erg = db_query($abf);
    echo '<div class="redline"></div>
           <h2>MORE NEWS
            <a class="buttons" href="" style="padding: 7px 15px 6px 15px;"><img src="include/designs/team-zodiacx_v2/img/right-arrow.png" /></a>
            <a class="buttons" href="" style="padding: 7px 15px 6px 15px;"><img src="include/designs/team-zodiacx_v2/img/left-arrow.png" /></a>
            <a class="buttons" href="index.php?search">Suchen</a><a class="buttons" href="index.php?news-archiv">Archiv</a>
           </h2>';
    while ($row = db_fetch_object($erg)) {
    	if (strlen($row->news_text)>$umbruch) {$newstext = substr($row->news_text,0,($umbruch-3))."...";} ELSE {$newstext = $row->news_text;}
    echo '<div class="shortnews" style="margin-top: 27px;">
                <h3><a href="index.php?news-'.$row->news_id.'">'.$row->news_title.'</a><span>'.$row->newtime.' | verfasst von <a href="">'.$row->newsautor.'</a></span></h3>
                <a class="comments" href="">'.$koms.' Kommentare</a>'.$newstext.'
              </div>';
    }
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Ich brauche diese Hilfe leider dringend :/
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Probiere es mal damit

    <?php
    #   Copyright by Manuel Staechele
    #   Support www.ilch.de
    #   Modded by Mairu für News Extended
     
    defined ('main') or die ( 'no direct access' );
     
    $umbruch = 80; # Laenge des Newstitel
    $news_groups = 0;
     
    $news_groups = 0;
    foreach ($_SESSION['authgrp'] as $id => $bool){
        $news_groups = $news_groups | pow(2, $id);
    }
     
     
    $tn_id = intval(@db_result($news_opts = db_query("SELECT v1, v2 FROM prefix_allg WHERE k = 'news' LIMIT 1"),0,0));
    $abf = 'SELECT *, DATE_FORMAT(`news_time`,"%d.%m.%Y") AS `newtime`,`news_text` AS `text`, `user_id` AS `newsautor`
            FROM prefix_news
            WHERE (((' . pow(2, abs($_SESSION['authright'])) . " | news_recht) = news_recht) OR
                (news_groups != 0 AND ((news_groups ^ $news_groups) != (news_groups | $news_groups)))) AND `show` > 0 AND `show` <= UNIX_TIMESTAMP() AND news_id != '.$tn_id.' AND archiv != 1 AND (endtime IS NULL OR endtime > UNIX_TIMESTAMP())
                  ORDER BY news_time DESC
            LIMIT 0,5";
    $erg = db_query($abf);
    echo '<div class="redline"></div>
           <h2>MORE NEWS
            <a class="buttons" href="" style="padding: 7px 15px 6px 15px;"><img src="include/designs/team-zodiacx_v2/img/right-arrow.png" /></a>
            <a class="buttons" href="" style="padding: 7px 15px 6px 15px;"><img src="include/designs/team-zodiacx_v2/img/left-arrow.png" /></a>
            <a class="buttons" href="index.php?search">Suchen</a><a class="buttons" href="index.php?news-archiv">Archiv</a>
           </h2>';
    while ($row = db_fetch_object($erg)) {
           $koms = db_count_query("SELECT COUNT(uid) FROM prefix_koms WHERE uid = ".$row->news_id." AND cat = 'NEWS'");
        if (strlen($row->news_text)>$umbruch) {$newstext = substr($row->news_text,0,($umbruch-3))."...";} ELSE {$newstext = $row->news_text;}
    echo '<div class="shortnews" style="margin-top: 27px;">
                <h3><a href="index.php?news-'.$row->news_id.'">'.$row->news_title.'</a><span>'.$row->newtime.' | verfasst von <a href="">'.$row->newsautor.'</a></span></h3>
                <a class="comments" href="">'.$koms.' Kommentare</a>'.$newstext.'
              </div>';
    }
    1 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Verdammt fast hatte ich es auch so ich bin nur in der Zeile verrutscht und habs in die if abfrage mit rein gepackt :/

    Klasse vielen Dank lächeln Nun habe ich leider noch 1 offene Frage:

    Ich kann in der besagten Datei die user ID des verfassers auslesen, allerdings gibt er mir nur die ID und nicht den Namen aus. Da ich glaube das ich da irgendwie noch auf eine andere Tabelle zugreifen muss ist dies wiederum eine große Herausforderung :/
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    also da gibt es zwei möglichkeiten

    entweder du machst noch ein select

    select username from prefix_users where id = die abgefragte id

    oder du machst ein left join was natürlich schöner wäre
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    an ein LEFT JOIN hatte ich auch eher gedacht aber wie da der Aufbau ist weiß ich nun nicht so genau.

    ich weiß zumindest das es
    LEFT JOIN prefix_user
    ist lachen
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    LEFT JOIN prefix_user ON user.id = user.name AS `newsautor`


    So in etwa? Also es funktioniert nicht aber ich hab guten Willen gezeigt :/
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    zwinker

    Versuchs mal so?
    <?php
    #   Copyright by Manuel Staechele
    #   Support www.ilch.de
    #   Modded by Mairu für News Extended
      
    defined ('main') or die ( 'no direct access' );
      
    $umbruch = 80; # Laenge des Newstitel
    $news_groups = 0;
      
    $news_groups = 0;
    foreach ($_SESSION['authgrp'] as $id => $bool){
        $news_groups = $news_groups | pow(2, $id);
    }
      
      
    $tn_id = intval(@db_result($news_opts = db_query("SELECT v1, v2 FROM prefix_allg WHERE k = 'news' LIMIT 1"),0,0));
    $abf = 'SELECT *, DATE_FORMAT(`news_time`,"%d.%m.%Y") AS `newtime`,`news_text` AS `text` FROM prefix_news
            LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
            WHERE (((' . pow(2, abs($_SESSION['authright'])) . " | news_recht) = news_recht) OR
                (news_groups != 0 AND ((news_groups ^ $news_groups) != (news_groups | $news_groups)))) AND `show` > 0 AND `show` <= UNIX_TIMESTAMP() AND news_id != '.$tn_id.' AND archiv != 1 AND (endtime IS NULL OR endtime > UNIX_TIMESTAMP())
                  ORDER BY news_time DESC
            LIMIT 0,5";
    $erg = db_query($abf);
    echo '<div class="redline"></div>
           <h2>MORE NEWS
            <a class="buttons" href="" style="padding: 7px 15px 6px 15px;"><img src="include/designs/team-zodiacx_v2/img/right-arrow.png" /></a>
            <a class="buttons" href="" style="padding: 7px 15px 6px 15px;"><img src="include/designs/team-zodiacx_v2/img/left-arrow.png" /></a>
            <a class="buttons" href="index.php?search">Suchen</a><a class="buttons" href="index.php?news-archiv">Archiv</a>
           </h2>';
    while ($row = db_fetch_object($erg)) {
           $koms = db_count_query("SELECT COUNT(uid) FROM prefix_koms WHERE uid = ".$row->news_id." AND cat = 'NEWS'");
        if (strlen($row->news_text)>$umbruch) {$newstext = substr($row->news_text,0,($umbruch-3))."...";} ELSE {$newstext = $row->news_text;}
    echo '<div class="shortnews" style="margin-top: 27px;">
                <h3><a href="index.php?news-'.$row->news_id.'">'.$row->news_title.'</a><span>'.$row->newtime.' | verfasst von <a href="">'.$row->name.'</a></span></h3>
                <a class="comments" href="">'.$koms.' Kommentare</a>'.$newstext.'
              </div>';
    }
    1 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Ra- Mitglied
    Registriert seit
    01.05.2011
    Beiträge
    317
    Beitragswertungen
    13 Beitragspunkte
    Da war ich ja gar nicht so weit weg von lächeln

    Das wars nun auch "schon" Vielen dank für die viele Hilfe lächeln
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Galle81 gelöschter User
    Guten Abend,

    und zwar wollte ich es alleine versuchen, die Kommentare in der lastnews.php einzubinden.

    Jedoch bin ich daran mal wieder kläglich gescheitert lächeln

    Mir geht es hauptsächlich um die Abfrage.

    Meine lastnews.php:
    <?php
    #   Copyright by C.C.A.A.
    #	Support www.DragonDesigns.de
    
    defined ('main') or die ( 'no direct access' );
    
    $sql ='SELECT
              a.news_kat as kate,
              UNIX_TIMESTAMP(a.news_time) as time,      
              a.news_title as title,
    		  a.news_kat as kate,
              a.news_id as nid,      
              b.name as uname,
              b.id as uid          
              FROM prefix_news as a
              LEFT JOIN prefix_user as b ON a.user_id = b.id
              WHERE news_recht >= '.$_SESSION['authright'].'
              ORDER BY a.news_time DESC
              LIMIT 0,4';
    		  echo '<link href="include/boxes/zusatz_forumbox/style.css" media="screen" rel="stylesheet" type="text/css" />';
    
    $erg = db_query($sql);
    echo '<table width="100%" cellspacing="1" cellpadding="5">';
    while ($row = db_fetch_object($erg)) {  
    echo'<tr>';
    echo'<td><table width="100%" border="0" cellspacing="0" cellpadding="0">';
    echo'<tr>';
    echo'<td rowspan="2" align="center" valign="middle"><img style="padding-right:5px;" src="include/images/icons/lastcat.png" width="16" height="16" /></td>';
    echo'<td width="100%" colspan="2" align="left"><a class="lasttitle" href="index.php?news-'.$row->nid.'"><span class="info"><h10>News Kategorie:</h10>&nbsp;'.$row->kate.'<br/><h10>eingetragen von:</h10>&nbsp;'.$row->uname.'<br/><h10>am:</h10>&nbsp;'.$lang[date('l', $row->time)].', den '.date('d. M  Y', $row->time).'</span> '.((strlen($row->title)<40) ? $row->title : substr($row->title,0,37).'...').'</a></td>';
    echo'</tr>';
    echo'<tr>';
    echo'<td width="70%" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-weight:bold;color:#b4b4b4;font-size:7px;" align="left">'.$lang[date('l', $row->time)].', '.date('d. M  Y', $row->time).'|'.date('H:i',$row->time).'Uhr</td>';
    echo'<td width="30%" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-weight:bold;color:#ff3c00;font-size:7px;" align="left">Autor:&nbsp;<a class="lastautor" href="index.php?user-details-'.$row->uid.'">'.$row->uname.'</a></td>';
    echo'</tr>';
    echo'</table></td>';
    echo'</tr>';
    }
    echo '</table>';
    ?>


    Vielen Dank im voraus.

    Betroffene Seite: www.fsc-clan.org

    Mfg, Galle
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    ZitatZitat geschrieben von Galle81

    Guten Abend,

    und zwar wollte ich es alleine versuchen, die Kommentare in der lastnews.php einzubinden.

    Jedoch bin ich daran mal wieder kläglich gescheitert lächeln

    Mir geht es hauptsächlich um die Abfrage.

    Meine lastnews.php:
    <?php
    #   Copyright by C.C.A.A.
    #	Support www.DragonDesigns.de
    
    defined ('main') or die ( 'no direct access' );
    
    $sql ='SELECT
              a.news_kat as kate,
              UNIX_TIMESTAMP(a.news_time) as time,      
              a.news_title as title,
    		  a.news_kat as kate,
              a.news_id as nid,      
              b.name as uname,
              b.id as uid          
              FROM prefix_news as a
              LEFT JOIN prefix_user as b ON a.user_id = b.id
              WHERE news_recht >= '.$_SESSION['authright'].'
              ORDER BY a.news_time DESC
              LIMIT 0,4';
    		  echo '<link href="include/boxes/zusatz_forumbox/style.css" media="screen" rel="stylesheet" type="text/css" />';
    
    $erg = db_query($sql);
    echo '<table width="100%" cellspacing="1" cellpadding="5">';
    while ($row = db_fetch_object($erg)) {  
    echo'<tr>';
    echo'<td><table width="100%" border="0" cellspacing="0" cellpadding="0">';
    echo'<tr>';
    echo'<td rowspan="2" align="center" valign="middle"><img style="padding-right:5px;" src="include/images/icons/lastcat.png" width="16" height="16" /></td>';
    echo'<td width="100%" colspan="2" align="left"><a class="lasttitle" href="index.php?news-'.$row->nid.'"><span class="info"><h10>News Kategorie:</h10>&nbsp;'.$row->kate.'<br/><h10>eingetragen von:</h10>&nbsp;'.$row->uname.'<br/><h10>am:</h10>&nbsp;'.$lang[date('l', $row->time)].', den '.date('d. M  Y', $row->time).'</span> '.((strlen($row->title)<40) ? $row->title : substr($row->title,0,37).'...').'</a></td>';
    echo'</tr>';
    echo'<tr>';
    echo'<td width="70%" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-weight:bold;color:#b4b4b4;font-size:7px;" align="left">'.$lang[date('l', $row->time)].', '.date('d. M  Y', $row->time).'|'.date('H:i',$row->time).'Uhr</td>';
    echo'<td width="30%" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-weight:bold;color:#ff3c00;font-size:7px;" align="left">Autor:&nbsp;<a class="lastautor" href="index.php?user-details-'.$row->uid.'">'.$row->uname.'</a></td>';
    echo'</tr>';
    echo'</table></td>';
    echo'</tr>';
    }
    echo '</table>';
    ?>


    Vielen Dank im voraus.

    Betroffene Seite: externer Link

    Mfg, Galle


    erledigt.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten