anpera.net
https://anpera.dyndns.org/phpbb3/

Accountid-Name-Umwandlung
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=1236
Seite 1 von 1

Autor:  Tronan [ Fr 08 Apr, 2005 14:14 ]
Betreff des Beitrags:  Accountid-Name-Umwandlung

Ich möchte gerne in die Tabelle der DB die Accountid bestimmter User schreiben und beim aulesen gleich in den aktuellen Namen (mit Titel) umwandeln...

Geht das vielleicht per Funktion?

Autor:  Arîzto [ Fr 08 Apr, 2005 14:34 ]
Betreff des Beitrags: 

Das geht auch ohne, dass du was neues erstellst... Name und Titel sind schliesslich in der DB gespeichert...

Autor:  Tronan [ Fr 08 Apr, 2005 14:37 ]
Betreff des Beitrags: 

Arîzto hat geschrieben:
Das geht auch ohne, dass du was neues erstellst... Name und Titel sind schliesslich in der DB gespeichert...


Ich weiß, dass Name und Titel in der DB sind, aber ich les das aus ner anderen Tabelle... und ansonsten müsst ich n zusätzliche Abfrage machen... ;)

Autor:  Kevz [ Fr 08 Apr, 2005 14:39 ]
Betreff des Beitrags: 

Es würd nur per funktion gehn wenne dr eine machst ;)

Autor:  Gast [ Fr 08 Apr, 2005 14:41 ]
Betreff des Beitrags: 

Kevz hat geschrieben:
Es würd nur per funktion gehn wenne dr eine machst ;)

Ok danke, wollt nur wissen, obs da schon eine gibt *g*

Autor:  Kevz [ Fr 08 Apr, 2005 14:42 ]
Betreff des Beitrags: 

Glaub kaum

Autor:  Chaosmaker [ Fr 08 Apr, 2005 15:21 ]
Betreff des Beitrags: 

Du brauchst im Prinzip nur einfache joins.
Angenommen, Deine Tabelle hanswurst hat die Felder acctid und keks, wobei Du dann keks aus dieser Tabelle und name aus der Account-Tabelle haben willst. Das ist doch genau das, was Du meinst, oder?
In dem Fall sähe das so aus:

SELECT accounts.name, hanswurst.keks FROM hanswurst LEFT JOIN accounts USING(acctid) WHERE ...

Wenn die Felder nicht in beiden Tabellen gleich (also acctid) heißen, mußt Du statt dem USING(acctid) auf ON umsteigen:

SELECT accounts.name, hanswurst.keks FROM hanswurst LEFT JOIN accounts ON accounts.acctid=hanswurst.anderername WHERE ...

Autor:  Tronan [ Sa 09 Apr, 2005 10:42 ]
Betreff des Beitrags: 

Chaosmaker hat geschrieben:
Du brauchst im Prinzip nur einfache joins.
Angenommen, Deine Tabelle hanswurst hat die Felder acctid und keks, wobei Du dann keks aus dieser Tabelle und name aus der Account-Tabelle haben willst. Das ist doch genau das, was Du meinst, oder?
In dem Fall sähe das so aus:

SELECT accounts.name, hanswurst.keks FROM hanswurst LEFT JOIN accounts USING(acctid) WHERE ...

Wenn die Felder nicht in beiden Tabellen gleich (also acctid) heißen, mußt Du statt dem USING(acctid) auf ON umsteigen:

SELECT accounts.name, hanswurst.keks FROM hanswurst LEFT JOIN accounts ON accounts.acctid=hanswurst.anderername WHERE ...


Danke, werds gleich mal ausprobieren ;)

Autor:  Gast [ Sa 09 Apr, 2005 10:57 ]
Betreff des Beitrags: 

Jetzt wo ichs eingebaut hab, stellt sich mir die Frage, wie ich das dann ausgeben lassen kann...

zum Beispiel:
$row[name] geht nicht... Hab mehrer Sachen ausprobiert, komm aber auf keinen grünen Zweig....

Autor:  Tronan [ Sa 09 Apr, 2005 11:01 ]
Betreff des Beitrags: 

Anonymous hat geschrieben:
Jetzt wo ichs eingebaut hab, stellt sich mir die Frage, wie ich das dann ausgeben lassen kann...

zum Beispiel:
$row[name] geht nicht... Hab mehrer Sachen ausprobiert, komm aber auf keinen grünen Zweig....


