SELECT ergebnisse aussondern

thomsonz

Mitglied
Hallo liebe php-freunde,
Ich möchte gerne nach einer SELECT-Abfrage die Ergebnisse aussortieren.
folgender Grund:

ich greife auf eine tabelle namens weiterreise zu. diese besteht aus einer von_id und einer nach_id. und weiteren feldern die aber nicht relevant sind. Danach nehme ich mir die von_id und schaue in einer anderen Tabelle(ortstabelle) nach und hole mir weitere Daten(wie beschreibung des Orts). Dies klappt alles gut. Mein Problem ist nur, wenn mehrmals die gleiche von_id kommt (Datensatz1: von Ort 1 nach Ort 2, Datensatz2: von Ort 2 nach Ort1 & Datensatz3: von Ort1 nach Ort3) werden die Daten (logischerweise) auch immer wieder ausgegeben. Nur das will ich nicht. Wie kann ich dieses Problem lösen?
 
Okay ich habs grad wieder versucht zusammen zu basteln
PHP:
$query1 = "SELECT * FROM reiseplaner WHERE user_id='".$_SESSION['user']['id']."' ORDER BY id";
	
		$result4 = mysql_query($query1) or die("Anfrage fehlgeschlagen: " . mysql_error());
		
		if (mysql_num_rows($result4) != "0"){

			$thisreiseplan = '<table width="100%" border="0" cellpadding="0" cellspacing="0">'."\n";
			
			$i = 0;
			while ($row = mysql_fetch_assoc($result4)) {
			$thisreiseplan .= '<tr>'."\n";
			$thisreiseplan .= '<td colspan="8" align="center" height="40" valign="top"><b>------------Anfang detaillierte Beschreibung der Station: '.$row['von']. '------------</b></td>'."\n";
			$thisreiseplan .= '</tr>'."\n";
			$thisreiseplan .= '<tr>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" width="100" align="center">Unterkunft</td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" width="100" align="center">von</td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" width="100" align="center">nach</td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" width="60" align="center">mit</td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" width="300" align="center">Info</td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" align="center">Links</td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" align="right">Dauer </td>'."\n";
			$thisreiseplan .= '<td class="travel_table" valign="top" align="right">Preis </td>'."\n";
			
			$thisreiseplan .= '</tr>'."\n";
	
				$i++;
				if($i % 2 == 0) $bgcolor = '#EEEEEE'; else $bgcolor = '#EEEEEE';
				$thisreiseplan .= '<tr bgcolor="'.$bgcolor.'">'."\n";
				
				$thisreiseplan .= '<td class="travel_td" valign="top" align="left">'."\n";
				
				if($row['unterkunft_id'] != 0){

					$query = "SELECT * FROM unterkuenfte WHERE id='".$row['unterkunft_id']."' ";

					$resultu = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
					
					if (mysql_num_rows($resultu) != "0"){
						
						while ($rowu = mysql_fetch_assoc($resultu)) {
							$unterkunft = $rowu;
							}
						}
					else{
						$unterkunft['name'] = '';
						$unterkunft['adresse'] = '';
						$unterkunft['info'] = '';
						$unterkunft['kontakt'] = '';						
						}
						
					$thisreiseplan .= $unterkunft['name'].'<br />'.$unterkunft['adresse'].'<br />'.$unterkunft['info'].'<br />'.$unterkunft['kontakt'].'<br />';
					}				
				
				
				
				$thisreiseplan .= '<td class="travel_td" valign="top">'."\n";
				
				if ($row['von_id'] != 0) {
					$thisreiseplan .= '<a href="index.php?f=anzeigen&stadt='.$row['von_id'].'">'.$row['von'].'</a>'."\n";
					}
				else{
					$thisreiseplan .= $row['von'];
					}				
				
				$thisreiseplan .= '</td>'."\n";
				
				$thisreiseplan .= '<td class="travel_td" valign="top">'."\n";
				
				if ($row['nach_id'] != 0) {
					$thisreiseplan .= ''.$row['nach'].''."\n";
					
					}
				else{
					$thisreiseplan .= $row['nach'];
					}				
				
				$thisreiseplan .= '</td>'."\n";
				
				$thisreiseplan .= '<td class="travel_td" valign="top">'.$row['transportmittel'].'</td>'."\n";
				$thisreiseplan .= '<td class="travel_td" valign="top">'.$row['infos'].'</td>'."\n";
				$thisreiseplan .= '<td class="travel_td" valign="top">'.$row['links'].'</td>'."\n";
				$thisreiseplan .= '<td class="travel_td" valign="top" align="right">'.$row['dauer'].'</td>'."\n";
				$thisreiseplan .= '<td class="travel_td" valign="top" align="right">'.$row['preis'].'</td>'."\n";
		
				$thisreiseplan .= '</tr>'."\n";
				$thisreiseplan .= '<tr>'."\n";
				$thisreiseplan .= '<td colspan="8" height="50">Beschreibung von '.$row['von']."\n";
				
				if($row['von_id'] != 0){
//  Hier wird die SELECT Anfrage gemacht !! //
					$queryd = "SELECT * FROM staedte WHERE id='".$row['von_id']."' ";

					$resultd = mysql_query($queryd) or die("Anfrage fehlgeschlagen: " . mysql_error());
					
					if (mysql_num_rows($resultd) != "0"){
						
						while ($rowd = mysql_fetch_assoc($resultd)) {
							$stadt = $rowd;
							}
						}
						else{
						$stadt['beschreibung'] = '';						
						$stadt['infos'] = '';
						}
						
					$thisreiseplan .= $stadt['beschreibung'].'<br /><hr />';
					$thismap = str_replace(" ", "_", $stadt['name'])."-map.jpg";
					$thismap ='<img src="template/image/city_maps/'.$thismap.'" width="" alt="'.$stadt['name'].'" />';
					
					$thisreiseplan .= $stadt['infos'].'<br /><hr />';
					}	
				$thisreiseplan .= '</td>'."\n";
				$thisreiseplan .= '</tr>'."\n";	// Ende Beschreibung Stadt

Hatte eigentlich schon daran gedacht ihn komplett neu zu machen
 
Hi,

na ja, ich blicke zwar nicht, was die erste Abfrage für Ergebnisse liefert, dass $row['von_id'] da mehrfach vorkommen kann (im Kreis fahren?), aber Du könntest Dir die IDs, von denen Du die Infos schon gelesen hast, ja in einem Array zwischenspeichern und nur Abfragen, wenn die ID nicht in diesem Array enthalten ist.

LG

Nachtrag: So ganz allgemein sieht es aber aus, als wenn man das anders lösen sollte, weil: DB-Afragen in einer Schleife...
Überleg Dir vielleicht die DB-Struktur nochmal und ob das nicht über Joins hinzubekommen ist.
 
Zuletzt bearbeitet:
Zurück