ilch Forum » Allgemein » HTML, PHP, SQL,... » Abfrage will nicht ganz...

Geschlossen
  1. #1
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    Hi,

    ich habe ein kleines Problemchen:

    Tabelle ic1_merkliste hat 3 Spalten:

    id - kfzid - uid
    1 - 33 - 3
    2 - 34 - 3
    3 - 35 - 3

    nun habe ich die Tabelle ic1_inserate, die hat ein paar mehr spalten, wichtig ist aber die id-spalte:

    id - .....
    33 - .....
    34 - .....
    35 - .....

    Der User mit der ID 3 hat also 3 Fahrzeuge in seine Merkliste gespeichert, die in der ic1_inserate Tabelle stehen. Als nächstes möchte ich meine Abfrage so gestalten, das mir ALLE Ergebnisse in einer While-Schleife ausgespuckt werden. Hier mal mein Code:

    // Abfrage der KFZ-ID aus der Merkliste
    $abfrage = 'SELECT `kfzid` FROM prefix_merkliste WHERE `uid` = "' . $_SESSION['authid'] . '" ORDER BY `kfzid`';
    $ergebnis = db_query($abfrage);
    while($row = db_fetch_object($ergebnis)) {
    		$kfzid = $row->kfzid;
    		}
    // Ergebnisse Anzeigen, wo KFZ-ID aus Merkliste = ID aus Inserate
    $abfrage2	 = 'SELECT `id`, `kraftstoff`, `ps`, `kw`, `marke`, `model`, `modelreihe`, `km`, `baumonat`, `baujahr`, `preis`, `beschreibung`, `bild1` FROM prefix_inserate WHERE `id` = (' . $kfzid . ') LIMIT '.$anfang.','.$limit;
    $ergebnis2	 = db_query($abfrage2);
    
    if(db_num_rows($ergebnis)>0)
    	{
    	if($inserat>0){
    			$inserat = '	<h3>Meine Merkliste</h3>
    								<div class="offer_details clearfix">
    									<div class="alert_box notice">Sie haben noch keine Inserate in Ihrer Merkliste.</div>
    								</div>';
    			}else{
    			$inserat = '';
    			}
    		while($row = db_fetch_object($ergebnis2)) {
    		echo $inserat;
    		echo '
    <div class="container clearfix">
    	<div class="content">
    		<div class="offer_details clearfix">';
    		echo' <h3>Meine Merkliste</h3>'; echo $entfernt;
    		echo '
    			<div class="offer_gallery">
    				<div class="gallery_images" style="width: 200px; height: auto">
    					<div id="gallery_images" style="width: 150px; height: auto">
    						<div class="gallery_image_item" style="width: 150px; height: auto">
    							<img src="include/images/inserate/suchergebnis/'; echo $row->bild1; echo '" alt="">
    							<a href="include/images/inserate/slider/'; echo $row->bild1; echo '" data-rel="prettyPhoto[gal]" style="width: 150px; height: auto">
    								<span>'; 
    				echo $row->marke; echo ' ';echo $row->model; echo ' ';echo $row->modelreihe; echo ' | '; echo number_format($row->preis,2, ",", "."); echo ' &euro;
    									<em class="ico_large"></em>
    								</span></a>
    						</div>
    					</div>
    				</div>
    			</div>
    			<div class="offer_aside">
    				<div class="offer_price">
    					<strong>'; echo $row->marke; echo ' ';echo $row->model; echo ' ';echo $row->modelreihe; echo '</strong><br>
    					<em>'; echo number_format($row->preis,2, ",", "."); echo ' &euro;</em>
    					<form action="index.php?suchergebnisdetail" method="post">
    						<input type="submit" class="btn_save" value="ANSEHEN"></input>
    						<input type="hidden" value="'; echo $row->id; echo '" name="id" id="id"></input>
    					</form>
    				</div>
    				<div class="offer_data">
    					<ul>
    						<li>'; echo $row->baumonat; echo '/';echo $row->baujahr; echo '</li>
    						<li>'; echo $row->km; echo ' KM</li>
    						<li>'; echo $row->kraftstoff; echo '</li>
    						<li>'; echo $row->ps; echo ' PS ('; echo $row->kw; echo ' KW)</li>
    					</ul>
    				</div>
    				<div class="offer_specification">
    					<p>'; echo number_format($row->km,0, ",", "."); echo ' KM</p>
    					<form action="index.php?merkliste" method="post">
    						<input type="hidden" value="'; echo $row->id; echo '" name="kfzid"></input>
    						<input type="submit" name="entfernen" id="entfernen" class="btn btn_orange" style="color: #FFFFFF; text-align: center; font-weight: bold" value="AUS LISTE ENTFERNEN"></input>
    						<br>
    				</div>
    			</div>
    		</div>
    	</div>
    </div>
    			<hr>';
    			}
    	}else{
    	echo '<div id="middle" class="full_width">
    	<div class="container clearfix">  
    		<!-- content -->
    		<div class="content">
    			<h3>Meine Merkliste</h3>
    				<div class="offer_details clearfix">
    					<div class="alert_box notice">Sie haben noch keine Inserate in Ihrer Merkliste.</div>
    				</div>
    		</div>
    	</div>
    </div>';
    }
    $tpl->out(1);
    $design->footer();


    Ich weiss das ich da einen Fehler habe, unzwar bei der KFZID - diese wird mir vorher in einer While-Schleife ausgegeben und ich habe sie als variable definiert und in die nächste Abfrage mit übernommen, da ist es klar, das ich immer nur 1 Datensatz angezeigt bekomme... aber wie löse ich das Problem?


    verwendete ilch Version: 1.1 P
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Also du willst einfach alle auf der Merkliste gespeicherten Inserate eines Benutzers auslesen?

    Also alle Einträge der Merkliste mit UID=3 mit den Daten aus Inserate anhand der KFZID verknüpfen?

    So ist es jetzt:
    - Merkliste
    --- Inserat 1

    So soll es sein:
    - Merkliste
    --- Inserat 1
    --- Inserat 2
    --- Inserat 3

    Liege ich mit der Annahme richtig?

    Dann solltest du das am besten alles in ein SELECT verpacken und nicht in getrennte.

    SELECT * FROM prefix_merkliste JOIN prefix_inserate ON prefix_merkliste.kfzid = prefix_inserate.id WHERE prefix_merkliste.uid = {AUTHID}


    Dann eben ganz normal deine while-Schleife und du hast im $row dann eben alles von prefix_merkliste und prefix_inserate, solange die Spalten nicht den gleichen Namen haben jedenfalls.

    Habs jetzt nur schnell ausm Kopf getippt, hoffe ich hab keinen Fehler eingebaut.

    PS: Und bitte, bitte Templates verwenden. Der Code ist so schwer lesbar...


    Zuletzt modifiziert von dastiii am 08.03.2014 - 14:05:06
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    Super, das hat mir sehr geholfen!! Vielen Dank!
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten