jeder Tupel wird doppelt ausgegeben?

thehasso

Erfahrenes Mitglied
Hallo ich hab ne SQL Abfrage bei der komischerweise jeder gefunde Tupel 2 mal hinterinander ausgegeben werden. Saß jetzt schon was länger dran und konnte den Fehler nicht findendeswegen bitte Ich irgendjemand hier aus dem Forum mir zu helfen....



PHP:
<?php //***********************************ANZEIGE DES FREUND BEI USER A*************************************************


$zahl = $_SESSION['MM_UserId']; //für einlogge seite mit sesssion, !! für fremde ohne mit get


   require_once('dataBaseConnection.php');

$kein_freund = 0;

$SQL = "SELECT empfaenger, empfaenger_id FROM `freunde` 
WHERE (`sender_id`='".$zahl."' 
AND `empfaenger_id` != '".mysql_real_escape_string($zahl)."' 
AND `accept` != '".mysql_real_escape_string($kein_freund)."') ";



    $REC = mysql_query($SQL) or die(mysql_error());
    $RECrows = mysql_num_rows($REC);
    echo "<br/>anzahl $RECrows";
	
    while($Datensatz = mysql_fetch_assoc($REC)){
   
			//$record['bild'] = $Datensatz['dateiname'];
			$record['name'] = $Datensatz['empfaenger'];
			$record['nummer'] = $Datensatz['empfaenger_id'];
echo $record['nummer'];
echo "<br/>";

       $DATI['SEARCH'][] = $record;
	   
	   
  }

  
?>
<?php 
if ($RECrows > 0 ) foreach($DATI['SEARCH'] as $searchEntry): 
$nummer = htmlentities($searchEntry['nummer']);
?> 

<?

$sql =sprintf("SELECT strVorname, strNachname, intID, dateiname 
				FROM tblbenutzer WHERE intID = '%s'",$nummer); 
// hier werden die ID nummern der freunde eingefügt, um die Bilddatei dessen FREND auszulesen. 

		 $rec = mysql_query($sql) or die(mysql_error());
  		$Datensatz = mysql_fetch_assoc($rec);

			$bild = $Datensatz ['dateiname']; // hier wird das bildname der Variable Bild zugewiesen.
			$intID = $Datensatz ['intID'];
			$strVorname = $Datensatz ['strVorname'];
			$strNachname = $Datensatz ['strNachname'];
		

$SQL = sprintf("SELECT * FROM  tbluser_profile
			   WHERE intID = '%s'", mysql_real_escape_string($nummer));

		$REC = mysql_query($SQL);
   
    	$RECset = mysql_fetch_assoc($REC); 
		
$mache_gerade = $RECset["mache_gerade"]; 

if ($mache_gerade != NULL ){
	
echo "<table width='100%' border='0'>
  <tr>
    <td><img src='kleinebilder/$bild' width='40' height='70' /></td>
    <td>$strVorname $strNachname <br/><font color='#FFFFFF' size = '1'>$mache_gerade</font></td>
  </tr>
</table>";  
}


?>



<?php endforeach; ?>



Danke im voraus!
 
Zuletzt bearbeitet:
Sorry hatte eben den falschen code drin, hab ihn korrigiert.

Jetzt müsste es ersichtlich sein. Aus der ersten SQL ABFRAGe ermittle ich alle freunde eines Users und in den anderen zwei lese ich einmal die Namen und einen Was er gerade macht Status aus.
 
Welches deiner vielen SQL gibt das ?Tupel? zuviel aus?

PS: Code-Formatierung und sauberes Einrücken desselben scheint mit dem Würfel gemacht zu sein. Habe Kopfschmerzen vom Versuch da zu sehen welche Schleife wo endet etc.
Dauerndes ?><?php bringt auch nichts zur Verständigung.
Auf gut Deutsch. Hab nach 10 Zeilen Aufgegeben den Code zu verstehen.
 
Also mir tut es auch leid, dass ich dir keine "schnelle" Lösung geben kann. Soweit ich deinen Code verstehe - was schwierig ist - müsste es richtig laufen. Vielleicht hast du doppelte Einträge in deiner Freunde-Tabelle.

Unabhängig davon möchte ich dir ans Herz legen, mit dieser Datei nochmal von vorn anzufangen. Manchmal ist das nötig und gerade wenn man Anfänger ist, lernt man sehr viel, wenn man etwas neu schreibt und versucht, besonderen Wert auf Übersichtlichkeit und Einheitlichkeit zu legen. Folgendes fiel mir nämlich auf:

1. Du verwendest mehrfach völlig sinnlos <?php ... ?>
Das macht man nur, wenn man HTML-Code einfügt.

2. Für Schleifen und Abfragen verwendest du zwei unterschiedliche Varianten. Das würde ich vereinheitlichen.
Also entweder: foreach - endforeach, if - endif, while - endwhile
oder foreach { ... } und das gleiche auch bei if und while.

3. Dein SQL escapest du mal mit sprintf und mal ohne. Ich finde die sprintf-Variante gut, weil sie viel besser lesbar ist. Das würde ich an deiner Stelle konsequent durchziehen.

4. $nummer = htmlentities($searchEntry['nummer']);
Wenn ich das richtig sehe, setzt du $nummer später in dein SQL ein. Da bringt dir htmlentities wenig, sonder mysql_real_escape_string()

5. <font color='#FFFFFF' size = '1'>
Das ist Steinzeit. Schau dir bei Gelegenheit CSS an.

6. Einrückungen.
Wenn du eine Chance haben willst, deinen Code auch in einem Jahr noch zu verstehen, dann versehe ihn mit Kommentaren und achte unbedingt auch Einrückungen.

7. SQL joins
Das wird nun wahrscheinlich zuviel für dich sein. Aber in SQL kannst du mehrere Tabellen gleichzeitig ansprechen. Wahrscheinlich kannst du deine drei SQL-Anfragen in einer einzigen zusammenfassen.
 
Zurück