Userdaten auslesen

Brian Folte

Angesehenes Mitglied
Hallo. Wenn ich eingeloggt bin und mir dann andere Profile anschaue, sehe ich immer nur meine daten. wenn ich ausgeloggt bin, sehe ich garkeine daten mehr.
an was liegt das? wenn ich aus dem
$result=mysql_query("SELECT * FROM user WHERE id='$id'");
$row=mysql_fetch_array($result);
hinten die $id wegnehme ändert das auch nix. lg brian
 
Bei der ID hast eine Spalte in der DB vom Typ INT? Dann versuch es mal ohne Hochkomma:

CODE
$result=mysql_query("SELECT * FROM user WHERE id=$id");
$row=mysql_fetch_array($result);



Wenn Du eine Liste mit deinen Usern hast, benötigt jeder Link die eigene ID des Datensatzes:


CODE
<ahref="profil.php?id=$row[id]">Userprofil</a>



Wenn Du mit der Maus über die Links fährst sollten die Links so aussehen:

profil.php?id=1
profil.php?id=2
profil.php?id=3
profil.php?id=4

etc. Ich schreibe das nur, weil mir Dein Problem etwas merkwürdig vorkommt...
 
QUOTE (radarin @ So 25.9.2005, 21:41)
Wenn Du eine Liste mit deinen Usern hast, benötigt jeder Link die eigene ID des Datensatzes:


CODE
<ahref="profil.php?id=$row[id]">Userprofil</a>





hallo danke für deine antwort das hat super geklappt. nun zu dem was du noch geschrieben hast zwecks dem verlinken. wie mach ich das am besten? also eine liste wo die user ausgelistet werden habe ich. aber da wird es per javascript angeigt also wenn ich jetzt auf ein profil klicke öffnet sich ein neues kleines fenster aber ich würde es am liebsten auch so haben wollen, das es ein normaler links ist ohne javascript. lg brian
 
Da musst die ID an das JavaScript übergeben.

Um Artikel einem Warenkorb hinzuzufügen habe ich das mal so gelöst:

CODE
<FORM ACTION="index.cfm?shopid=#URL.shopid#&produkte_id=#produkte_id#&pg=7&ref=#ref#" METHOD="post" name="addwk#produkte_id#">

<A HREF="javascript:window.document.addwk#produkte_id#.submit();" class="link">Kaufen</A>

</FORM>



Ist zwar CFML, aber vom Prinzip her problemlos zu PHP anpassbar. Jede Zeile der Liste generiert ein neues Formular, dessen Name die ID enthällt und somit jedes Form einen anderen Namen hat. Der Link führt dann das dazugehörende Form aus.

Die ID ins JavaScript übergibst du so:


CODE

function detail(id){
f2 = open("handel_pferde_detail.php?counter=yes&id=" + id,"chattn","width=700,height=500,left=50,top=50", "resizeable=yes,status=no,hotkeys=no,scrollbar=yes");
if(window.focus) f2.focus();
}




 
so bei dem problem mit der id habe ich schon wieder ein problem. und zwar hat es gerade funktionniert. aber nun war ich eine halbe stunde nicht auf der seite und nun habe ich festegstellt das dies schon wieder spinnt wenn ich nicht eingeloggt bin und ein profil anschauen will bekomme ich diese meldung:
$result=mysql_query("SELECT * FROM user WHERE id=$id");
$row=mysql_fetch_array($result);

und wenn ich eingeloggt bin zeigt er mir wieder nur meine daten an egal auf welches profil ich gehe.
was ich aber nicht verstehe vor einer halben stunde ging noch alles aber jetzt wieder nicht obwohl ich nix verändert habe. lg brian


Eddit: Nun geht es wieder also da soll mal einer durchsehen.
blink.gif
 
so nun weiß ich wie das problem ist. also wenn ich garnicht eingeloggt bin bekomm ich diese meldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/bullyinf/public_html/sms01/admin/user_aendern.php on line 10

in linie 10 steht das:
$row=mysql_fetch_array($result);

wenn ich aber nun mit einem account eingeloggt bin und dann mit einem neuen fenster mir nun dir profile anschauen will dann geht es.
bin ich aber mit zwei user accounst eingeloggt zeigt er mir immer nur die daten an mit welchen ich gerade das profil angeklickt habe

das heißt
user1
klickt auf das profil von user2
nun bekommt user1 in dem profil von user2 seine eigenen daten angezeigt.
finde das voll merkwürdig.
hier nochmal der code
<?
include("./config.php");






