You are not logged in.

  • Login

1

Friday, December 23rd 2011, 10:48pm

URL Ausgabe/Übergabe

Folgendes Angenommen:
Die Tabelle table hat die Spalten title und text.

Wie kriege ich es hin, dass title und text ausgegeben werden in einer datei, und in der URL am ende der title steht?

Danke schonmal.

2

Saturday, December 24th 2011, 11:30am

Hi,
mal ins blaue geraten... Du willst mod_rewrite URLs wie hier im Forum? Der Titel steht in der URL.
Warum verwendest du nicht einfach ein CMS das mod rewrite beherrscht?
Falls du es selber entwickeln möchtest, dann ist deine Frage ziemlich unpräzise.

3

Saturday, December 24th 2011, 12:43pm

Ja genauso.
Unpräzise?

Was ist denn präzise?

Okay Beispiel:

http://deineseite.de/

Wenn ich jetzt beispielsweise den Text Artikel1 lesen möchte, sollte in der URL stehen

http://deineseite.de/artikel/artikel1

So besser oder wie meinst du es?

4

Saturday, December 24th 2011, 2:27pm

Also grudsätzlich musst du deine ein kleines PHP Script schreiben, in dem du anhand von eier eindeutigen ID die Inhalte aus der Datenbank ausliest und ausgibst. Die geschichte mit der Url funktioniert über mod_rewrite - wie bereits erwähnt. Als Beispiel kanst du dir die Seite www.modrewrite.de anschauen.

5

Saturday, December 24th 2011, 7:12pm

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
    define("SCRIPT", "http://deine-domain.de/index.php");
    define("HOST", "");
    define("USER", "");
    define("PASSWORD", "");
    define("DATABASE", "");
 
    $_title = mysql_real_escape_string($_GET["title"]);
 
    mysql_connect(HOST, USER, PASSWORD);
    mysql_select_db(DATABASE);
 
    if ($_title != "")
    {
        $sql = "SELECT `title`, `text` FROM `table` WHERE `title` = '$_title'";
        $result = mysql_query($sql) or die("MySQL Error ".mysql_errno()."<br />\n".mysql_error()."<br />\n".$sql);
        $count = mysql_num_rows($result);
 
        if ($count > 0)
        {
            $row = mysql_fetch_object($result);
            echo $row->text;
        }
    }
    else
    {
        $sql = "SELECT `title`, `text` FROM `table`";
        $result = mysql_query($sql) or die("MySQL Error ".mysql_errno()."<br />\n".mysql_error()."<br />\n".$sql);
 
        while ($row = mysql_fetch_object($result))
        {
            $title = $row->title;
            $text = $row->text;
            echo "<a href=\"".SCRIPT."?title=$title\">$title</a>";
        }
    }
?>


so, jetzt hab ichs erstmal geschafft, dass ich die Links untereinander hab, und wenn ich auf die Links klicke, ändert sich auch die URL dementsprechend.

Wie kriege ich es jetzt hin, dass wenn ich eben auf einen Link klicke auch der Text ausgegeben wird, das klappt bei mir irgendwie nicht?

6

Saturday, December 24th 2011, 8:44pm

Das Problem könnte sein, dass mysql_real_escape_string eine aktive Datenbankverbindung benötigt. Du baust diese jedoch erst danach auf.

7

Saturday, December 24th 2011, 8:59pm

Das Problem könnte sein, dass mysql_real_escape_string eine aktive Datenbankverbindung benötigt. Du baust diese jedoch erst danach auf.

Das könnte nicht nur so sein, das ist auch so :)

8

Saturday, December 24th 2011, 10:17pm

Das ändert aber nichts daran, dass kein Text angezeigt wird beim klicken des Links...

9

Saturday, December 24th 2011, 10:40pm

Den Fehler mit der Connection hast du ja also in Zeile 12 korrigiert?
Was hast du ansonsten probiert?
Ist $_title denn leer?
Hast du schon versucht es mit var_dump auszugeben?

10

Saturday, December 24th 2011, 10:55pm

string(0) ""

Kommt bei raus, wenn ich auf den Link "Arithmetik" klicke erscheint folgendes:
string(10) "Arithmetik"

11

Saturday, December 24th 2011, 11:08pm

Okay, heißt die Variable wird schonmal korrekt befüllt.

Du könntest jetzt zB. mal ausgeben lassen, was $count ist. Ist es größer als 1, klappt zumindest die Datenabfrage und es kommen Ergebnisse zurück - dann einfach mal $row durch var_dump ausgeben lassen. Wenn nicht, könntest du mal $sql ausgeben lassen.

