php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.07.2009, 23:44  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard [Erledigt] Top3

Guten Abend.
Ich hoffe das mir hier zu so später Stunde noch jemand helfen kann.
Ich will eine Top3 Bestenliste machen wer wen geworben hat.
Dazu hab ich in einer Tabelle eine Spalte: "geworben".
Da steht der Name drin von dem der Geworben hat.
Nun muss der Mysql befehl ja alle einträge abrufen und zählen wie viel z.b Elise geworben hat also wie oft Elise in der Spalte steht.
Mein erstes Hinderniss,
Wie soll ich alle Namen der Werber bekommen und die dann auch nur 1x.
Im moment hab ich:
PHP-Code:
SELECT FROM `spickWHERE  geworben != '/' AND geworben !='' ORDER BY 'geworben' DESC 
Damit bekomm ich alle die Geworben haben alphabetisch ausgegeben aber auch Doppelt und ungezählt.
Ein Hinderniss wäre da auch noch undzwar sollen für Elise auch Elise m. und m. Elise mitgezählt werden. Ich weiß das geht mit %elise%.

Ein Script hab ich schon geschrieben, undzwar dass man nen Namen eingeben kann und dann sieht wie viele User von diesem Nutzer schon geworben wurde, aber wie gesagt ich weiß nicht wo ich diese Eingabe automatisch herbekommen soll
hoffe ihr könnt mir nen paar denkanstöße geben
mfg roest
roest ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.07.2009, 23:53  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

COUNT(), SUM() und GROUP BY könnten dir helfen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 20.07.2009, 23:55  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard

Danke ich schmeiß mal peinen Persöhnlichen sucher an
roest ist offline   Mit Zitat antworten
Alt 21.07.2009, 01:06  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard

Es will nicht ganz hinhaun.
Ich Poste einfach mal meinen Code:
PHP-Code:
include 'connect.php';
        
$top=mysql_query("SELECT * FROM `spick` GROUP BY geworben");
        
$top_einträge=mysql_num_rows($top);    
        
    while(
$top3 mysql_fetch_assoc($top)) {
            
    
    
$drei=mysql_query("SELECT * FROM `spick` WHERE  geworben LIKE '%$top3[geworben]%'");
    
$drei_ausgabe_gezählt=mysql_num_rows($drei);
    
    while(
$top3_ja mysql_fetch_assoc($drei)) {
    echo 
"
                <font size=+1>
                    <center>
                        <b>
                            $drei_ausgabe_gezählt
                        </b>
                            Leute die von $top3_ja[name] geworben wurden <br><br><hr>
                    </center>
                </font>"
;
    }} 
roest ist offline   Mit Zitat antworten
Alt 21.07.2009, 04:50  
Erfahrener Benutzer
 
Registriert seit: 03.06.2009
Beiträge: 140
PHP-Kenntnisse:
Anfänger
thomasE befindet sich auf einem aufstrebenden Ast
Standard

so sollt es klappen.

PHP-Code:
<?php
include 'connect.php'

$top3 mysql_query(
    
"SELECT
        `name`,
        count(*) as anzahl
    FROM
        `spick`
    GROUP BY
        `geworben`
    ORDER BY
        anzahl DESC
    LIMIT 3"
);

while( 
$ds mysql_fetch_assoc($top3) )
{
    echo 
'<strong>'$ds['anzahl'] .'</strong> Leute sind von '$ds['name'] .' geworben worden<br/>';
}
?>
thomas

ps
Zitat:
<font size=+1>
HTML-Attribut-Werte gehören in Anführungszeichen! auch wenn die Browser es leider auch so parsen
thomasE ist offline   Mit Zitat antworten
Alt 21.07.2009, 13:45  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard

Zitat:
HTML-Attribut-Werte gehören in Anführungszeichen! auch wenn die Browser es leider auch so parsen
Ja ich weiß, nur bin ich inzwischen zu faul geworden vor jeden " nen \ zu setzen.
So gehts auch und ich hab nicht so einen voll quellcode

Zu deinem Code.
Erstmal danke. Die Ausgabe ist auch schon viel besser als meine es je war *g*
Es werden nur 3 Leute angezeigt und die Liste ist richtig geordnet.
Das einzige was nicht Stimmt ist die Ausgabe der geworbenen.

Z.b platz 2:
28 Leute sind von Jasmin E. geworben worden

Manuelle abfrage:
0 Leute die von Jasmin E geworben wurden
0 Leute die von Jasmin E. geworben wurden
0 Leute die von Jasmin geworben wurden

erkenn ich das richtig und mit "as" wird ein neues Feld geschaffen?

gruß
roest ist offline   Mit Zitat antworten
Alt 21.07.2009, 14:33  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von roest Beitrag anzeigen
erkenn ich das richtig und mit "as" wird ein neues Feld geschaffen?

gruß
Naja, eher ein Index in dem späteren Array oder eine Eigenschaft des Objekts, das über mysql_fetch_array bzw. *_object zurückgegeben wird, aber kann man so sehen, ja. Es ist halt ein Platzhalter, falls du mal mehrere Spalten mit demselben Namen selektierst oder der Spaltenname sehr lang oder schwer zu merken ist!

Ich denke
Code:
GROUP BY geworben
ist nicht so ganz in deinem Sinne, oder?

Alle Einträge bei denen in der Spalte die gleiche Zahl steht werden dann gruppiert!

Wie wäre es mit
Code:
GROUPY BY `name`
Zitat:
Ein Hinderniss wäre da auch noch undzwar sollen für Elise auch Elise m. und m. Elise mitgezählt werden. Ich weiß das geht mit %elise%.

Ein Script hab ich schon geschrieben, undzwar dass man nen Namen eingeben kann und dann sieht wie viele User von diesem Nutzer schon geworben wurde, aber wie gesagt ich weiß nicht wo ich diese Eingabe automatisch herbekommen soll
hoffe ihr könnt mir nen paar denkanstöße geben
Hmm, verstehe das Problem nicht ganz:

Code:
WHERE `name` LIKE '%" . $name . "%'
So in der Art?
Asipak ist offline   Mit Zitat antworten
Alt 21.07.2009, 14:49  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard

Zitat:
Ich denke
Code:
GROUP BY geworben
ist nicht so ganz in deinem Sinne, oder?

Alle Einträge bei denen in der Spalte die gleiche Zahl steht werden dann gruppiert!

Wie wäre es mit
Code:
GROUPY BY `name`
Hmm stimmt hätt ich auch selber drauf kommen können, aber die Ausgabe stimmt so leider immer noch nicht.
Trage deinen Dollar Link ein
Trage deinen Dollar Link ein

Laut manueller Eingabe ist es nur 1ner der von Sven geworben wurde.
Ich frag mich was der da Zählt oO

Zitat:

Hmm, verstehe das Problem nicht ganz:

Code:
WHERE `name` LIKE '%" . $name . "%'
So in der Art?
Ja richtig.
siehe mein erster versuch:
PHP-Code:
    $drei=mysql_query("SELECT * FROM `spick` WHERE  geworben LIKE '%$top3[geworben]%'"); 
Aber in
PHP-Code:
SELECT `name` , count(*) as anzahl  FROM `spickGROUP BY  `nameORDER BY anzahl DESC LIMIT 20 
Kann ich das ja schlecht einbauen, da ich keine Variable hab die den Namen enthält.

Geändert von roest (21.07.2009 um 14:54 Uhr).
roest ist offline   Mit Zitat antworten
Alt 21.07.2009, 15:39  
Erfahrener Benutzer
 
Registriert seit: 03.06.2009
Beiträge: 140
PHP-Kenntnisse:
Anfänger
thomasE befindet sich auf einem aufstrebenden Ast
Standard

da hatte ich was falsch verstanden, hatte angenommen, dass in geworben drin steht, von wem der Teilnehmer geworben wurde (name oder id), was aber auch nicht ganz zum korrekten ergebnis führt.
war gestern schon spät.


könntest du uns die Struktur deiner Tabelle mal zeigen
Code:
DESCRIBE `spick`
oder wenigstens erklären wie sie aussieht, und was in den Spalten drinsteht.
Nicht die Inhalte, sondern der Logischen Aufbau.

vermute ich diesmal richtig, dass geworben ein langer string ist, der alle Namen enthält, die von diesem Benutzer geworben wurden?

thomas
thomasE ist offline   Mit Zitat antworten
Alt 21.07.2009, 16:27  
Erfahrener Benutzer
 
Registriert seit: 07.06.2009
Beiträge: 107
PHP-Kenntnisse:
Anfänger
roest befindet sich auf einem aufstrebenden Ast
roest eine Nachricht über ICQ schicken roest eine Nachricht über Skype™ schicken
Standard




In Geworben von wird halt immer der Name gespeichert von dem der geworben hat. Habs inzwischen aber so eingerichtet, dass nichtmehr irgendein text gespeichert wird, sondern dass es ein name sein muss der schon im System vorhanden ist.
Desshalb wird das %name% eher zweitrangig
roest ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum