php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.12.2004, 01:23  
Gast
 
Beiträge: n/a
Standard Problem mit Funktionen

... glaube ich zumindest.

Ich bin noch nicht solange dabei, PHP zu programmieren, habe aber schon etwas Erfahrung mit anderen Programmiersprachen. Ich wollte mich jetzt mal an ein simples Foren-Skript wagen und mich daran etwas hocharbeiten. Dabei habe ich jedoch ein Problem, das ich einfach nicht lösen kann, obwohl ich den Code sicher schon dutzende Male durch gegangen bin. Deshalb habe ich mir gedacht, ich schreibe ihn einfach mal hier rein, da Ihr alle sehr kompetente und hilfsbereite Leutz seid:

Seite 1 (forum.php):

Code:
<html>
<head>
<title>Forum, die erste</title>

<?php
	include("dbconnect.php");
	include("header.php");
?>

</head>

<body bgcolor=#ffffff text=#000000>

<?php
$thread = 1;
$result = db_auslesen($thread);
$title = thread_auslesen($thread);

echo "<table border=1 width=400 bordercolor=#666677>";
echo "<tr><td colspan=2>".$title."</td></tr>";

for($i=0; $i<count($result); $i++)
{	
	$user = $result[$i][user];
	$message = $result[$i][message];
	$date = $result[$i][date];

	echo "<tr><td width=25%>".$date."</td><td width=75%>".$user."</td></tr>";
	echo "<tr><td colspan=2>".$message."</td></tr>";
	echo "</table>

";
}

mysql_close($link);
?>
Seite 2 (header.php):

Code:
<?php

function db_eintragen($user, $thread, $message)
{
	$abfrage_de = "INSERT INTO forum(user, thread, message, date) VALUES('$user', '$thread', '$message', 'now()');
	$ergebnis_de = mysql_query($abfrage_de, $link);
}

function db_auslesen($thread)
{
	$abfrage_da = "SELECT user, message, date FROM forum WHERE thread=$thread";
	$ergebnis_da = mysql_query($abfrage_da, $link);

	for($da=0; $da<mysql_num_rows($ergebnis_da); $da++)
	{
		$result_da[$da] = mysql_fetch_array($ergebnis_da);
	}

	return $result_da;
}

function thread_eintragen($title)
{
	$abfrage_te = "INSERT INTO topics (title) VALUES ('$title')";
	$ergebnis_te = mysql_query($abfrage_te, $links);

	$abfrage_te = "SELECT id FROM topics WHERE title=$title";
	$ergebnis_te = mysql_query($abfrage_te, $link);

	$ergebnis_te = mysql_fetch_array($ergebnis_te);
	$topic_id = $ergebnis_te[id];

	return $topic_id;
}

function thread_auslesen($topic_id)
{
	$abfrage_ta = "SELECT title FROM topics WHERE id=$topic_id";
	$ergebnis_ta = mysql_query($abfrage_ta, $link);

	$ergebnis_ta = mysql_fetch_array($ergebnis_ta);
	$title = $ergebnis_ta[title];

	return $title;
}

?>
So, das ist mein kompletter Code (außer der dbconnect-File, mit der ich mich an der Datenbank anmelde).

Zuerst bringt mir der Parser den Fehler:
syntax error, unexpected T_STRING in E:\Programme\PHP\xampp\htdocs\eigene\header.php on line 11

Das ist die Zeile
Code:
$abfrage_da = "SELECT user, message ..."
aus der header.php in der db_auslesen()-Funktion.

Außerdem wird mir in der forum.php-Datei vorgeworfen, ich hätte die db_auslesen()-Funktion nicht richtig deklariert.
Bitte helft mir, ich komme einfach nicht weiter. Habe ich die Parameter vielleicht falsch angegeben, oder was?

Vielen Dank im Voraus für eine schnelle Anwort.
PS: Wie kriegt Ihr die Farbformatierung für Codeschnipsel hin?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.12.2004, 01:42  
Gast
 
Beiträge: n/a
Standard

Du hast in der ersten Zeile der header.php den Anführungsstrich am ende vergessen:

PHP-Code:
<?php $abfrage_de "INSERT INTO forum(user, thread, message, date) VALUES('$user', '$thread', '$message', 'now()') ";?>
und der zweite Fehler liegt darin das du hier $title nich in '' setzt