Prinzipiell hilft es mir beim Debuggen immer, in jeder IF-Abfrage über die("h") (o.Ä.) rauszufinden, ob die Bedingung zutrifft. Also du könntest zB. nach if ($count > 0){ ein die("h") machen. Sollte dieses "h" ausgegeben werden, ist $count schonmal größer als 0 und der Fehler ist weiter eingegrenzt.

Ansonsten könnte auch ein ERROR_REPORTING(E_ALL) in der ersten Zeile helfen, damit du mehr Fehlermeldungen von php erhälst.

This post has been edited 1 times, last edit by "Jan Thurau" (Dec 24th 2011, 11:15pm)


12

Monday, December 26th 2011, 9:35pm

Okay, heißt die Variable wird schonmal korrekt befüllt.

Du könntest jetzt zB. mal ausgeben lassen, was $count ist. Ist es größer als 1, klappt zumindest die Datenabfrage und es kommen Ergebnisse zurück - dann einfach mal $row durch var_dump ausgeben lassen. Wenn nicht, könntest du mal $sql ausgeben lassen.

Prinzipiell hilft es mir beim Debuggen immer, in jeder IF-Abfrage über die("h") (o.Ä.) rauszufinden, ob die Bedingung zutrifft. Also du könntest zB. nach if ($count > 0){ ein die("h") machen. Sollte dieses "h" ausgegeben werden, ist $count schonmal größer als 0 und der Fehler ist weiter eingegrenzt.

Ansonsten könnte auch ein ERROR_REPORTING(E_ALL) in der ersten Zeile helfen, damit du mehr Fehlermeldungen von php erhälst.



$count -> NULL
$row -> bool(false)

Was nun?

13

Monday, December 26th 2011, 9:38pm

Les den Beitrag doch nochmal durch - da steht, was du dann machen sollst;)

Quoted


Wenn nicht, könntest du mal $sql ausgeben lassen


Offensichtlich gibt es zu der Anfrage Daten - also existiert wohl kein Wert in der Datenbank, der auf $_title passt. Ggf. geht beim Übertragen von dem Titel was schief oÄ - poste eben mal den Query.

14

Monday, December 26th 2011, 9:45pm

mit die("h") wird immernoch NULL ausgegeben. mit dem Error Reporting krieg ich

Parse error: syntax error, unexpected T_STRING in ...

PHP Quellcode

1
define("SCRIPT", "PFAD ZUR DATEI");


Wieso?

15

Monday, December 26th 2011, 10:17pm

Schätze nach dem ERROR_REPORTING(E_ALL); fehlt bei dir das Semikolon.

Du sollst einfach $sql ausgeben lassen, direkt vor mysql_query().

16

Monday, December 26th 2011, 10:33pm

Ok gut, waren drei Fehler drin, zwei konnt ich beheben, einer ist noch da.

Der Code:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
ERROR_REPORTING(E_ALL);
    define("SCRIPT", "XXX");
    define("HOST", "localhost");
    define("USER", "XXX");
    define("PASSWORD", "XXX");
    define("DATABASE", "XXX");
 
    mysql_connect(HOST, USER, PASSWORD);
    mysql_select_db(DATABASE);
 
      $_title = mysql_real_escape_string($_GET["post_title"]);
 
    if ($_title != "")
    {
        $sql = "SELECT `post_subject`, `post_text` FROM `mathe_posts` WHERE `post_subject` = '$_title'";
	var_dump($sql);
        $result = mysql_query($sql) or die("MySQL Error ".mysql_errno()."<br />\n".mysql_error()."<br />\n".$sql);
        $count = mysql_num_rows($result);
 
        if ($count > 0)
        {
	die("h");
            $row = mysql_fetch_object($result);
            echo $row->post_text;
        }
    }
    else
    {
        $sql = "SELECT `post_subject`, `post_text` FROM `mathe_posts` WHERE forum_id=5";
        $result = mysql_query($sql) or die("MySQL Error ".mysql_errno()."<br />\n".mysql_error()."<br />\n".$sql);
 
        while ($row = mysql_fetch_object($result))
        {
            $title = $row->post_subject;
            $text = $row->post_text;
            echo '<ul>';
            echo "<a href=\"".SCRIPT."?title=$title\">$title</a>";
            echo '</ul>';
        }
 
    }
?>



Notice: Undefined index: post_title in ... on line 12

wäre ja dies hier

PHP Quellcode

1
$_title = mysql_real_escape_string($_GET["post_title"]);


Wie krieg ich das jetzt richtig hin?

17

Monday, December 26th 2011, 10:34pm

Augen auf!:)

echo "<a href=\"".SCRIPT."?title=$title\">$title</a>";

Dein Link lautet also ?title=XXX

-> Die GET Variable heißt title, nicht post_title ;)

18

Monday, December 26th 2011, 10:49pm

Ohhh peinlich :D

Aber es klappt endlich, danke vielmals :)

Similar threads

Social bookmarks