Layout Problem - 2 SQL Tabellen

WACSF

Erfahrenes Mitglied
Guten Tag,

ich habe solange rumgemacht, dass ich jetzt einfach alle Möglichkeiten durch habe.
Mein Problem ist ziemlich einfach zu beschreiben.

Ich habe ein Linkverwaltungsscript gebastelt.
Ich habe 2 Tabellen, die Tabelle, in der die Kategorien gespeichert werden (ID, KATEGORIE) und eine, in der die Infos zu den Links drinstehen (ID, NAME, KAT, URL).
Ich kann alles wunderbar abfragen, nur brauche ich diese Abfrage in einer ganz bestimmten Formatierung, und ich weiß nicht wie ich diese hinbekomme.

Ich versuche mal, das Layout best möglich hinzubekommen:
PHP:
Kategoriename1                           LINK1 der KATEGORIE1
                                         LINK2 der KATEGORIE1
                                                 usw.

Kategoriename2                           LINK1 der KATEGORIE2
                                         LINK2 der KATEGORIE2
                                                 usw.
																		  
    usw.

Das Layout ist im Gegensatz zu meinem Problem ziemlich schwer zu beschreiben. Die Kategorienamen werden aus der Tabelle mit den KATNamen bezogen. Die Namen der Links aus der anderen Tabelle.

Ich habe das Layout bis jetzt auf Tabellen gesetzt. Vielleicht gibts da was besseres.
Ich gebe euch mal die Grundversion meines Problems.

PHP:
<table width="626" border="0" cellspacing="0" cellpadding="0">
<tr> 
   
  <?php
	include("dbconnect.php"); 
   	$abfrage = "SELECT * FROM wtv_link"; 
  	$ergebnis = mysql_query($abfrage); 
  	while ($row = mysql_fetch_object($ergebnis))
	{
	 echo "
		<tr> 
   <td width='177'><div align='left'><font face='Times New Roman, Times, serif'><strong>Jura:</strong></font></div></td>
    <td><div align='justify'><font face='Times New Roman, Times, serif'><a href='http://www.bverfg.de' target='_blank'>$row->NAME_DE</a></font></div></td>
  </tr>
  ";} ?>
</tr></table>
Ich habe den HTML Tag mal mitgepostet, weil der ja das Layout bestimmt.

Es wäre echt super von euch, wenn mir einer helfen könnte.

Danke schonmal im Vorraus,

WACSF
 
Hm denke sollte ned so schwer sein:

Code:
<?php
$str = '<table>';
for($i;$i=<MAX(KATID);$i++)  //Natürlich noch die max(katid) aus der db abfragen
{
       $str .= '<tr><td...>
               '.$Kategoriename.'</td>';
for($j;$j=<MAX(LinkID);$j++)  //Natürlich auch hier die max(linkid) noch aus der db abfragen in abhängigkeit von der kategorie! Also zB SELECT MAX(LinkID) FROM tbl_links WHERE kat=$Kategoriename muss innerhalb der 2. for schleife stehen!
 { 
                    $str .= '<td><a href="'.$Link.'>.'$linkname.'</td>'; 
}
               $str .='</tr>
}
$str .= '</table>';
echo $str; 
?>
Hoffe ich konnte dir helfen
 
Hi mslap.

Tausend Dank erstmal für Deine Hilfe, nur blick ich da noch nicht richtig durch. Könntest Du mir das vielleicht erklären, was Dein Script genau macht?

Danke schonmal im Vorraus,

WACSF
 
Ich steige da nicht durch. ich weiß nicht, was ich damit machen muss. argh, habe zwar die phpmanual gewälzt, checks aber trotzdem nicht.

Bye,

WACSF
 
Hehe, ok sorry war das Wochenende ned da.

Zum Verständnis.

Es sind 2 for schleifen.

Die erste baut dir immer die linke <td> deiner Tabelle auf in der deine Kategorien stehen sollen.
Die 2. ist in der 1. mit drin und kümmert sich um die rechten <td> deiner tabelle in denen deine links an sich stehen sollen.
--> Jedes mal wenn du ein linkes <td> mit einer kategorie füllst, kommt die 2. for schleife und füllt die rechte <td> mit den links.

Dementsprechend musst du eben dann deinen Ausgabestring zusammenbauen mit dem $str .= ... erweiterst du den string immer.

Für die For schleifen benötigst du natürlich auch einen Endwert. Der sollte bei der ersten for schleife die Anzahl deiner Kategorien sein -> max(KatID) auslesen.
Für die 2. musst du als Endwert die anzahl der links pro kategorie ermitteln. Das machst du eben mirt Max(LinkIS) from tbl where kat=$kategorie. Die Kategorie ist ja in einer Variable von der vorherigen for schleife gespeichert.
und zu guter letzt gibst dann einfach den string mit echo $str aus.

Hoffe jetzt checkst dus. wenn nicht schreib mir doch ne pn :)
 
Hi nochmal, ich gebe mal den Code an die Öffentlichkeit weiter. Vielleicht hat einer von euch eine Idee.
PHP:
<?php
include("dbconnect.php");
$abfrage_kat_max = "SELECT MAX(KATID) FROM wtv_link_kat";
$ergebnis_kat_max = mysql_query($abfrage_kat_max);

