 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
11.04.2007, 23:00
|
#1
|
|
TP-Junior
Registriert seit: Jul 2005
|
schleifenausgabenzeile benutzer zuweisen
hallo,
hab da mal ne kleine frage ,
und zwar lasse ich mir daten per schleife aus der db anzeigen (mit php), wo es auch keine probleme gibt.
(sieht dann auf dem bildschirm so aus :
1. klaus
2. peter
3. uwe,...
)
nun meine fragen, ist es irgendwie möglich, das wenn ich nun auf irgendeiner anderen seite auf "peter" klicke, das dann in einer benutzerübersicht steht :
Peter = 2 ?
vielen dank für eure mühen
Cooper2k
|
|
|
12.04.2007, 00:15
|
#2
|
|
TP-Specialist
Registriert seit: May 2005
Ort: Bad Saulgau
|
Ich weiß jetzt nicht genau was du willst ... du willst dann sozusagen mit "Peter = 2" die Zeilennummer von Peter ausgeben? Hab' ich das richtig verstanden?
Dafür gibt's soweit ich das weiß keine fertige Funktion oder so. Du musst halt im Prinzip wieder deine Schleife aufbauen und den Counter in einer extra Variable speichern.
Die Übergabe der Daten aus der Liste in das Benutzerfeld kannst du ja mittels URL-Parametern machen. D.h. du gibst in deiner Liste ...
PHP-Code:
1. klaus
2. peter
3. uwe,...
Als Link aus, mit diesem URL-Parameter. Also das sieht dann so aus:
PHP-Code:
echo "<a href=\"benutzer?user=klaus\">1. klaus</a>";
Und so weiter. Den Namen aus der Datenbank im Link weitergeben. In der Datei der Benutzerübersicht holst du dir dann den Benutzernamen wieder rein.
PHP-Code:
$benutzer = $_GET[user]
Nun hast du den angeklickten Benutzer als Variable. Wenn du nun die Zeilennummer haben willst, musst du deine Schleife nochmals aufbauen und mit einer if-Abfrage den Counter, also die Zeilennummer extra abspeichern.
PHP-Code:
$gesamtzeilenanzahl = mysql_num_rows($servertabellendaten);
$counter = 0;
while ($counter < $gesamtzeilenanzahl){
$nameausdatenbank = mysql_result($ergebnis, $counter,'Name(Spalte)');
if ($nameausdatenbank ==$benutzer){$zeile = $counter;}
$counter = $counter+1;}
Grundprinzip verstanden? Die Schleife läuft jetzt so oft durch, wie du Zeilen hast. Zuerst geht sie die Zeile no.0 durch. Bis zum Schluß. Es wird jedesmal der Name aus der Datenbank mit der Zeile X mit dem per GET übermittelten Benutzername verglichen. Stimmen die beiden Daten überein, wird die Zeilennummer extra gespeichert, die du dann ausgeben kannst.
Oder ich hab mich für diese Uhrzeit einfach zu weit aus'm Fenster gelehtn - dann vergesst einfach, was ich gesagt hab
Gruß Stefan 
Geändert von Stefan (12.04.2007 um 00:21 Uhr).
|
|
|
12.04.2007, 08:37
|
#3
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Nur mal so als Gedanken Anstoß: Session
|
|
|
13.04.2007, 02:17
|
#4
|
|
TP-Junior
Registriert seit: Jul 2005
|
vielen dank für die antworten
also ich glaube das ist nicht das was ich meinte,
also es soll so sein das die daten die ich aus der db per schleife hole nach punkten geordnet sind.
dumm gesagt :
platz 1 klaus 20 punkte
platz 2 uwe 18 punkte
platz 3 peter 16 punkte
(die punkte sind ja variabel)
sprich morgen könnte es ja auch so aussehen, das
platz 1 peter 23 punkte
platz 2 klaus 22 punkte
platz 3 uwe 19 punkte
soo nun möchte ich das eben wenn ich auf den namen klicke steht
übersicht klaus
platz: 1
punkte: 20
----------------------
wenn ich das was du (stefan) geschrieben hast richtig verstanden habe, geht er durch die tabelle durch (die sich ja nicht verschiebt) und gibt daraus den platz an.
ich hab aber mal probiert mit meiner leider wenigen php-kenntnissen (grade mit den schönen schleifen) ein bischen dran rumzudoktern wo ich aber leider auch nicht zum erfolg kam.
letzendlich kommt die fehlermeldung:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in .\.\.test.php on line 10
in line 10 befindet sich :
$nameausdatenbank = mysql_result($ergebnis, $counter,'Name(Spalte)');
das 'Name(Spalte)' muss ich das ändern, oder muss das so bleiben ?
und was passiert mit der $ergebnis variablen ? wird die da gefüllt, oder ist sie schon gefüllt
vielen dank für deine/eure mühen
@ webcreate ich arbeite mit sessions auf meiner seite
|
|
|
13.04.2007, 02:22
|
#5
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Die Zeile bringt uns nicht viel.
Der Fehler kommt, weil die DB kein Abfrageergebnis zurückgibt.
Poste mal den ganzen Code, dann kann man auch eher sehen, was Du schon hast.
|
|
|
13.04.2007, 03:46
|
#6
|
|
TP-Specialist
Registriert seit: May 2005
Ort: Bad Saulgau
|
Zitat:
|
sprich morgen könnte es ja auch so aussehen, das
|
Dann würd' ich sowohl in der Hauptschleife als auch in "meiner" Schleife die Tabelle per ORDER BY nach Punkten sortieren?
|
|
|
13.04.2007, 22:12
|
#7
|
|
TP-Junior
Registriert seit: Jul 2005
|
nabend,
also auf meiner einen seite habe ich :
PHP-Code:
<? include "datenbank.php"; ?>
<table border="1">
<tr>
<td align="center" height="20"><strong>Platz:</strong></td>
<td align="center" height="20"><strong>Nick:</strong></td>
<td align="center" height="20"><strong>Punkte:</strong></td>
</tr>
<?
$user=mysql_query("SELECT * FROM user order by punkte DESC") OR die(mysql_error());
$num=mysql_num_rows($user);
for ($i=0; $i<$num; $i++) {
$row=mysql_fetch_array($user);
$platz=$i+1;
if ($i % 2){
echo"<tr>\n";
}
else
{
echo"<tr>\n";
}
echo"<td align=\"center\"><pre>$platz</pre></td>\n";
echo"<td align=\"center\"><pre>$row[user_nick]</pre></td>\n";
echo"<td align=\"center\"><pre>$row[punkte]</pre></td>\n";
}
echo"</tr>\n";
?>
</table>
und auf der anderen seite
PHP-Code:
<?
include "datenbank.php";
$benutzer = "Cooper2k" ; #<-- habe ich nun einfach so festgelegt
$user=mysql_query("SELECT * FROM user WHERE user_nick='$benutzer'") OR die(mysql_error());
$daten=mysql_fetch_array($user);
?>
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" height="20" colspan="2"><strong>Userdetails von <? echo $daten[user_nick]; ?>: </strong></td>
</tr>
<tr>
<td width="50%" height="20">Nickname:</td>
<td height="20"><? echo $daten[user_nick]; ?></td>
</tr>
<tr>
<td width="50%" height="20">Rang:</td>
<td height="20">???????</td><!-- <---- das will ich haben :) -->
</tr>
<tr>
<td width="50%" height="20">Punkte:</td>
<td height="20"><? echo $daten[punkte]; ?></td>
</tr>
</table>
das ist ein teilstückes (um das es ja geht) meines codes.
wie gesagt die schleifen sind nicht so meine stärke, und ich weiß leider garnichts mit der while schleife anzufangen.
(die versuche dich ich mit stefans while schliefe gemacht habe, unterschlage ich besser hier ^^, bevor ich mich morgen garnet mehr hier blicken lassen kan n ^^)
bis denne
|
|
|
13.04.2007, 23:50
|
#8
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
So ich habe es wegen der fehlenden DB nun nicht getestet.
Es werden jetzt die Plätze ausgegeben und wenn man auf den Nickname klickt, sollte sich darunter die Benutzerdaten zeigen.
PHP-Code:
<?php include "datenbank.php"; ?> <table border="1"> <tr> <td align="center" height="20"><strong>Platz:</strong></td> <td align="center" height="20"><strong>Nick:</strong></td> <td align="center" height="20"><strong>Punkte:</strong></td> </tr> <? $user=mysql_query("SELECT * FROM user order by punkte DESC") OR die(mysql_error()); $i = 1; while($row=mysql_fetch_array($user)){ $platz=$i; echo"<tr>\n"; echo"<td align=\"center\">$platz</td>\n"; echo"<td align=\"center\"><a href=\"$_SERVER[PHP_SELF]?platz=$platz&user_nick=$row[user_nick]\">$row[user_nick]</a></td>\n"; echo"<td align=\"center\">$row[punkte]</td>\n"; echo"</tr>\n"; $i++; }?> </table> <?php if(!empty($_GET['user_nick'])){ $benutzer = addslashes($_GET['user_nick']); $user=mysql_query("SELECT * FROM user WHERE user_nick='$benutzer'") OR die(mysql_error()); $daten=mysql_fetch_array($user); echo <<<ENDE <table width="100%" border="1" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center" height="20" colspan="2"><strong>Userdetails von <? echo $daten[user_nick]; ?>: </strong></td> </tr> <tr> <td width="50%" height="20">Nickname:</td> <td height="20"><? echo $daten[user_nick]; ?></td> </tr> <tr> <td width="50%" height="20">Rang:</td> <td height="20"><? echo $_GET[platz]; ?></td> </tr> <tr> <td width="50%" height="20">Punkte:</td> <td height="20"><? echo $daten[punkte]; ?></td> </tr> </table> ENDE; }?>
|
|
|
14.04.2007, 00:23
|
#9
|
|
TP-Junior
Registriert seit: Jul 2005
|
Vielen Dank,
das ist schon im prinzip das was ich haben möchte (was mir durch deinen code aufgefallen ist, das ich ja nen bissl geschlafen habe ^^, weil ich ja auch in meinem code auf die "$platz" zugreifen kann), aber nun ist eben das problem, das ich ja auf den namen nicht nur durch "diese" tabelle den rang haben möchte, sondern das wenn man z.b. im forum auf den nick klickt, und da würde ja die "$platz" nicht geben.
|
|
|
14.04.2007, 00:35
|
#10
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Man Du könntest auch mal genauer beschreiben, was Du damit genau vor hast.
Wenn das Teil später noch Kaffee kochen soll, dann vergiß das!
Ich muss ja nicht sagen, dass ich oben schon Sessions angesprochen habe, oder?
PHP-Code:
<?php session_start(); include "datenbank.php"; ?> <table border="1"> <tr> <td align="center" height="20"><strong>Platz:</strong></td> <td align="center" height="20"><strong>Nick:</strong></td> <td align="center" height="20"><strong>Punkte:</strong></td> </tr> <? $user=mysql_query("SELECT * FROM user order by punkte DESC") OR die(mysql_error()); $i = 1; while($row=mysql_fetch_array($user)){ $platz=$i; $_SESSION['users'][$row[user_nick]] = $platz; echo"<tr>\n"; echo"<td align=\"center\">$platz</td>\n"; echo"<td align=\"center\"><a href=\"profil.php?user_nick=$row[user_nick]\">$row[user_nick]</a></td>\n"; echo"<td align=\"center\">$row[punkte]</td>\n"; echo"</tr>\n"; $i++; }?> </table>
// Neue Datei Name: profil.php <?php session_start(); include "datenbank.php"; if(!empty($_GET['user_nick'])){ $benutzer = addslashes($_GET['user_nick']); $user=mysql_query("SELECT * FROM user WHERE user_nick='$benutzer'") OR die(mysql_error()); $daten=mysql_fetch_array($user); echo <<<ENDE <table width="100%" border="1" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center" height="20" colspan="2"><strong>Userdetails von $daten[user_nick]: </strong></td> </tr> <tr> <td width="50%" height="20">Nickname:</td> <td height="20">$daten[user_nick]</td> </tr> <tr> <td width="50%" height="20">Rang:</td> <td height="20">$_SESSION[users][$benutzer]</td> </tr> <tr> <td width="50%" height="20">Punkte:</td> <td height="20">$daten[punkte]</td> </tr> </table> ENDE; }?>
|
|
|
14.04.2007, 01:01
|
#11
|
|
TP-Junior
Registriert seit: Jul 2005
|
nochmals danke,
das ist leider auch nicht ganz das was ich gerne haben würde,
1. (das ist was was ich aber auch nicht weiß) bei 4 , 5 ,6 usern denke ich mal ist das nicht so tragisch, aber würde sich das nicht auf ladezeiten auswirken, wenn ich nur mal so als zahl 1000 user in einer session hätte ? (wie gesagt weiß ich nicht  .
2. würde das ja mit der session veraussetzen das ich auf den nick vorher geklickt haben müsste, um das ich dann ein bischen später den nick und den platz noch in der session habe, oder sehe ich da was falsch ?
und nein  sicherlich kein kaffe kochen
also versuche ich es nochmal zu schreiben was ich will
also das mit der ersten tabelle ( sprich da wo die namen und plätze stehen )
die ist erstmal aussen vor (sollte eigentlich nur darstellen, woher die "plätze" kommen) .
so nun möchte ich das wie in dem beispiel eben, das ich im forum bin und dann auf nen nick klicke, das dann das benutzerprofil erscheint, wo dann der nick mit dem "$platz" erscheint.
|
|
|
14.04.2007, 01:10
|
#12
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Leicht machst Du es echt nicht ...
Eigentlich war schon alles da, mit etwas mehr Eigeninitiative würde man wohl auch alleine dahin kommen.
So nun der letzte Support in der Angelegenheit:
PHP-Code:
<?php include "datenbank.php"; ?> <table border="1"> <tr> <td align="center" height="20"><strong>Platz:</strong></td> <td align="center" height="20"><strong>Nick:</strong></td> <td align="center" height="20"><strong>Punkte:</strong></td> </tr> <? $user=mysql_query("SELECT * FROM user order by punkte DESC") OR die(mysql_error()); $i = 1; while($row=mysql_fetch_array($user)){ $platz=$i; echo"<tr>\n"; echo"<td align=\"center\">$platz</td>\n"; echo"<td align=\"center\"><a href=\"profil.php?user_nick=$row[user_nick]\">$row[user_nick]</a></td>\n"; echo"<td align=\"center\">$row[punkte]</td>\n"; echo"</tr>\n"; $i++; }?> </table>
// Neue Datei Name: profil.php <?php include "datenbank.php"; if(!empty($_GET['user_nick'])){ $benutzer = addslashes($_GET['user_nick']); $user=mysql_query("SELECT * FROM user order by punkte DESC") OR die(mysql_error()); $i = 1; while($row=mysql_fetch_array($user)){ if($row[user_nick] == $benutzer){ $platz = $i; $punkte = $daten[punkte]; } $i++; } echo <<<ENDE <table width="100%" border="1" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center" height="20" colspan="2"><strong>Userdetails von $benutzer: </strong></td> </tr> <tr> <td width="50%" height="20">Nickname:</td> <td height="20">$benutzer</td> </tr> <tr> <td width="50%" height="20">Rang:</td> <td height="20">$platz</td> </tr> <tr> <td width="50%" height="20">Punkte:</td> <td height="20">$punkte</td> </tr> </table> ENDE; }?>
Das nun der Link von jeder page aus wie folgt aussehen muss, sollte klar sein.
profil.php?user_nick=Egon
|
|
|
14.04.2007, 01:26
|
#13
|
|
TP-Junior
Registriert seit: Jul 2005
|
ich weiß nicht was das mit eigeninitiative zu tun hat  weil ich weiß numal mit ner do while schleife nichts anzufangen
aber das ist jetzt nebensächlich
es funktioniert soo wie ich es haben wollte
vielen vielen dank für deine mühen, hast mir sehr viel geholfen danke
sry dafür das ich es dir nicht leicht gemacht habe  .
wünsche einen schönen abend noch
bis denne
Cooper2k
ps: schade das es keine jubelsmilies gibt !!
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr.
|
 |