2 Fragen zu Umsetzungen

SantaCruze

Erfahrenes Mitglied
Hallo miteinander:) Und zwar habe ich 2 kleine Probleme bei dennen ich Hilfe bräuchte. Zum ersten wäre das folgendes,
ich will aus Tabelle 1 einen Wert z.b. ID auslesen und diesen mit Tabelle 2 abgleichen und dann ausgeben. Nur wie realisiere ich es, das er mir das Ausgibt?

2. Ich will eine Statistik aufbauen, welche z.b. die Top 100 anzeigt. Nun soll man aber zu einem Profil kommen, mittels Link. Wie realisiere ich es mit einem Script, das er mir jede Ausgabe verlinkt auf die richtige ID?

Mfg
SantaCruze
 
Dafür wäre es gut zu wissen, wie die Tabellen aussehen.

Zu 1.
Was genau heißt abgleichen?
SQL:
SELECT table1.id 
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table1.id = table2.id
GROUP BY table1.id
Dieses Query würde dir alle IDs aus "table1" holen, wenn sie ein entsprechendes Gegenpart in "table2" haben. Wahrscheinlich habe ich die Frage etwas falsch verstanden, also führe sie bitte nochmal ein wenig weiter aus.

Zu 2.
SQL:
SELECT `id`, `name` 
FROM `table`
ORDER BY `criterion` DESC
LIMIT 0,100
Wenn dein Kriterium jetzt z. B. ein Postcounter ist, würde er die Namen und IDs raussuchen, von den 100 Leuten mit den meisten Posts.
Diese könntest du dann ganz normal in PHP weiterverarbeiten.
 
Also abgleichen meine ich z.b.

Wenn aus Tabelle ID = 1 ist, dann suche in Tabelle 2 ID 1 und gebe aus Tabelle 2 den Wert aus. Ist halt blöd erklärt ;)

Und zu 2.

Das mit der SQL Anweisung ist auch nicht das Problem, es hapert gerade bei mir auf der Verständniss Ebene wie man per Script z.b. den Link erzeugt. Ist das reines

echo "<html> blabla <url>$ausgabe</url></html>" ? Oder wie setze ich das mit dem Script um, das er z.b. eine Verlinkung macht ?
 
bla.php (Beispiel)
PHP:
if(!isset($_GET['id'])) {
# Lese die Top 100 aus
echo '<a href="./bla.php?id='.$id.'">Linktext</a>';
} else {
# Gebe das Profil aus
}

Zu 2.

Dann kannst du mein Query 1:1 übernehmen und musst nur die Spaltennamen anpassen und den Select um das Feld erweitern, dass du auslesen willst.
 
Also ich habe es nun mal probiert mit dem LEFT JOIN; allerdings zeigt er mir nur ne leere Seite an, keine Fehlermeldung nix.


PHP:
$sql= "SELECT art,userid,punkte FROM user_statistik LEFT JOIN users ON userid = user WHERE userid = user GROUP by user";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result))
{
echo "<body bgcolor='#000000' text='#FFFFFF' link='#FFFFFF' vlink='#FFFFFF' alink='#FFFFFF'><table width='323' border='0' align='center' cellpadding='1' cellspacing='1'>
  <tr>
    <td width='155' bgcolor='#10101F'><strong><font size='1' face='Verdana, Arial, Helvetica, sans-serif'>Höchste Spieler Score </font></strong></td>
    <td width='161' bgcolor='#181830'><font size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong><font size='1' face='Verdana, Arial, Helvetica, sans-serif'>".$row['user']."</font></strong></font></td>
  </tr>
</table>
";
}
 
Nun ich hab zusätzlich zu meinem E_ALL noch echo mysql_error() eingebaut, hab den Query umgeändert aber immernoch, nur ne leere weiße Seite. Ist irgendwie der Wurm drin :(

PHP:
<?php
include ("connect.php");
session_start();

error_reporting(E_ALL);
//$sql = "SELECT art,userid,punkte FROM user_statistik WHERE art='all' ORDER BY punkte DESC LIMIT 100"; 
$sql="SELECT A.art,userid,punkte ,B.user FROM user_statistik AS A,users AS B WHERE userid = user";
///SELECT A.EineSpalte, B.EineAndereSpalte   
//FROM Tabelle1 AS A, Tabelle2 AS B WHERE A.EinWert = B.EinAndererWert;
//$sql= "SELECT art,userid,punkte FROM user_statistik LEFT JOIN users ON userid = user WHERE userid = user GROUP by user";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result))
{
echo "<body bgcolor='#000000' text='#FFFFFF' link='#FFFFFF' vlink='#FFFFFF' alink='#FFFFFF'><table width='323' border='0' align='center' cellpadding='1' cellspacing='1'>
  <tr>
    <td width='155' bgcolor='#10101F'><strong><font size='1' face='Verdana, Arial, Helvetica, sans-serif'>Höchste Spieler Score </font></strong></td>
    <td width='161' bgcolor='#181830'><font size='1' face='Verdana, Arial, Helvetica, sans-serif'><strong><font size='1' face='Verdana, Arial, Helvetica, sans-serif'>".$row['user']."</font></strong></font></td>
  </tr>
</table>
";
}
echo mysql_error();
?>
 
SQL:
SELECT A.art,userid,punkte ,B.user 
FROM user_statistik AS A,users AS B 
WHERE userid = user

So, das hier ist dein Query.
Du musst jede Kolumne anhand der Tabelle identifizieren, sonst weiß er nicht aus welcher Tabelle die Daten kommen.
Weiterhin ist deine Where Bedingung schlicht und ergreifend falsch! user ist keine Variable und kann somit keinen wirklichen Wert haben und ich bezweifle einfach mal, dass eine userid vorhanden ist, die "user" heißt.
 
Das mit der WHERE userid = user hat folgendes auf sich, in einer tabelle steht nur eine ID welche ich aber mit dem namen aus einer anderen Tabelle abgleichen bzw. ausgeben will. Daher ist userid = user.
 

Neue Beiträge

Zurück