ilch Forum » Allgemein » HTML, PHP, SQL,... » MySql 2 Tabellen und mit php ausgeben

Geschlossen
  1. #1
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Hallo zusammen,

    Versuche eben 2 Tabellen auszulesen und auszugeben per php, aber irgendwie klappt es nicht so ganz.

    Das wäre mein Code:

    $abf = 'SELECT
        `prefix_ranks`.bez, `prefix_user`.id
    FROM
        `prefix_ranks`
    LEFT JOIN
        `prefix_user` ON `prefix_ranks`.`bez` = `prefix_user`.`id`
    WHERE
        `prefix_ranks`.`id` = `min`';
    
    
    $erg = db_query($abf);
    echo '';
      while ($row = db_fetch_object($erg)) {  
    		echo ''.$row->bez.'';
      }
      echo '';


    Er zeigt mir an Grünschnabel, mein Rank ist aber Legende.

    Und wenn ich WHERE `prefix_ranks`.`id` = `min`'; in WHERE `prefix_ranks`.`bez` = `min`'; ändere, zeigt er mir mein User namen an.

    Irgendwas mach ich richtig Falsch gerade nachdenken

    Ich möchte das er mir mein Rank anzeigt.

    Jemand eine Lösung was ich Falsch gemacht habe..


    verwendete ilch Version: 1.1 P
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    blakedj06 gelöschter User
    Weißt Du überhaupt was du da machst? Du gleichst beim Join bez mit der user id ab ?

    Was möchtest Du nun genau angezeigt haben? Den User mit Rang oder nur die Ränge?


    Zuletzt modifiziert von blakedj06 am 14.11.2016 - 16:26:42
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    hi,

    Mit 2 Tabellen tuh ich mich immer schwer.
    Habe mir das im Inet schon durch gelesen gehabt, aber mach immer noch Fehler dabei.

    Na wollte nur den Rank auslesen, kann aber ruhig auch User Name dabei sein wenn möglich.

    Wäre klasse für eine Hilfe..
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    blakedj06 gelöschter User
    Versuch es mal hiermit:

    $abf = db_query('SELECT a.name,b.bez FROM prefix_user a LEFT JOIN (SELECT min,bez FROM prefix_ranks  GROUP BY id ORDER BY min DESC) b ON a.posts >= b.min GROUP BY a.id ');


    In der while Schleife dann name und bez abfragen.

    Das zeigt aber nur die normalen Ränge an. Wenn Du Spezialränge wenn verfügbar auch angezeigt haben willst müsste man es etwas ändern.


    Zuletzt modifiziert von blakedj06 am 14.11.2016 - 19:17:01
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    hi,

    habe es eben Probiert aber da kommt nur Fehler Meldung.

    Warning: preg_match() expects parameter 2 to be string, resource given in /htdocs/test/include/includes/func/db/mysql.php on line 56
    
    Warning: preg_match() expects parameter 2 to be string, resource given in /htdocs/test/include/includes/func/db/mysql.php on line 58
    MySQL Error:
    1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #53' at line 1
    in Query:
    Resource id #53
    Debug backtrace:
    	@ mysql.php:46 -- debug_bt()
    	@ mysql.php:64 -- db_check_error(...)
    	@ rank.php:26 -- db_query(...)
    	@ design.php:332 -- require_once(...)
    	@ design.php:174 -- design->get_boxcontent(...)
    	@ design.php:71 -- design->replace_boxes(...)
    	@ home.php:11 -- design->design(...)
    	@ index.php:22 -- require_once(...)
    
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /htdocs/test/include/includes/func/db/mysql.php on line 81


    So sieht es eben aus:

    <?php 
    
     defined ('main') or die ( 'no direct access' );
    
    	$abf = db_query('SELECT a.name,b.bez FROM prefix_user a LEFT JOIN (SELECT min,bez FROM prefix_ranks WHERE spez = 0 GROUP BY id ORDER BY min DESC) b ON a.posts >= b.min GROUP BY a.id ');
    	$erg = db_query($abf);
    	echo '';
    	while ($row = db_fetch_object($erg)) {  
    	echo ''.$row->name.' / '.$row->bez.'';
    	}
    	echo '';
    
    ?>
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    blakedj06 gelöschter User
    Sorry war bis eben nicht da. Ja ich habe das db_query schon vor die SQL Abfrage gepackt. Hätte dir eigentlich auffallen müssen.

    Also nehme das $erg = db_query($abf); weg und ersetze unten beim db_fetch_object das $erg mit $abf.

    Ich habe oben mal das WHERE entfernt das war unnütz da der Abgleich mit den Posts sowieso stattfindet.

    Hier nochmal die Lösung um falls vorhanden die Spezialränge anzuzeigen

    $abf = db_query('SELECT a.name,b.bez FROM prefix_user a LEFT JOIN (SELECT id,min,bez FROM prefix_ranks GROUP BY id ORDER BY min DESC) b ON if(a.spezrank != 0,a.spezrank = b.id,a.posts >= b.min) GROUP BY a.id ');


    Hmm irgendwie spinnt hier der Syntax Highlighter. Hier nochmal ohne Code Tag:

    $abf = db_query('SELECT a.name,b.bez FROM prefix_user a LEFT JOIN (SELECT id,min,bez FROM prefix_ranks GROUP BY id ORDER BY min DESC) b ON if(a.spezrank != 0,a.spezrank = b.id,a.posts >= b.min) GROUP BY a.id ');

    Zuletzt modifiziert von blakedj06 am 14.11.2016 - 19:20:16
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Hi,

    ja keine eile mach dir kein Stress lächeln

    Ah habs jetzt, einzige er liest alle user aus, habe das mit LIMIT 0,1'); gelöst, ist das in Ordnung so mit dem Limit?


    Zuletzt modifiziert von htdocs am 14.11.2016 - 20:37:25
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    blakedj06 gelöschter User
    Ich habe es doch bei mir probiert und es funktioniert ohne Probleme.

    comgames.de/?testd

    Sicher das Du alles richtig kopiert hast?
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    blakedj06 gelöschter User
    Ahhh gut dann bin ich ja beruhigt. ^^ Und ja Limit ist in Ordnung. Dachte Du wolltest das alle User angezeigt werden. Wenn Du nur einen User willst dann eben Limit oder einen bestimmten dann müsste noch mal was geändert werden. ^^
    1 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Ja Ja klappt lachen

    Dank dir noch mal für deine Hilfe..
    1 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Muss mal noch was fragen,

    wäre es möglich den darauffolgenden Rang mit anzeigen zu lassen.
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    blakedj06 gelöschter User
    Jo dann machste das so:

    $abf = db_query('SELECT a.name,b.bez,c.bez as nrang FROM prefix_user a LEFT JOIN (SELECT id,min,bez FROM prefix_ranks GROUP BY id ORDER BY min DESC) b ON if(a.spezrank != 0,a.spezrank = b.id,a.posts >= b.min) LEFT JOIN (SELECT min,bez FROM prefix_ranks GROUP BY id ORDER BY min ASC) c ON a.posts < c.min GROUP BY a.id ');

    Spezialränge werden aber dennoch angezeigt. Wenn Du ohne Spezialränge willst dann so:

    $abf = db_query('SELECT a.name,b.bez,c.bez as nrang FROM prefix_user a LEFT JOIN (SELECT id,min,bez FROM prefix_ranks GROUP BY id ORDER BY min DESC) b ON a.posts >= b.min LEFT JOIN (SELECT min,bez FROM prefix_ranks GROUP BY id ORDER BY min ASC) c ON a.posts < c.min GROUP BY a.id ');

    Achso und den darauf folgenden Rang dann mit ->nrang ausgeben


    Zuletzt modifiziert von blakedj06 am 17.11.2016 - 14:56:57
    1 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Ah Ok Danke Danke lächeln
    1 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten