Problem mit DB-Zugriff

In this board you can talk about general questions about phpMyFAQ

Moderator: Thorsten

Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Problem mit DB-Zugriff

Post by Andy-Corrado »

Hallo, ich wollte für die Attachements auch noch die Dateigröße in der Datenbank speichern,
um sie dann im Beitrag anzuzeigen.

Dazu habe ich bei "faqdata" eine Spalte "attsize" hinzugefügt.
In der attachment.php habe ich direkt hinter....
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]) && !(filesize($_FILES["userfile"]["tmp_name"]) > $attmax)) {
$attpfad = EndSlash("../".$attpfad);
$attlink = EndSlash("../".$attlink);

folgendes eingefügt.
$attsize = "20";
$query = "UPDATE ".$sqltblpre."faqdata SET attsize = '".$attsize."' WHERE id='".$_REQUEST["id"]."'";
Aber irgendwie speichert er nicht den Wert "20" in der DB ab. :(
Weiß jemand, wo das Problem liegt?
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

hast du das Feld "attsize" auch in der Tabelle hinzugefügt?

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

Jep, aber auch nachdem ich es wieder entfernt hatte bekam ich keine Fehlermeldung.
So wie´s aussieht, spricht die attachment.php grn nicht an. :roll:
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

stell doch deine Datei hier mal in Forum.

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

Die ganze Datei soll ich hier reinposten? :o

Ich nehm mal nur den Abschnitt wo´s drin steht. ;)

Code: Select all

########################################################################################
#
# Datei entgegen nehmen und speichern
#
########################################################################################
if (isset($_REQUEST["save"]) && $_REQUEST["save"] == TRUE && $auth && allowed(GetRight("addatt"),$auth_user) == 1 ) {
?>
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0"><tr bgcolor="#000000"><td>
<table width="100%" height="100%" border="0" cellspacing="1" cellpadding="5">
<tr bgcolor="#fffff0">
	<td align="center"><b><?php print $id." ".$ad_att_addto." ".$ad_att_addto_2 ?></b></td>
</tr>                                                                                                                         <tr bgcolor="#fffff0">
	<td align="center">
<?php
	if (is_uploaded_file($_FILES["userfile"]["tmp_name"]) && !(filesize($_FILES["userfile"]["tmp_name"]) > $attmax)) {
		$attpfad = EndSlash("../".$attpfad);
		$attlink = EndSlash("../".$attlink);
		$attsize = "20";
		$query = "UPDATE ".$sqltblpre."faqdata SET attsize = '".$attsize."' WHERE id='".$_REQUEST["id"]."'";


		if (!is_dir($attpfad)) {
			mkdir($attpfad);
			}
		if (!is_dir($attpfad.$_REQUEST["id"])) {
			mkdir($attpfad.$_REQUEST["id"]);
			}
		if (move_uploaded_file($_FILES["userfile"]["tmp_name"], $attpfad.$_REQUEST["id"]."/".$_FILES["userfile"]["name"])) {
			print $ad_att_suc;
			}
		else {
			print $ad_att_fail;
			}
		}
	else {
		print $ad_attach_4;
		}

	print "<br><a href=\"javascript:window.close()\">".$ad_att_close."</a>";
?>
	</td>
</tr></table></table>
<?php
	}
elseif (isset($_REQUEST["save"]) && $_REQUEST["save"] == TRUE && $auth && allowed(GetRight("addatt"),$auth_user) != 1) {
	na();
	}
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

Code: Select all

$query = "UPDATE ".$sqltblpre."faqdata SET attsize = '".$attsize."' WHERE id='".$_REQUEST["id"]."'"; 
ist falsch. Ein SQL-Query sendet man bei der FAQ so:

Code: Select all

$query = "UPDATE ".$sqltblpre."faqdata SET attsize = '".$attsize."' WHERE id='".$_REQUEST["id"]."'";
$db->query($query);
bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

hmmmm, das

Code: Select all

$db->query($query);
hatte ich bisher noch nirgends gesehen.
Was bewirkt das denn?
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

mit dieser Funktion setzt du das Query ab und PHP führt es aus. Mit $query = "..." schreibst du nur das Query in die Variable $query.

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

Diese Funktion habe ich aber noch nirgends gesehen. :shock:
Na sowas ähnliches habe ich gerade entdeckt. ;)

Code: Select all

$db_zugriff->query("UPDATE bb".$n."_boards SET.....
Anscheinend wird das beim WBB alles in einem String gemacht.
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

Also jetzt habe ich das gleiche Problem mit dem auslesen der Daten...

...irgendwie raff ich das heut nicht. :kopfwand:

Was ist daran jetzt falsch?
Nicht wundern, hab ne neue Tabelle für die Attachmentdaten angelegt. ;)

Code: Select all

