sql befehl um user zu ermitteln

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

sql befehl um user zu ermitteln

Beitrag von bce »

Deine phpBB Version: Vanilla phpBB 2.0.18
MODs: Ja
Dein Wissensstand: Fortgeschritten
Link zu Deinem Forum: [url]http://[/url]

PHP Version:
MySQL Version:


Was hast Du gemacht, bevor das Problem aufgetreten ist?



Was hast Du bereits versucht um das Problem zu lösen?




Fehlerbeschreibung und Nachricht

hallo.
wenn ein user einen termin einträgt, bekommt der admin eine mail, damit ein termin auf bestätigung wartet.

wenn der admin dann den termin freigibt, soll der entsprechende user über die veröffentlichung des termins per mail informiert werden.

in der cal_lite ist die id des termines bekannt. in der spalte user_id ist der entsprechende user hinterlegt.

nun möchte ich über diese id die email des users herausbekommen.

folgender sql-befehl (userid des posters herausbekommen)

Code: Alles auswählen

echo $sql = "SELECT user_id 
  FROM ". CAL_TABLE ." 
  WHERE id = ". $user_id; 
if ( !($result = $db->sql_query($sql)) ) 
{ 
  message_die(GENERAL_ERROR, 'Kann E-Mail nicht auslesen', '', __LINE__, __FILE__, $sql); 
} 
$mail = $db->sql_fetchrow($result);		
bringt eine fehlermeldung:
Fatal error: Call to a member function on a non-object in C:\Programme\xampp\htdocs\homepage\forum\cal_lite.php on line 227
zeile 227: if ( !($result = $db->sql_query($sql)) )
Zuletzt geändert von bce am Mo 28.Nov, 2005 22:25, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

1. Warum die User-ID abfragen, wenn die in $user_id bereits enthalten ist?
2. ein "global $db;" fehlt hier, wenn es so sein sollte...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

hmm.. hab dich ma wieder weng unglücklioch ausgedfrückt...

also ich hab die id des termines, den ein user vorgeschlagen hat...

hab den sql-befehl nun zusammen:

Code: Alles auswählen

	 $sql = "SELECT user_email
    FROM ". USERS_TABLE ." 
  WHERE user_id = (SELECT user_id FROM ". CAL_TABLE ." WHERE id = '$thisid')"; 
if( !$result = $db->sql_query($sql) ) 
{ 
   message_die(GENERAL_ERROR, 'Kann user-email nicht auslesen', '', __LINE__, __FILE__, $sql);
} 
$email = $db->sql_fetchrow($result); 
echo $email = $email['user_email'];
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Und mit Freigabe soll dieses dem User mitgeteilt werden?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

an die ermittelte email wird im anschluss eine email geschickt, damit sein vorgeschlagener termin veröffentlicht wurde... mehr nicht
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wird oder soll?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

? wie meinst du das ?

nachdem der admin den termin freigegeben hat, wird eine mail losgeschickt...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Also ist die Funktion bei Dir so vorhanden?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

bin noch am werkeln...

hab die cal_lite.php nun mal aufm server geladen und getestet.
kommt ne fehlermeldung:
Kann user-email nicht auslesen

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT user_id FROM phpbb_calendar WHERE id = '30')' at line 3

SELECT user_email FROM phpbb_users WHERE user_id = (SELECT user_id FROM phpbb_calendar WHERE id = '30')

Line : 221
File : cal_lite.php
lokal funktioniert der befehl aber.. was ist falsch?

edit: hab den geschachtelten sql-befehl nun in 2 aufgeteilt... so funzts...
nur warum funktioniert der geschachtelte nich aufm server?
Zuletzt geändert von bce am Di 29.Nov, 2005 16:53, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Weil das so vielleicht von der online installierten MySQL_Verison nicht zulässig ist???
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

was es nicht alles gibt...


hier meine mini-einbau-anleitung:

öffne cal_lite.php

suche zeile ca. 200
include_once($phpbb_root_path . 'includes/page_tail.php');
exit;

einfügen danach

Code: Alles auswählen