PHP-Code:
<?php
//Falsch
$abfrage_te "SELECT id FROM topics WHERE title=$title";
//Richtig
$abfrage_te "SELECT id FROM topics WHERE title= ' ".$title." ' ";
?>
Nu müsste es gehen :wink:

Gruß Mone
 
Alt 04.12.2004, 02:40  
Gast
 
Beiträge: n/a
Standard

Vielen Dank für die superschnelle Antwort.
Jetzt kommt kein Parserror mehr, dafür aber 4 Warnungen:
supplied argument is not a valid MySQL result resource

bei
PHP-Code:
for($da=0$da<mysql_num_rows($ergebnis_da); $da++) 
PHP-Code:
$ergebnis_ta mysql_fetch_array($ergebnis_ta); 
und: supplied argument is not a valid MySQL-Link resource

bei
PHP-Code:
$ergebnis_da mysql_query($abfrage_da$link); 
PHP-Code:
$ergebnis_ta mysql_query($abfrage_ta$link); 
 
Alt 04.12.2004, 02:56  
Gast
 
Beiträge: n/a
Standard

hm bin nu zu müde um mit zu testen
aber du kriegst die Fehler raus indem du in der Funktion die Anfrage so stellst:


PHP-Code:
<?php
if( $ergebnis_da mysql_query($abfrage_da$link) ){
....
}else{
   echo 
"Fehler :: ".mysql_error();
}
?>
Nun wird er im Fehlerfalle diesen in der Funktion abfangen und dir ausgeben so kriegst du schnell die Fehlerquelle mit :wink:

das kannst du mit allen mysql Funktionen machen

schlaf gut und viel Erfolg das es schnell klappt*


Was mir auch grad auffällt, du benutzt die Variable $link
in der Funktion ..übergibst ihr diese Variable aber nicht :wink:
dann mit global $link; diese in die Funktion ziehen*
...
 
Alt 04.12.2004, 13:34  
Gast
 
Beiträge: n/a
Standard

Vielen Dank für den Tip.
Ich habe das mal hinzugefügt und dann bringt er nur noch die Fehler bei den Queries. Is aber eigentlich auch klar, da ja die anderen Anweisungen, mit dem Ergebnis dieser Queries arbeiten und diese somit benötigen. Mysql_error bringt mir aber überhaupt keine Ausgabe. Nur, wenn ich es direkt an die Query mit die() schreibe. Es bringt mir aber auch dann keine nähere Erklärung des Problems.

Meine $link-Variable müsste global sein, da darin meine Verbindungsdaten gespeichert sind. Ich verwende diese Variable in dbconnect außerhalb einer Funktion, also global.
 
Alt 04.12.2004, 13:44  
Gast
 
Beiträge: n/a
Standard

Die Variable $link ist in den Funktionen nicht bekannt! Damit du diese Variable in den Funktionen nutzen kannst, musst du diese in den Funktionen als global deklarieren:

global $link;

Oder du nimmst die Variable einfach bei mysql_query raus, da dieser Parameter optional ist. Wenn er nicht angegeben wird, wird die aktive Verbindung genomen.

Gruß
phpfan
 
Alt 04.12.2004, 14:11  
Gast
 
Beiträge: n/a
Standard

Vielen Dank an Euch beide.
Jetzt funktioniert das Skript endlich.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Templatesystem mit Funktionen und Variablen drin? BartTheDevil89 PHP Tipps 2008 6 01.07.2008 09:32
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Funktionen aus externer Datei includen - Problem Darson PHP Tipps 2008 7 18.01.2008 16:27
Klassen und externe Funktionen ? ssm PHP-Fortgeschrittene 17 18.07.2007 11:59
Funktionen überprüfen und Grafik Funktionen hans.karl2 PHP Tipps 2006 10 31.07.2006 20:08
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
Problem mit Global Scope von Funktionen WickedImp PHP-Fortgeschrittene 13 16.05.2006 00:30
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Globale Variabeln in Funktionen finerip PHP Tipps 2007 3 28.11.2005 16:00
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
[Erledigt] problem mit ftp funktionen und chmod PHP-Fortgeschrittene 7 19.08.2004 16:59
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.