$str = '<table>';
for($i;$i<=$ergebnis_kat_max;$i++)
{
$abfrage_kat = "SELECT KATEGORIE_DE from wtv_link_kat WHERE KATID = ".$i."";
$KATEGORIE = mysql_query ($abfrage_kat);
$str .= '<tr><td>
'.$KATEGORIE.'</td>';
$abfrage_link_max = "SELECT MAX(LINKID) FROM wtv_link WHERE KAT_DE=".$KATEGORIE."";//<-CHANGE
$ergebnis_link_max = mysql_query($abfrage_link_max);

$abfrage_link = "SELECT NAME_DE, URL FROM wtv_link WHERE KAT_DE = ".$KATEGORIE."";//<-change
$result = mysql_query($abfrage_link); 

var_dump($result);


$URL=$result[1];
$NAME=$result[0];

for($j;$j<=$ergebnis_link_max;$j++)
{
$str .= '<td><a href="'.$URL["$j"].'>.'.$NAME[$j].'';
}



$str .='</td></tr>';
}
$str .= '</table>';
echo $str;
?>

Folgendes wird ausgegeben:

bool(false) bool(false) bool(false) bool(false) <a href=">.
Resource id #4
Resource id #5
Resource id #6


Wobei der SQL Conenct funktioniert. Anscheinend ist die $KATEGORIE irgendwie falsch.

Bye WACSF
 
Zuletzt bearbeitet:
hmm versuch mal das:
PHP:
<?php
include("dbconnect.php");
$get = mysql_query("SELECT kat.KATEGORIE,link.NAME_DE,link.URL FROM wtv_link_kat as kat, wtv_link as link WHERE link.KAT = kat.KATEGORIE ");
$str = '<table>';
while($row = mysql_fetch_array($get)){
    $str .="<tr>
   <td width='177'><div align='left'><font face='Times New Roman, Times, serif'><strong>".$row['KATEGORIE'].":</strong></font></div></td>
    <td><div align='justify'><font face='Times New Roman, Times, serif'><a href='".$row['URL']."' target='_blank'>".$row['NAME_DE']."</a></font></div></td>
  </tr>";
}
$str .= '</table>';
echo $str;
?>
(is net getestet!)
bei fragen meld dich.


Command
 
Hi Command,

im Prinzip, ist es das, was ich wollte, nur wird mir hier die Kategorie in jede Zeile geschrieben, schaut also so aus:

KAT1 Feld1
KAT1 Feld2
KAT1 Feld3
KAT2 Feld1
KAT2 Feld2
usw.

Ich wollte, dass die Kategorie einmal aufegelistet wird, direkt daneben der erste Link steht und danach die weiteren Links aufgeführt werden. also ungefähr so:
PHP:
Kategoriename1                           LINK1 der KATEGORIE1 
                                         LINK2 der KATEGORIE1 
                                                 usw. 

Kategoriename2                           LINK1 der KATEGORIE2 
                                         LINK2 der KATEGORIE2 
                                                 usw. 
                                                                           
    usw.

Bye und Danke!

WACSF
 
ja is mir auch aufgefallen sry:
PHP:
<?php
include("dbconnect.php");
$get = mysql_query("SELECT kat.KATEGORIE,link.NAME_DE,link.URL FROM wtv_link_kat as kat, wtv_link as link WHERE link.KAT = kat.KATEGORIE ");
$str = '<table>';
while($row = mysql_fetch_array($get)){
    $str .="<tr>";
   if($old_kat==$$row['KATEGORIE']) $str.="<td width='177'><div align='left'><font face='Times New Roman, Times, serif'><strong>".$row['KATEGORIE'].":</strong></font></div></td>";
   else $str.="<td width='177'></td>"
    $str.="<td><div align='justify'><font face='Times New Roman, Times, serif'><a href='".$row['URL']."' target='_blank'>".$row['NAME_DE']."</a></font></div></td>
  </tr>";
  $old_kat = $kategorie;
}
$str .= '</table>';
echo $str;
?>
Hoffe das geht besser/richtig ;)
War gestern net die zeit wo ich das norm mache *g*
 
PHP:
<?php 
include("dbconnect.php"); 
$get = mysql_query("SELECT kat.KATEGORIE_DE,link.NAME_DE,link.URL FROM wtv_link_kat as kat, wtv_link as link WHERE link.KAT_DE = kat.KATEGORIE_DE"); 
$str = '<table>'; 
while($row = mysql_fetch_array($get)){ 
    $str .="<tr>"; 
   if($old_kat==$row['KATEGORIE_DE']) 
   $str.="<td width='177'><div align='left'><font face='Times New Roman, Times, serif'><strong>".$row['KATEGORIE_DE'].":</strong></font></div></td>"; 
   else 
   $str.="<td width='177'></td>";
   $str.="<td><div align='justify'><font face='Times New Roman, Times, serif'><a href='".$row['URL']."' target='_blank'>".$row['NAME_DE']."</a></font></div></td> 
  </tr>"; 
  $old_kat = $kategorie; 
} 
$str .= '</table>'; 
echo $str; 
?>

Also irgendwie kommt bei mir nicht das richtige.

Er listet mir jetzt alle Inhalte 2 mal auf.

EINTRAG1
EINTRAG1
EINTRAG2
EINTRAG2
usw.

Und er gibt mir keine Kategorien aus.

Bye,

WACSF
 
Zurück