//Info E-Mail,dass Termin freigegeben wurde,an User der Termin vorgeschlagen hat
// $userid vom termineintrag; $valid yes oder no; $name wer bearbeitet hat
function email_an_user($userid, $valid, $name)
{
//----------------------------------------------------------------------------//
// E-Mail an Admin, dass ein Termin freigegeben wurde	
// Autor: Marcus - www.bcerlbach.de
//----------------------------------------------------------------------------//

//UPDATE phpbb_calendar SET valid = 'yes' WHERE id = '33' 

global $db, $board_config;

// user-id ermitteln 
$sql = "SELECT user_id
		FROM ". CAL_TABLE ." 
		WHERE id = $userid"; 
if( !$result = $db->sql_query($sql) ) 
{ 
   message_die(GENERAL_ERROR, 'Kann user-id nicht auslesen', '', __LINE__, __FILE__, $sql);
} 
$id = $db->sql_fetchrow($result); 
$id = $id['user_id'];

// user-email ermitteln 
$sql = "SELECT user_email
		FROM ". USERS_TABLE ." 
		WHERE user_id = $id"; 
if( !$result = $db->sql_query($sql) ) 
{ 
   message_die(GENERAL_ERROR, 'Kann user-email nicht auslesen', '', __LINE__, __FILE__, $sql);
} 
$email = $db->sql_fetchrow($result); 
$email = $email['user_email'];

// user-email ermitteln 
/*$sql = "SELECT user_email
		FROM ". USERS_TABLE ." 
		WHERE user_id = (SELECT user_id	FROM ". CAL_TABLE ." WHERE id = $userid)"; 
if( !$result = $db->sql_query($sql) ) 
{ 
   message_die(GENERAL_ERROR, 'Kann user-email nicht auslesen', '', __LINE__, __FILE__, $sql);
} 
$email = $db->sql_fetchrow($result); 
$email = $email['user_email'];
*/

// termin titel ermitteln 
$sql = "SELECT subject 
		FROM ". CAL_TABLE ." 
		WHERE id = '$userid'"; 
if( !$result = $db->sql_query($sql) ) 
{ 
   message_die(GENERAL_ERROR, 'Kann Termin-Titel nicht auslesen', '', __LINE__, __FILE__, $sql);
} 
$titel = $db->sql_fetchrow($result); 
$titel = $titel['subject'];


/* Empfänger */
//$to  = "admin@localhost";
$to = $email;

/* Adresse vom Forum */
$site = $board_config ['sitename'];

/* Betreff */
 if ($valid == 'yes') {
    $subject2 = "Termin wurde freigegeben";
	}
	else {
	$subject2 = "Termin wurde nicht freigegeben";
	}
	
/* Nachricht */
$message2 = '
<html>
<head>
 <title>';
 
 if ($valid == 'yes') {
    $message2 .= 'Termin wurde freigegeben';
	}
	else {
	$message2 .= 'Termin wurde nicht freigegeben';    
	}
	
$message2 .= '</title>
</head>
<body>
<FONT face=Arial size=2>
<p><br><b>';

if ($valid == 'yes') {
    $message2 .= '.. Dein vorgeschlagener Termin wurde freigegeben ..</b>';
	}
	else {
	$message2 .= '.. Dein vorgeschlagener Termin wurde nicht freigegeben ..</b><p>Bei Fragen bitte eine EMail an den Admin schreiben</p>';    
	}
	
$message2 .= '</p>
<p><br><br>von:  '. $name . '</p>
<p><br><br>Titel:  '. $titel . '</p>
<p><br><a href="http://'. $board_config['server_name'] .'">zum Forum</a></p>
</body>
</html>
';

/* Absender */
$abs = $board_config ['board_email'];

$from = "From: Termin <$abs>\n";

if ($ccText != "") $ccText="cc: $ccText <$ccText>\n";
if ($bccText != "") $bccText="Bcc: $bccText <$bccText>\n";

/* Mail versenden */
mail($to, $subject2, $message2,     "To: $to <$to>\n" .     $from .$ccText.$bccText.     "MIME-Version: 1.0\n" .     "Content-type: text/html; charset=iso-8859-1");

//----------------------------------------------------------------------------//
// ENDE  -> E-Mail an Admin, dass Termin freigegeben wurde	
//----------------------------------------------------------------------------//
return true;
}

suche zeile ca. 350
$sql = "UPDATE ".CAL_TABLE." SET valid = 'yes' WHERE id = '$thisid'";

danach einfügen
email_an_user($thisid, 'yes', $userdata[username]);


suche zeile ca. 355
$sql = "DELETE FROM ".CAL_TABLE." WHERE id = '$thisid'";

danach einfügen
email_an_user($thisid, 'no', $userdata[username]);


das wars...
Antworten