Hallo!
Ich bin gerade debei, meine Homepage neu zu machen. Nun habe ich Mich an PHP & MySQL herangetraut.
Ich werde erst ein Mal mein Grundgerüst erläutern:
Ich habe User, die sich einloggen könne, diese werden in einer Tabelle gespeichert: Benutzerdaten
diese besitzt die Attribute:
Id => auto_increment da immer neue User hinzugefügt werden
Nickname
Kennwort
Nachname
Vorname
Wenn diese User sich eingeloggt haben, dann kommen sie auf einen neue Seite und können nun mein Mailsystem nutzen
Die Mails werden per Formular eingetragen und in einer Tabelle gespeichert: Mail
An
Von
Datum => ist int und wird per Formular mit time() gefüttert
Betreff
Text
mailid => wieder auto_increment zur eindeutigen Mailidentifizierung
gelesen => tinyint (BOOLEAN hab ich nicht gefunden) ist standart auf 0, wenn gelesen auf 1
Mit dem eintragen von neuen Nachrichten habe ich kein Problem, es klappt alles wunderbar.
Nun das eigentliche Problem. Jeder user besitzt einen Posteingang.
Ich möchte nun, dass alle Mails in einer Tabelle aufgelistet werden.
Bis jetzt, bin ich so weit!
Dies ist die Klasse, die die Abfrage in eine Tabelle gibt (Sorry, wegen den CSS)
nun folgt noch die Abfrage zur Funktion. (Copyright by Sven Letzel, editiert von Mir)
Hier wird nach alle Mails für den USER "test" gefragt.
Nun werden alle Mails (ohne Text nur der Betreff) aufgelistet, mein Problem, ich möchte nun, dass man den Betreff anklicken kann und sich eine neue Seite öffnet. Ich weiß bloß nicht, wie ich die variablen übergeben soll.
Ich möchte nun ebend die Klasse umschreiben, damit ich irgendwie durch heraufklicken die $MAILID an eine andere Siete übermitteln kann
die Funktion "echoquery()" listet Mir jedoch nur alle Daten auf, wie kann ich da nun dynamische Links einbringen Ich sitze hier schon ziemlich lange dran, arbeite mir PHP seit 4 Wochen, musste da etwas für die Schule machen, aber da ging alles nur im Stile autodidaktisch beibringen und ja schnell fertig werden! Ich komme nun aber einfach nicht weiter, bitte helft Mir, was muss ich bei meiner echoquery() Funktion ändern?
Mit freundlichen Grüßen
Sebastian
P.S.: Der Beitrag ist ein wenig unübersichtlich, also wenn ihr mehr fragen habt, fragt Bitte (welch ein Satz)!
Ich bin gerade debei, meine Homepage neu zu machen. Nun habe ich Mich an PHP & MySQL herangetraut.
Ich werde erst ein Mal mein Grundgerüst erläutern:
Ich habe User, die sich einloggen könne, diese werden in einer Tabelle gespeichert: Benutzerdaten
diese besitzt die Attribute:
Id => auto_increment da immer neue User hinzugefügt werden
Nickname
Kennwort
Nachname
Vorname
Wenn diese User sich eingeloggt haben, dann kommen sie auf einen neue Seite und können nun mein Mailsystem nutzen
Die Mails werden per Formular eingetragen und in einer Tabelle gespeichert: Mail
An
Von
Datum => ist int und wird per Formular mit time() gefüttert
Betreff
Text
mailid => wieder auto_increment zur eindeutigen Mailidentifizierung
gelesen => tinyint (BOOLEAN hab ich nicht gefunden) ist standart auf 0, wenn gelesen auf 1
Mit dem eintragen von neuen Nachrichten habe ich kein Problem, es klappt alles wunderbar.
Nun das eigentliche Problem. Jeder user besitzt einen Posteingang.
Ich möchte nun, dass alle Mails in einer Tabelle aufgelistet werden.
Bis jetzt, bin ich so weit!
PHP:
class mysql_db {
var $link = false;
var $resid = false;
var $doerror = false;
var $host = "localhost";
var $user = "root";
var $passwd = "";
var $tables = "feuerkind";
function set_doerror($boolvalue)
{
$this->doerror = $boolvalue;
}
function connect()
// Verbindet zur Datenbank
{
$temp = @mysql_connect
($this->host, $this->user, $this->passwd);
if (!$temp)
{
$this->echoerror();
return false;
}
$this->link = $temp;
$temp = @mysql_select_db($this->tables, $temp);
if (!$temp)
{
$this->echoerror();
return false;
}
return $this->link;
}
function query($sql)
// Sendet eine Anfrage an die Datenbank
{
if (!$this->link)
{
if ($this->doerror)
{
echo ("<b>Nicht verbunden.</b><br>");
return false;
}
}
if ($this->resid) @mysql_free_result($this->resid);
$result = mysql_query($sql, $this->link);
if (!$result) $this->echoerror();
$this->resid = $result;
return $result;
}
function echoerror()
// erzeugt eine Fehlerausschrift
// wenn $doerror=TRUE
{
if (!$this->doerror) return;
if (!mysql_errno()) return;
echo ("<font color=\"red\"><b>" . mysql_errno());
echo (": ". mysql_error() ." </b></font><br>");
}
function data()
// liefert einen Datensatz
{
if (!$this->link)
{
if ($this->doerror)
echo ("<b>Nicht verbunden!</b><br>");
return false;
}
if (!$this->resid)
{
if ($this->doerror)
echo ("<b>Keine Abfrage!</b><br>");
return false;
}
$result = mysql_fetch_array($this->resid, MYSQL_BOTH);
$this->echoerror();
return $result;
}
function echoquery($sql)
//Fragt die Datenbank ab und stellt die Abfrage dar
{
$this->query($sql);
echo("<center><table width=\"50\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>");
$index = 0;
echo("<th class=\"postheader\" width=\"20\">Nr.</th>");
while ($field = mysql_fetch_field($this->resid))
echo("<th class=\"postheader\" width=\"40\">$field->name</th>");
echo ("</tr>\n");
$rec=0;
while ($row = $this->data())
{
$rec++;
echo("<tr><th width=\"40\" class=\"post\">$rec</th>");
for ($i=0; $i<mysql_num_fields($this->resid); $i++)
echo("<th class=\"post\">".htmlentities($row[$i])." </th>");
echo("</tr>\n");
}
echo ("</table>");
}
function mysql_db()
// Construktor
{
$this->connect();
}
}
$db = new mysql_db;
?>
Dies ist die Klasse, die die Abfrage in eine Tabelle gibt (Sorry, wegen den CSS)
nun folgt noch die Abfrage zur Funktion. (Copyright by Sven Letzel, editiert von Mir)
PHP:
$db->echoquery("SELECT Datum, Von, Betreff, mailid FROM mail WHERE `an`=\"test\" ORDER BY datum DESC");
Hier wird nach alle Mails für den USER "test" gefragt.
Nun werden alle Mails (ohne Text nur der Betreff) aufgelistet, mein Problem, ich möchte nun, dass man den Betreff anklicken kann und sich eine neue Seite öffnet. Ich weiß bloß nicht, wie ich die variablen übergeben soll.
PHP:
$db->echoquery("SELECT Von, Datum, Betreff FROM mail WHERE `an`=\"Test\" AND `mailid`=\"$mailid\"");
Ich möchte nun ebend die Klasse umschreiben, damit ich irgendwie durch heraufklicken die $MAILID an eine andere Siete übermitteln kann
die Funktion "echoquery()" listet Mir jedoch nur alle Daten auf, wie kann ich da nun dynamische Links einbringen Ich sitze hier schon ziemlich lange dran, arbeite mir PHP seit 4 Wochen, musste da etwas für die Schule machen, aber da ging alles nur im Stile autodidaktisch beibringen und ja schnell fertig werden! Ich komme nun aber einfach nicht weiter, bitte helft Mir, was muss ich bei meiner echoquery() Funktion ändern?
PHP:
function echoquery($sql)
//Fragt die Datenbank ab und stellt die Abfrage dar
{
$this->query($sql);
echo("<center><table width=\"50\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>");
$index = 0;
echo("<th class=\"postheader\" width=\"20\">Nr.</th>");
while ($field = mysql_fetch_field($this->resid))
echo("<th class=\"postheader\" width=\"40\">$field->name</th>");
echo ("</tr>\n");
$rec=0;
while ($row = $this->data())
{
$rec++;
echo("<tr><th width=\"40\" class=\"post\">$rec</th>");
for ($i=0; $i<mysql_num_fields($this->resid); $i++)
echo("<th class=\"post\">".htmlentities($row[$i])." </th>");
echo("</tr>\n");
}
echo ("</table>");
}
Mit freundlichen Grüßen
Sebastian
P.S.: Der Beitrag ist ein wenig unübersichtlich, also wenn ihr mehr fragen habt, fragt Bitte (welch ein Satz)!
Zuletzt bearbeitet: