Archiv verlassen und diese Seite im Standarddesign anzeigen : id in ein profil speichern
tach leute,
habe eine mitgleiderverwaltung und einen artikelstamm mit datensätzen.
wenn sich der user einen artikel ansieht,
soll er die möglichkeit haben, diesen artikel in sein profil zu speichern, um ihn beim nächsten besuch schneller finden zu können.
im profil stehen dann ausser seinen pers. daten auch die links inklusive bilder der artikel die er gespeichert hat.
meine frage ist, wie gehe ich vor um das hinzubekommen.
du könntest die Artikelnummern alle in seinem Cookiespeichern, oder in einer Textdatei auf dem Server oder in einer DB auf dem Server
MoRtAlAn 25-09-2002, 10:37 die einträge haben doch sicher inen eindeutige ID ?!
läßt den user die Bilder seiner Wahl auswählen und speicherst die UserID und die ID des Bildes in eine Tabelle.
gruss
am besten eine zusätzliche Tabelle anlegen mit einem ForeignKey auf den User und eine SPalte wo die Links angelegt werden.
Dann schreibst du ein Select auf diese Tabelle wenn der User sein Profil aufruft und selectierst alle Links die mit der ID des Users übereinstimmen...
hi MoRtAlan,
ja, die einträge haben eine bestimmte id,
und so wie du es geschrieben hast, würde ich es auch gerne machen.
was ist dazu nötig? eine weitere tabelle?
wie sieht der code dazu aus?
-
es wäre wirklich superklasse, wenn du mir damit etwas weiterhelfen könntest!
habe wirklich schon überall nachgeschaut, auch sowas in der richtung schon gefunden, nur leider ist der code dieses skriptes dermassen aufgebläht, das ich nicht durchblicke. ausserdem durch haufenweise querys sehr serverlastig...
-
MoRtAlAn 25-09-2002, 10:54 du legst dir ne neue Tabelle an mit 2 spalten:
1x UserID (oder wie du es nennen willst)
1x BildID
der User bekommt die Bilder ja irgendwie aufgelistet.
Dort mußt du halt noch einen Link machen, damit genau dieses Bild (BildID) in die Tabelle geschrieben wird.
Das kann per PopUp sein, oder über den Link auf eine neue Seite.
gruss
okay,
tabelle mit user_id und tabelle mit bild_id sind ja schon vorhanden.
da ich aber eher lernbegieriger laie in sachen php bin, weiss ich nicht, wie so eine funktion/code aussehen könnte.
kannst du mir ein beispiel posten?
thx
bastian
MoRtAlAn 25-09-2002, 11:09 willst du es über ein popup machen, oder über einen neue seite??
also ich hatte es mir so gedacht, das, wenn der user auf der detailseite ist und sich den artikel anschaut, er einen link klickt
und anschliessend auf seine profilseite geleitet wird, wo dann der entsprechende artikel zu sehen ist.
es ist aber auch okay, wenn sich ein popup öffnet, wo dann drin stehen würde "der artikel wurde in ihr profil gespeichert"
meintest du doch so, oder?
b.
MoRtAlAn 25-09-2002, 11:16 also auf der Detailseite brauchst du einen link, der ungefähr so aussieht:
<a href="./deine.php?bildID=xx&UserID=yy">in mein Profil</a>
xx muß halt immer durch die ID des Bildes/Artikels ersetzt werden,
yy durch die ID des Users.
in der Seite deine.php
liest du die werte wieder aus, überprüfst ob du den eintrag schon hast, wenn nicht, trägst du beide sachen jeweils in die entsprechende Spalte ein.
gruss
mhhm,
ich möchte auf keinen fall unverschämt wirken, weil ich eine frage nach der anderen stelle,
nur hab ich keine idee, wie der code der "deine.php"-seite ausshen kann.
und: wo wird den die bild-id hingespeichert?
lege ich dafür noch eine extra-zeile in der tabelle user_id an?
thx
bastian
<?php
$reu = mysql_query("SELECT * FROM table WHERE spalte='$bildID' AND spalte2='$userID'");
$num = mysql_num_rows($reu);
if($num == 0)
{
$res = mysql_query("INSERT table (spalte, splate2) VALUES ('$bildID', $userID');
header("Location: sprung_zurueck.php");
}
else
{
echo "Du hast den Link schon deinem Profil hinzugefügt.";
}
?>
Jetzt brauchst du nur noch eine neue Tabelle anlegen mit zwei Spalten. Und dann passt du nur noch das Script mit den Tabellenname(table) und den beiden Spaltenname(spalte, spalte2) an und schon werden dir die Sachen in der Datenbank gespeichert.
hi wotan,
sieht sehr vielversprechend aus,
das mit den spalten hab ich noch net geschnallt.
also es ist momentan so, das die photo_id in einer tabelle liegt und die user_id in einer anderen, da user-management und artikelstamm zwei unterschiedliche skripte sind.
würde ich so an die bild-id kommen?
$reu = mysql_query("SELECT * FROM photo WHERE imageID='$photoID' ");
dann noch für die userID
$reu = mysql_query("SELECT * FROM fadata WHERE userID='$userID' ");
danke
b.
Meinst du die Zeile
$num = mysql_num_rows($reu);
Nein es muss $reu heissen. Weil die abfrage ob was in der Datenbank gefunden würde bezieht sich ja auf
$reu = mysql_query("SELECT * FROM tabel WHERE spalte='$bildID' NAD spalte2='$userID'");
Bei dem rest den du gerade gefragt hast stehe ich einwenig auf dem Schlauch. Ich versteh die Frage nicht ganz.
okay,
beschreibe mal "kurz" wie die db bis nun aussieht:
photo_id findet man in der tabelle photo ,
die user_id befindet sich in der tabelle fapass_data.
deine $reu-anweisung will aber, das sich beide spalten in einer tabelle befinden.
kann das aber nicht ändern, da ich sonst die ganze db umstricken müsste und wie du sicherlich bemerkt hast, bin ich nen php-krüppel :-) - das würde jaaaaahre dauen...
-
das mit deinen spalten hab ich immernoch nicht geblickt.
bis jetzt hatte ichs immer so:
$reu = mysql_query("SELECT * FROM photo WHERE photoID='$photoID' ");
-
die $res-anweisung speichert den vom user gwünschten artikel in sein profil?
greetz
b.
Original geschrieben von bastian
okay,
beschreibe mal "kurz" wie die db bis nun aussieht:
photo_id findet man in der tabelle photo ,
die user_id befindet sich in der tabelle fapass_data.
Wichtig ist das du eine Dritte Tabelle anlegst mit PHPMyAdmin.
So das du folgende Tabellen hast:
fapass_data
photo
Nennen wir sie mal profil
deine $reu-anweisung will aber, das sich beide spalten in einer tabelle befinden.
kann das aber nicht ändern, da ich sonst die ganze db umstricken müsste und wie du sicherlich bemerkt hast, bin ich nen php-krüppel :-) - das würde jaaaaahre dauen...
-
das mit deinen spalten hab ich immernoch nicht geblickt.
bis jetzt hatte ichs immer so:
$reu = mysql_query("SELECT * FROM photo WHERE photoID='$photoID' ");
Damit holst du ja nur die Daten in die Seite um sie in der Tabelle Profil zu speichern
-
die $res-anweisung speichert den vom user gwünschten artikel in sein profil?
greetz
b.
Jetzt klar?
okay, jetzt ists geblickt.
aber wie schaut die abfrage aus, wenn sich die spalten photo_id und user_id in unterschiedlichen tabellen befinden?
$reu = mysql_query("SELECT * FROM photo WHERE photoID='$photoID' AND SELECT * FROM fadata WHERE user_id ='$user_id");
????
Wie jetzt? Und wie willst du die zugehörigkeit speichern oder meinst du das auslesen und anzeigen nachher in der Seite?
meine das auslesen der ID's
gespeichert wird in die tabelle "profil", wo ich wiederum zwei spalten habe, mit namen "user_id" und "photo_id".
b.
Moment ich code dir kurz was dazu. melde mich gleich wieder.
MoRtAlAn 25-09-2002, 13:05 leg die einträge für die IDs nicht in deine normale usertabelle!
sonst hast du für einen User hunderte von Einträgen! Pack das in eine extra tabelle!!
Bilder.php
<html>
<head>
<title>Bilder anzeigen</title>
</head>
<body>
<table>
<?php
// musst du noch die Übergabe des USers machen
// Da ich nicht weiß wie du die Userdaten vorliegen hast in deiner Seite
$user_holen = mysql_query("SELECT * FROM fapass0_data WHERE user_id='$user'");
while($rox = mysql_fetch_array($user_holen))
{
$user_id = $rox[user_id];
}
// Hier werden alle Bilder aus der Datenbank ausgelesen und angezeigt
// Spaltennamen musst du eventuell noch anpassen
$holen_bilder = mysql_query("SELECT * FROM photo");
while($row = mysql_fetch_array($holen_bilder))
{
echo "<tr>
<td>$row[photo_id]<br><a href=\"speichern.php?Photo_ID=$row[photo_id]&User_ID=$user_id\">im Profil speichern</a></td>
</tr>";
}
?>
</table>
</body>
</html>
Speichern.php
<?php
$reu = mysql_query("SELECT * FROM profil WHERE user_id='$User_ID' AND photo_id='$Photo_ID'");
$num = mysql_num_rows($reu);
if($num == 0)
{
$res = mysql_query("INSERT profil (photo_id, user_id) VALUES ('$Photo_ID', $User_ID');
header("Location: profil.php");
}
else
{
echo "Du hast den Link schon deinem Profil hinzugefügt.";
}
?>
Profil.php
<html>
<head>
<title>Profil anzeigen</title>
</head>
<body>
<table>
<tr>
<Td>Folgende Bilder hast du in deinem Profil gespeichert:</td>
</tr>
<?php
// musst du noch die Übergabe des USers machen
// Da ich nicht weiß wie du die Userdaten vorliegen hast in deiner Seite
$user_holen = mysql_query("SELECT * FROM fapass0_data WHERE user_id='$user'");
while($rox = mysql_fetch_array($user_holen))
{
$User_id = $rox[user_id];
}
// Hier werden die Bilder aus der Datenbank ausgelesen und angezeigt, die der User gespeichert hat
// Spaltennamen musst du eventuell noch anpassen
$hole_profil = mysql_query("SELECT * FROM profil WHERE user_id='$User_id'");
while($row = mysql_fetch_array($hole_profil))
{
$hole_bilder = mysql_query("SELECT *FROM photo WHERE photo_id='$row[photo_id]')";
while($roy = mysql_fetch_array($hole_bilder))
{
echo "<tr>
<td>$roy[photo_id]</td>
</tr>";
}
}
?>
</table>
</body>
</html>
Das müste im Großen und ganzen die Sache verdeutlichen.
Wie gesagt du must noch die Tabellennamen und Spaltennamen entsprechent deiner anpassen.
wow,
ads ist super nett vonn dir.
tut mir leid, wenn ich mich so "ungeschickt" angestellt hab.
werde es gleich ausprobieren!
danke auch an MoRtAlan!
hoffe ich kann mich nochmal bei dir melden, wenns harkt...
1000dank
bastian
MoRtAlAn 25-09-2002, 13:24 einfach posten!
wenn ich die bild.php aufrufe, werden 14 links angezeigt.es sind auch 14 bilder in der db vorhanden.
soweit so gut!
folgendermassen sieht der link dann aus:
http://www.homepage.de/profil/speichern.php?photo_ID=&user_ID=
da stimmt was nicht, es fehlen die id's
:confused:
MoRtAlAn 25-09-2002, 13:43 sind die IDs in der Datenbank vorhanden ?? hast du vielleicht einen schreibfehler ??
Sag mir mal die Spaltename von der Tabelle photo, und die Spalten name von fapss_data. Ich änderen dan noch mal meine Script. Hast du die Tabelle profil schon angelegt, wenn ja sag mir mal auch hier die Spaltennamen.
hi wotan,
erstmal bedanke ich mich für deine zeit und mühe.
beispiellose klasse!
-
okay:
bilder liegen in der tabelle: photo -> spalte: photo_id
user liegen in der tabelle: fa_pass0_data -> spalte: user_id
die tabelle profil sieht folgendermassen aus:
erstes feld: photo_id,
zweites feld: user_id
gruss
b.
Schau dir die Scripte noch mal an, ich habe sie jetzt auf deine Tabellen- und Spaltennamen geänder. Du musst über all aber noch folgendes einbauen oder als include reinladen:
<?
// # Werte für den Webserver einstellen!
// Mysql-Server
$MySQL_Host="www";
// Mysql-User
$MySQL_User="xxx";
// Mysql-Passwort
$MySQL_Pass="yyy";
// Mysql-Datenbank
$MySQL_Data="zzz";
$conn = mysql_connect("$MySQL_Host", "$MySQL_User", "$MySQL_Pass");
if($conn)
{
mysql_select_db("$MySQL_Data", $conn);
}
else
{
die(mysql_error());
}
?>
Damit stellt du die Verbindung zur Datenbank her.
okay,
alles soweit geändert, db-verbindung war ja schon da,
jetzt werden ausser den 14 links auch die dazugehörigen id's angezeigt. stehen auch in den links:
machkeinenlinkdraus|http://www.homepage.de/profil/speichern.php?Photo_ID=156&User_ID=
jetzt fehlt die user_id....
und mit der zeile 17 in der speichern.php gibts nen parse error:
in zeile 17 steht: header("Location: profil.php");
-
okay wotan,
ich danke dir herzlich für deine arbeit,
versuchs jetzt mal irgendwie allein, will dir nicht die zeit stehlen.
gruss, alles gute
bastian
Das die User-ID fehlt ist klar.
Weil das Script ja keinen Login oder der gleiche einsetzt.
Daher der Kommentar das du noch die Var $user setzten musst um die User-ID zuerhalten.
Und damit ist auch klar wieso du den Fehler bekommst. Weil er ja keinen User gefunden hat und somit kommt es dann zum Fehler.
Die Scripte dienten ja auch nur zum Veranschaulichen wie du es machen kannst. Jetzt musst du nur noch die ganze Sache auf deine Seite anpassen und schon kanns losgehen.
oki,
i'll make it so.
sobald fertig, kommt erfolchsmäldunk...:-)
thx
b.
wart mal,
hab den code für das usermanagement in die dateien reingepackt und trotzdem funzt es net.
sogar wenn ich die user_id an die url dranhänge kommt wieder die fehlermeldung...
haste noch ne idee?
b.
Poste mal das Script Aber bitte mit der PHP-Funktion.
hier is mal alles drinne....
Wie bekommst du die User ID in deinen Scripten. Bzw. Was ist das was du da gerade Proggst? Schick mir mal den Kompletten Ordner mit den SQL-Dump an folgende eMail-Adresse
wotan@php-resource.de
habe die user_id "zu fuss" an die url drangehängt.
dieser erste teil ist der fa_pass code,
ist der drinne und der level steht auf "0" kann sich die seite jeder ansehen, steht er auf 10, gehts nur, wenn du zugangsberechtigung 10 hast.
das hat aber nichts mit der id zu tun....
-
suche schon die ganze zeit nach ner möglichkeit die id zu übergeben...
b.
<?php
include "../fapass/shared/class/class.config.php";
$conf_pass= new Config("../fapass/shared/config/pass_conf.php");
include $conf_pass->pfad_ums_class;
$fa_ums= new fa_ums(0);
//---------------------------------
if($uid){
$user_id=$uid;
}
include "../fapass/fa_pass.php";
?>
okay, user_id wird jetzt übergeben!
hab nochn paar errors, bemüh mich aber weiterhin....
so, die id wird nun definitiv übergeben,
aber in der speichern.php kommt ein fehler in zeile33
<?php
include "../fapass/shared/class/class.config.php";
$conf_pass= new Config("../fapass/shared/config/pass_conf.php");
include $conf_pass->pfad_ums_class;
$fa_ums= new fa_ums(0);
## So muss fa-pass in eine Profil-Datei eingebunden werden! ######
$profil=true;
if($uid){
$user_id=$uid;
}
include "../fapass/fa_pass.php";
?>
<?
require( "connect.php" );
dbConnect();
$reu = mysql_query("SELECT * FROM profil WHERE user_id='$user_id' AND photo_id='$photo_idD'");
$num = mysql_num_rows($reu);
if($num == 0)
{
$res = mysql_query("INSERT INTO profil (photo_id, user_id) VALUES ('$photo_id', '$user_id');
}
else
{
echo " Du hast den Link schon deinem Profil hinzugefügt. \n"; //zeile33
}
?>
<?php
include "../fapass/shared/class/class.config.php";
$conf_pass= new Config("../fapass/shared/config/pass_conf.php");
include $conf_pass->pfad_ums_class;
$fa_ums= new fa_ums(0);
## So muss fa-pass in eine Profil-Datei eingebunden werden! ######
$profil=true;
if($uid){
$user_id=$uid;
}
include "../fapass/fa_pass.php";
require( "connect.php" );
dbConnect();
$reu = mysql_query("SELECT * FROM profil WHERE user_id='$user_id' AND photo_id='$photo_idD'")or die(mysql_error());
$num = mysql_num_rows($reu);
if($num == 0)
{
$res = mysql_query("INSERT INTO profil (photo_id, user_id) VALUES ('$photo_id', '$user_id')")or die(mysql_error());
}
else
{
echo "Du hast den Link schon deinem Profil hinzugefügt.";
}
?>
Probiers mal so.
cool, jetzt kommz kein fehler mehr,
allerdings steht jetzt auch nicht sweiter da als
"Du hast den Link schon deinem Profil hinzugefügt."
...#
inner db -> tabelle prfil steht jetzt
nur die user_id, die photo_id ist noch leer...
Heist du benutz immer die gleiche UserID und das gleiche Bild.
Schau mal was in der Datenbank für ein Datensatz im Profil steht und lösch den Mal. Und dann versuchs noch mal.
schade,
kein effekt. wurd wieder nur die user_id übergeben.
b.
Du hast auch ein Paar Tippfehler in deinen Scripten. Schau dir noch mal alle Scripte genau an.
Die Übergabe werte müssen genaus heisen wie sie im Link drin stehen. Wenn du das gemacht hast soltte das ganze auch laufen.
$reu = mysql_query("SELECT * FROM profil WHERE user_id='$user_id' AND photo_id='$photo_idD'");
$res = mysql_query("INSERT INTO profil (photo_id, user_id) VALUES ('$photo_id', '$user_id');
okay...
also es scheint so als würde tatsächlich nur einmal eine id eingefügt werden. so oft wie ich einen neuen link klicke, wird nichts mehr in die db geschrieben.
wenn ich über phpmyadmin die photo_id per hand einfüge,
und deine profil.php aufrufe, erscheint auch die id des zuvor eingetragenen bildes....
b.
das hab ich natürlich schon geändert....
kanns an der zeile liegen?
<td>$row[photo_id]<br><a href=\"speichern.php?Photo_ID=$row[photo_id]&user_id=$user_id\">im Profil speichern</a></td>
b.
Schick mir mal die Scripte in der Letzten Fassung.
here you are...
bin gleich off, schau mir das ganze nochmal heut abend an.
danke dir nochmal für deine tatkräftigen support.
darf ich morgen nochmal anfragen?// edit: ach ja, "einfach posten"
b.
:-)
yeahhh,
klasse wotan,
es werden nun user_id und bild_id in die db gespeichert!
aber warum wird im profil nur eine bild_id angezeigt und nicht alle?
gruss von loki
b.
Wieviele Bilder hast du den gespeichert mit der UserID?
Eigentlich sollten alle Bilder angezeigt werden die der User im Profil gespeichert hat.
Zeig mal die UserID die in der Datenbank gespeichert wird.
hi wotan,
was meinst du mit "zeig mal die userID"
die user id ist 1 - photo_id ist z.B. 150 oder 154
hab ca. 5 bilder "gespeichert".
mhhh, so wie's im skript steht, sollten alle bilder angezeigt werden...
b.
Wir machen morgen weiter. Haute sehe ich nur noch Zahlen und schleifen. Schau mir die Sache morgen noch mal an.
yihaaa,
hey wotan, weiss nicht warum, aber der mix hats gemacht. deine neue dateien und die alte profil.php waren der schlüssel.
bekomme jetzt alle photo_id's ausgegeben, die ich auch gespeichert hab.
hundertfachen dank,
wenn du mal grafische unterstützung brauchst,
meld dich einfach bei mir, helfe dir dann gerne.
Schön zu hören. An dann gutes gelingen. Was proggst du da eigentlich. Gib mal ein Link per Mail.
morgen wotan,
wenn die speichern.php angezeigt wird, nachdem ich auf einen link in der bilder.php geklickt habe,
bleibt die seite speichern.php,
will aber das zur profil weitergeleitet wird,
muss ich da
header ("Location: http://www.homepage.de/profil.php");
reinpacken, oder wie funzt das?
b.
header ("Location: profil.php");
Achtung!!!
Vor der benutzung von header darf keine HTML-Ausgabe kommen. Ansonsten gibt es eine Fehlermeldung. Von wegen "header konnte nicht gesendet werden".
okay,
habs drin und funzt...
:-)
------------------------------------
das ganze war ja echt ne schwierige geburt.
hilfst du den ganzen leuten aus idealismus, ruhm und ehre
oder werden ihr anders "entlohnt"?
b.
:D Frag lieber nicht. Hobby??? Geld bekomen wir dafür nicht, auch sonst keine Vergünstigungen.:D
Ich habe auch mal klein Angefangen mit PHP/MySQL und bin in deisem Forum gelandet und mir wurde sofort geholfen, also wieso soll ich nicht anderen helfen.
Einfach "Yust for Fun".
nobel.nobel.
OT:
was machste denn so, biste als progger wo beschäftigt, oder
machste privat an irgendwelchen projekten rum?
b.
jo wotan,
leider finde ich mich hier schneller wieder als vermutet,
hab die tabelle profil umd die spalte link_id erweitert,
aber wie zur hölle komm ich nu an die verxxxxxx link_id?
gruss b.
p.s.
hatte gedacht alle progger hätten ne metallische stimme
und würden mit kryptischer zunge reden :D
$ret = mysql_query("SELECT * FROM artikel_tabelle");
while($row =mysql_fetch_array($ret))
{
$artikel = $row[spalte_artikelID];
}
Original geschrieben von bastian
p.s.
hatte gedacht alle progger hätten ne metallische stimme
und würden mit kryptischer zunge reden :D
Wie kommst den darauf?
is nur son spruch...vorurteile :-)
alle progger ernähren sich von "red-bull",
tragen eckige brillen haben mind. 3 rechner gleichzeitig laufen und sind 28 std am tag vorm moni...
Original geschrieben von bastian
is nur son spruch...vorurteile :-)
alle progger ernähren sich von "red-bull",
stimmt nicht, Weil schmeckt nicht, lieber Cola, MezzoMix, Fanta oder Selter. Aber ganz wichtig sind die Zigaretten
Original geschrieben von bastian
tragen eckige brillen
wie du auf dem Bild siehst nicht auch keine Kontactlinsen
Original geschrieben von bastian
haben mind. 3 rechner gleichzeitig laufen
stimmt fast sind nur 2
Original geschrieben von bastian
und sind 28 std am tag vorm moni...
Dann bekommen ich Ärger mit der Regierung(Frau)
ach ja, die liebe regierung,
wenns am spannendsten wird, kommen die kommentare aus dem "off"... :-)
okay, hast jezz mit meinen vorurteilen aufgeräumt :p
und ich konnt mich ja auch von der nicht-blechernen stimme
selbst überzeugen...
|
-
- |