Seite 2 von 3

Verfasst: 27.09.2007 01:59
von RubberDuck
Die Ergebnisse der Datenbankabfrage stehen in $result

Code: Alles auswählen

$result = mysql_db_query($mydbName,"SELECT * FROM txs WHERE status = 1"); 
Warum sollte die DB offen bleiben?

Nehme ich die Zeilen aus der Schleife raus passiert garnichts mehr, also nicht einmal der erste Datensatz wird als Post eingetragen.

Verfasst: 27.09.2007 03:14
von Pyramide
RubberDuck hat geschrieben:Die Ergebnisse der Datenbankabfrage stehen in $result
Nein, mysql_query gibt nur einen Zeiger zurück, den man benutzt, um mit Funktionen wie mysql_fetch_array die eigentlichen Daten aus der Datenbank auszulesen.
[php=mysql_query]PHP-Handbuch[/php] hat geschrieben:... liefert mysql_query() eine Ressourcen-Kennung
RubberDuck hat geschrieben:passiert garnichts mehr, also nicht einmal der erste Datensatz wird als Post eingetragen.
Dann hast du den Code entweder an einer anderen falschen Stelle platziert oder es sollte irgend eine Fehlermeldung kommen.

Verfasst: 27.09.2007 08:44
von gn#36
Ich könnte mir auch vorstellen dass gar nichts passiert, weil die Datenbankverbindung schon geschlossen ist und du somit nicht mehr an die Ergebnisse der Abfrage heran kommst.

Verfasst: 27.09.2007 13:40
von RubberDuck
Ich habe das "closedb" rausgenommen, das Ergebnis ist das gleiche wie vorher.

Verfasst: 27.09.2007 13:42
von RubberDuck
In der eigentlichen Fehlermeldung (siehe erstes Posting) scheint doch $user_id leer zu sein. Kann es evtl. damit zusammenhängen das irgendwo die gesetzten Werte "verloren gehen"?

Verfasst: 28.09.2007 15:03
von RubberDuck
Hat denn wirklich keiner der Profis einen Lösungsansatz?

Ich hab das jetzt in alle möglichen Richtungen Probiert, aber wie gesagt das Ergebnis ist immer das gleiche.

Verfasst: 29.09.2007 04:49
von Pyramide
Wie sieht denn der derzeitige, vollständige Quellcode aus und wie lautet die vollständige Fehlermeldung?

Verfasst: 29.09.2007 21:27
von RubberDuck
Das ist der jetzige Code:

Code: Alles auswählen

<?
include('vars.php');
$opendb = mysql_connect($Host,$user,$pwd);
$result2 = mysql_db_query($mydbName,"SELECT * FROM txs");

$phpbb_root_path='/forum/';
define('IN_PHPBB', true);
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
include($phpbb_root_path . 'includes/functions_post.'.$phpEx);

$forum_id="38";
$bbcode_on=1;
$html_on=0;
$smilies_on=1;
$topic_type='0';
$attach_sig='0';
$mode='newtopic';
$userdata = get_userdata(33);
init_userprefs($userdata);
$username = ( $userdata['session_logged_in'] ) ? $userdata['username'] : '';

while ($row2 = mysql_fetch_array($result2)) {
	$subject = $row2["txsa"]." (".$row2["txsb"].")";
	$message = "Name:	[b]".$row2["txsa"]."[/b] (".$row2["txsb"].")";
	prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);
	submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
	update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id);
}
Und das die Fehlermeldung dazu:
Error in posting

DEBUG MODE

SQL Error : 1196 Warning: Some non-transactional changed tables couldn't be rolled back

UPDATE phpbb_users SET user_posts = user_posts + 1 WHERE user_id =

Line : 445
File : functions_post.php
Es wird wie gesagt nur der erste Datensatz als Posting eingetragen. Was mir auch noch aufgefallen ist, ist das dieses Posting beim User nicht gezählt wird. Und in der Fehlermeldung ist "user_id" leer.

Verfasst: 29.09.2007 22:01
von Pyramide
Wo definierst du denn die Variable $user_id?

Verfasst: 29.09.2007 22:42
von RubberDuck
Pyramide hat geschrieben:Wo definierst du denn die Variable $user_id?
Ich bin davon ausgegangen das dieser Wert über init_userprefs gesetzt wird. War wohl eine falsche Annahme :(

Wenn ich jetzt $user_id vor der Schleife setzte, wird wiederum nur der erste Datensatz geschrieben, es wird aber der Beitrag gezählt und es kommt nun diese Fehlermeldung:
Fatal error: Cannot redeclare clean_words() (previously declared in /forum/includes/functions_search.php:22) in /forum/includes/functions_search.php on line 22