$result=mysql_query("SELECT * FROM user WHERE id=$id");
$row=mysql_fetch_array($result);

?>

nach dem code kommt nur eine tabelle wo dann nur kleine teile php sind wie zb
<td align="right" width="30%"><p class="text">Name</p></td>
<td align="right" width="30%"><p class="text"><? echo $row[name]; ?></p></td>

lg brian
 
QUOTE (brianberlin @ Mo 26.9.2005, 11:19) kann mir keiner helfen? lg brian
sad.gif


Hallo,

Du solltest vielleicht erstmal Programmieren und den Umgang mit Datenbanken lernen. Denn solche Fehler entstehen eigentlich fast ausschließlich aus Unkenntnis über die erforderlichen Grundlagen.

PHP Dokumentation (de)
MySQL Dokumentation (de)


Wenn Du immer, wie ich vermute, die Session-ID übergibst, wird der Benutzer halt nur sich selber sehen können. Dies würde auch erklären, warum Du nichts sehen kannst, wenn Du Dich abgemeldet hat. Du musst also die ID des anderen Benutzers übergeben um des Daten aus der Datenbank zu bekommen und nicht weiterhin die Session-ID.



MfG Sascha Ahlers
 
ja aber wie komme ich an die andere id ran?
ich such ja schon immer über google aber wirklich was finden tuh ich nicht. lg brian
 
QUOTE (brianberlin @ Mo 26.9.2005, 18:11)ja aber wie komme ich an die andere id ran?
ich such ja schon immer über google aber wirklich was finden tuh ich nicht. lg brian

Über eine Datenbankabfrage, welche mit mysql_fetch_assoc in einer Schleife steht und HTML mit entsprechenden Links ausgibt.


SQL select * from table order by field asc



CODE <a href="show_profile.php?uid=<?php echo $row['user_id']; ?>"><?php echo $row['name']; ?></a>


Die ID wird dann via GET übergeben.



MfG Sascha Ahlers
 
achso. aber ich habe gedacht, das wenn zb. in meiner datenbank die id unter id gespeichert ist ich sie auch so anspreche und wenn ich sie unter userid speicher ich sie dann unter userid auch aufrufen kann oder sehe ich das falsch? lg brian
 
so hier bin ich nochmal. ich habe heute die ganze zeit versucht es hinzubekommen.
ob so:
$result=mysql_query("SELECT * FROM user WHERE id='$user_[id]'");
oder so
$result=mysql_query("SELECT * FROM user WHERE id='$user_id'");
oder so
$user=mysql_query("SELECT * FROM user WHERE id='$user_[id]'");
oder so
$result=mysql_query("SELECT * FROM user WHERE id=$id");
und noch ein paar andere. aber mit keinem geht es. bei manchen gibt er wenn man nicht eingeloggt ist nur die daten von user eins aus also dem mit der id 1.

also ich bin mit meinen mitteln so langsam am ende vielleicht könnte mir einer von euch noch ein paar tips geben oder es mir sogar erklären. lg brian
 
so nun ist das problem gelöst und zwar so:

$user=mysql_query("SELECT * FROM user WHERE id='$user_id' LIMIT 1");
$user=mysql_fetch_array($user);

und um alles anzuzeigen:
<td align="right" width="30%"><p class="text">eMail</p></td>
<td align="center"><input class="text" type="text" name="email" value="<? echo $user; ?>" size="50"></input></td>

so einfach kann die sache sein wenn man dahinter kommt [IMG]http://www.ayom.com/html/emoticons/cool.gif[/IMG] lg brian
 
Was mich bei deiner Beschreibung irritiert, ist dass du immer schreibst von wegen eingeloggt oder nicht. Das dürfte doch kein Einfluss haben. Bist Du nicht eingeloggt ist der Zugriff auf die Seite gesperrt und es werden keine Daten gezeigt. Bist eingeloggt, muss der DS mit der entsprechenden ID gezeigt werden, basta.

Soweit zur Theorie. Ich habe die Erfahrung gemacht, dass vielfach die SQL Abfrage nicht korrekt ist, aber im Gegensatz zu ColdFusion wo in diesem Fall eine eindeutige Fwehlermeldung kommt, taucht der PHP-Fehler erst bei der Verarbeitung auf. Also musst du sehen wie die Anfrage an die DB wirklich lautet:

CODE
$sql = "SELECT * FROM user WHERE id='$user_[id]'";
echo $sql;
$result=mysql_query($sql);

 
Zurück
Oben