<?php
	if (isset($id) && $id != "") {
		$query = "SELECT attsize FROM ".$sqltblpre."faqdata2 WHERE id = ".$id."";
		$attsize = $db->query($query);

		$attpfad = EndSlash("../".$attpfad);
		$attlink = EndSlash("../".$attlink);
?>
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

welcher Fehler erscheint denn?

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

Kein Fehler, die Dateigröße wird einfach nicht angezeigt. :(
Das gleiche Problem habe ich gerade mit dem 1. von den Topten auf der Startseite vom Forum.

Hab die ensprechenden Dateien included, und die Funktion function generateTopTen() mit in die main.php eingebunden.

Aber das $output wird nicht angezeigt.
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

du musst auch das Ergebnis ausgeben lassen, sonst klappt das nicht. Schau dir einfach mal einige Funktionen an, dort ist das beschrieben.

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Andy-Corrado
Posts: 57
Joined: Sat Jul 19, 2003 3:21 pm
Location: Wiesbaden-Delkenheim
Contact:

Post by Andy-Corrado »

Ich schau sie mir ja die ganze Zeit schon an ;) werd da aber nicht ganz schlau draus. :(
Wenn ich die functions.php include, funktionieren die Forumfunctionen nicht mehr wie sie sollen. :cry:

Diese Funktion habe ich eingebunden, mit Limit 1 ;)

Code: Select all

function generateTopTen() {
	global $db, $sids, $err_noTopTen, $msgViews, $sqltblpre;

	$result = $db->query("SELECT DISTINCT ".$sqltblpre."faqdata.id, ".$sqltblpre."faqdata.lang, ".$sqltblpre."
faqdata.thema, ".$sqltblpre."faqdata.rubrik, ".$sqltblpre."faqvisits.visits FROM ".$sqltblpre."faqvisits, ".$sqltblpre."faqdata 
WHERE ".$sqltblpre."faqdata.id = ".$sqltblpre."faqvisits.id AND ".$sqltblpre."faqdata.lang = ".$sqltblpre."faqvisits.lang 
AND ".$sqltblpre."faqdata.active = 'yes' ORDER BY ".$sqltblpre."faqvisits.visits DESC LIMIT 0,1");
	$output = "";
	if ($db->num_rows($result) > 0) {
		$i = 1;
		while ($row = $db->fetch_object($result)) {
			$output .= "<tr>\n\t<td class=\"topten\">\n";
			$output .= "\t<b>[".$i.".] ".$row->visits." ".$msgViews.":</b><br /><a href=\"".$_SERVER["PHP_SELF"]."?".$sids."aktion=artikel&rubrik=".$row->rubrik."&id=".$row->id."&lang=".$row->lang."\">".stripslashes(makeShorterText($row->thema, 8))."</a>\n";
			$output .= "\t</td>\n\t</tr>\n";
			$i++;
			}
		}
	else {
		$output = "<tr><td class=\"topten\">".$err_noTopTen."</td></tr>";
		}
	return $output;
	}
Generiert wir das ja in der main.php

Code: Select all

$tpl->processTemplate ("writeContent", array(
				"writeNewsHeader" => $title.$msgNews,
				"writeNews" => generateNews(),
				"writeNumberOfArticles" => $msgHomeThereAre.generateNumberOfArticles().$msgHomeArticlesOnline,
				"writeTopTenHeader" => $msgTopTen,
				"writeTopTenRow" => generateTopTen(),
				"writeNewestHeader" => $msgLatestArticles,
				"writeNewestRow" => generateFiveNewest()
				));
Wenn ich das auch in die main.php nehme, bekomme ich folgende Fehlermedung:
Fatal error: Call to a member function on a non-object in c:\programme\apache group\apache\htdocs\forum\main.php on line 34
Ich weiß leider nicht, wie ich das ganze zerpflücken muß, um nur die Nr.1 in $toptechtalk zu bringen.
Eigentlich wieder alles zu viel Code, nur um das Thema und die Anzahl Views auszulesen.

Beim Forum selbst hab ich damit keine Probleme mehr etwas aus der DB zu lesen und anzeigen zu lassen.
Da sind die Daten alle in den $Variablen, und werden so komplett an die Templates übergeben.

Hier zwei Beispiele:

Code: Select all

$anzahlthreads = $db_zugriff->query_first("SELECT COUNT(threadid) FROM bb".$n."_threads");

Code: Select all

$newestuser = $db_zugriff->query_first("SELECT userid,username FROM bb".$n."_user_table WHERE activation='1' ORDER by regdate DESC LIMIT 1");
$newestuser = "<a href=\"members.php?mode=profile&userid=".$newestuser['userid'].$session."\">".$newestuser['username']."</a>";
Jetzt muß ich nur noch im Template $anzahlthreads oder $newestuser reinschreiben, und schon wird´s dargestellt.
Seit ich Frauen kenne, liebe ich meine PC´s Image Image
Thorsten
Posts: 15731
Joined: Tue Sep 25, 2001 11:14 am
Location: #phpmyfaq
Contact:

Post by Thorsten »

Hi,

willst du nun die Größe des Attchements angeben oder den ersten Artikel?

bye
Thorsten
phpMyFAQ Maintainer and Lead Developer
amazon.de Wishlist
Post Reply