Blödes automatische Logout :(

Autor:  Kevz [ Sa 09 Apr, 2005 11:28 ]
Betreff des Beitrags: 

Dann zeig mal deine SQL abfrage mit den Variablen

Autor:  augeloggter tronan [ Sa 09 Apr, 2005 17:26 ]
Betreff des Beitrags: 

$this->bbcode_second_pass_code('', ' $sql = "SELECT accounts.name, motd.motditem, motd.motdtitle, motd.motdbody, motd.motddate, motd.motdtype, motd.motdauthor FROM motd LEFT JOIN accounts ON accounts.acctid=motd.motdauthor ORDER BY motddate DESC limit 20";
$result = db_query($sql);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
if ($row['motddate']>$session['user']['lastmotd'] || $i<5){
$row['motddate']=date("d.m.Y, H:i",strtotime($row['motddate']));
if ($row['motdtype']==0){
motditem($row[motdtitle].($session[user][superuser]>=3?"[<a href='motd.php?op=del&id=$row[motditem]' onClick=\"return confirm('Bist du sicher, dass dieser Eintrag gelöscht werden soll?');\">Del</a>]":"")."`n[`i`b{$row['...']} - {$row['motddate']}`b`i]",$row[motdbody]);
}else{
pollitem($row['motditem'],$row['motdtitle'].($session[user][superuser]>=3?"[<a href='motd.php?op=del&id=$row[motditem]' onClick=\"return confirm('Bist du sicher, dass dieser Eintrag gelöscht werden soll?');\">Del</a>]":"")."`n[`i`b{$row['...']} - {$row['motddate']}`b`i]",$row[motdbody]);
}
}
}')
Was kommt statt ... ?

P.S.: Kann mich nur grad mal wieder nicht einloggen ;)

Autor:  Chaosmaker [ Sa 09 Apr, 2005 18:57 ]
Betreff des Beitrags: 

'name' ist da korrekt.
Wenn da dann nix erscheint, prüf mal, ob motdauthor auch einen Wert hat (also nicht 0) und ob der dort eingetragene Account existiert.
Wenn das join keinen passenden Datensatz findet, liefert es für alle Felder (d.h. hier 'name') nur NULL zurück, was dann in $row einen Leerstring ('') ergibt.

Autor:  Nochmal tronan [ Sa 09 Apr, 2005 19:17 ]
Betreff des Beitrags: 

Chaosmaker hat geschrieben:
'name' ist da korrekt.
Wenn da dann nix erscheint, prüf mal, ob motdauthor auch einen Wert hat (also nicht 0) und ob der dort eingetragene Account existiert.
Wenn das join keinen passenden Datensatz findet, liefert es für alle Felder (d.h. hier 'name') nur NULL zurück, was dann in $row einen Leerstring ('') ergibt.


Argh. Ich war mir fast sicher, dasd ich per Hand in der phpmyadmin die richtige Id eingetragen hab... Hab ich wohl verwechselt... Funktioniert alles super ;)

Riesendanke

Autor:  Gast [ Sa 09 Apr, 2005 20:21 ]
Betreff des Beitrags: 

Hm, funktioniert doch net alles... Ich scheitere kläglich daran, dass der Author auch in die Db eingetragen wird...

Autor:  Chaosmaker [ Sa 09 Apr, 2005 20:29 ]
Betreff des Beitrags: 

Wie sieht denn das insert aus?

Autor:  Gast [ Sa 09 Apr, 2005 20:39 ]
Betreff des Beitrags: 

Chaosmaker hat geschrieben:
Wie sieht denn das insert aus?

$this->bbcode_second_pass_code('', ' $sql = "INSERT INTO motd (motdtitle,motdbody,motddate,motdauthor) VALUES ("$_POST[subject]","$_POST[body]",now(),"$session[user][acctid]")";
db_query($sql);')

Hab auch schon ein paar andere Sachen versucht...

Autor:  Chaosmaker [ Sa 09 Apr, 2005 20:48 ]
Betreff des Beitrags: 

Innerhalb von Strings werden nur eindimensionale Arrays direkt erkannt. Also entweder per \"".$session['user']['acctid']."\" machen oder per \"{$session['user']['acctid']}\".

Autor:  Tronan [ Sa 09 Apr, 2005 20:54 ]
Betreff des Beitrags: 

Chaosmaker hat geschrieben:
Innerhalb von Strings werden nur eindimensionale Arrays direkt erkannt. Also entweder per "".$session['user']['acctid']."" machen oder per "{$session['user']['acctid']}".


Jetzt kann ich mich echt nur noch bedanken... Es geht ohne Probleme.
Habt Nachsicht mit dem Php-Nix-Checker!

DANKE!

P.S.: Ich kann mich wieder einloggen

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/