Seite 1 von 1

MySql Abfrage

Verfasst: 14.02.2010, 01:12
von Ice Man
Hi, zu später Stunde mal eine Frage :)

Ich hab auf meiner Seite etwas längere Texte.
Bei bestimmten Themen sind die unterteilt in seite 1 - X.

Bisher hab ich jede Seite extra angelegt und befüllt.
Das ist ja kein Problem.
Aber ich will das nun alles automatisieren.
So muss ich bei einer änderung nicht alle manuell erstellten Seiten anpassen, sondern nur eine.

Nun mein Problem.
Der Text liegt in der DB aufbau wie folgt

ID | Text1 | Text2 | Text3

Also wenn Thema 1 aufgerufen wird, soll alles aus Zeile 1 geholt werden.
Das ist kein Problem.

Aber wie mach ich das bei den diversen Unterseiten ?
so gehts normal ".$daten['Text1']."
Aber wenn ich unterseite 2 Aufrufe müsste die Abfrage dann so lauten
".$daten['Text2"]."

Ich habs schon so probiert
".$daten['Text$u_id']." oder ".$daten['Text[$u_id]']."
die $u_id steht für die entsprechende Unterseite

Jemand zu später Stunde ne Idee, wie ich die Abfrage variabel mache ?
Je nach unterseite das Passende Tabellefeld der Zeile 1.

THX

Verfasst:
von

Verfasst: 14.02.2010, 01:22
von w3news
Versteh ich nicht, solltest vielleicht die ganze Abfrage posten.

Abfrage:

Code: Alles auswählen

$sql=("SELCECT * FROM db WHERE id=$id");
$row = mysql_fetch_assoc($sql);
und so dann ausgeben:

Code: Alles auswählen

$row[Text1]

Code: Alles auswählen

$row[Text2]

Code: Alles auswählen

$row[Text3]

Verfasst: 14.02.2010, 01:26
von Ice Man
es soll ja über .htaccess immer auf die gleiche Datei weitergeleitet werden.

z.B.

thema1-s1.html
thema1-s2.html
thema1-s3.html

Je nachdem welche Unterseite aufgerufen wird (1-3 z.B)
soll die Abfrage denn zelle 1 oder zelle 2 oder zelle 3 ausspucken.

So wie oben würde es ja nicht gehen.
Wenn ich $row[Text1] nehme, kommt ja immer Text1 auch bei Unterseite 2 :)

Deswegen muss sich die Abfrage immer anpassen.

Eine If Abfrage wollte ich mir sparen
if ($unterseite =1)
{ $text = $row[Text1].....

Bei 8 Unterseiten wären das 8 If Klammern, das muss doch auch einfacher gehen oder ?

Verfasst:
von

Verfasst: 14.02.2010, 01:43
von w3news
Hmm, vielleicht in ein Array laden und dann ausgeben, je nachdem welche Seite aufgerufen wurde?

Verfasst: 14.02.2010, 03:30
von 800XE

Code: Alles auswählen

  $query  = " SELECT *";
  $query .= " FROM CSVArtikelSubmit";
  $query .= " WHERE id".$_GET['id'];
  $result = mysql_query($query) 
            or die&#40;'<hr>'.$query.'<hr>'.mysql_error&#40;&#41;&#41;;
  if &#40; $line = mysql_fetch_array&#40;$result, MYSQL_ASSOC&#41;&#41;
  &#123;
    $unterseitenspalte = 'Text'.$_GET&#91;'seite'&#93;;
    $content .= nl2br&#40; $line&#91;$unterseitenspalte&#93; &#41;;
  &#125;
oder

Code: Alles auswählen

  $query  = " SELECT `Text" . $_GET&#91;'seite'&#93; ."`";
  $query .= " FROM CSVArtikelSubmit";
  $query .= " WHERE id".$_GET&#91;'id'&#93;;
  $result = mysql_query&#40;$query&#41; 
            or die&#40;'<hr>'.$query.'<hr>'.mysql_error&#40;&#41;&#41;;
  if &#40; $line = mysql_fetch_array&#40;$result, MYSQL_ASSOC&#41;&#41;
  &#123;
    $unterseitenspalte = 'Text'.$_GET&#91;'seite'&#93;;
    $content .= nl2br&#40; $line&#91;$unterseitenspalte&#93; &#41;;
  &#125;
eventuell

Code: Alles auswählen

  $query  = " SELECT `Text" . $_GET&#91;'seite'&#93; ."` AS ausgabetext";
  $query .= " FROM CSVArtikelSubmit";
  $query .= " WHERE id".$_GET&#91;'id'&#93;;
  $result = mysql_query&#40;$query&#41; 
            or die&#40;'<hr>'.$query.'<hr>'.mysql_error&#40;&#41;&#41;;
  if &#40; $line = mysql_fetch_array&#40;$result, MYSQL_ASSOC&#41;&#41;
  &#123;
    $content .= nl2br&#40; $line&#91;'ausgabetext'&#93; &#41;;
  &#125;
"AS" benutze ich immer als

$query = " SELECT COUNT(id) AS c ";
Ice Man hat geschrieben:es soll ja über .htaccess immer auf die gleiche Datei weitergeleitet werden.

z.B.

thema1-s1.html
thema1-s2.html
thema1-s3.html
Das sind aber 3 Dateien und nicht 1 Datei(en)
bzw URLs

vielleicht sind diese unterschieldlichen URLs ja eine DBzeile
aber URLs=Dateien sind es 3 und nicht 1

Wenn du innerhalb einer URLs(=Datei) Unterschiedliche Daten liefern willst, dann via Ajax oder via PostRequest ...
(POST .. so funktioniert meine Druckerseite, Post auf die selbe URL, durch den PostParameter erkennt das CMS das ein "minimalTemplate" nur für den COntent ohne Navi und so genutzt werden soll)

... alternativ
Der PageView wird gespeichert
und wenn die selte Seite(=URL) nochmals abgerufen wird dann wird "Seite2" dieser Seite ... bzw "Seite3" dieser Seite .... ausgegeben

Re: MySql Abfrage

Verfasst: 14.02.2010, 03:33
von net(t)worker
Ice Man hat geschrieben: Nun mein Problem.
Der Text liegt in der DB aufbau wie folgt

ID | Text1 | Text2 | Text3
jo... haste schon richtig erkannt... da liegt dein Problem... :-?

falsche Tabellenstruktur...

2 tabellen brauchst du...

eine in der du die "globalen" Dinge für jeden Artikel ablegst und eine in der du für jede Unterseite 1 Datensatz mit den Infos für die 1 Unterseite ablegst...

:-?

Alternativ kannste auch den text jeweils mit speziellen markierungen auf einzelne unterseiten verteilen und beim rewrite eben ein paging berücksichtigen und das ganze dann über PHP auseinanderfummeln...

RewriteRule ^artikel_([0-9]+)\.html$ artikel.php?artikel=$1&page=1 [L]
RewriteRule ^artikel_([0-9]+)_([0-9]+)\.html artikel.php?artikel=$1&page=$2 [L]


und das wars... mehr sag ich dazu nich...

Verfasst: 14.02.2010, 12:31
von Ice Man
@ 800XE

tausend dank, damit gings :)

@ net(t)worker
danke für den Hinweis, aber ich wollte extra 2 Tabellen vermeiden.

Aber nun gehts ja, kann ich erstmal weiter basteln ;)