PHP Problem mit Ausgabe

darcoda

Cadet 2nd Year
Registriert
Sep. 2005
Beiträge
30
Hallo,

ich habe zur Zeit ein kleines Problem mit einer Ausgabe von einer SQL-Tabelle.
Es handelt sich um die Ausgabe der Mitglieder die noch eine Verlinkung erhalten.

Erstmal den Code:

PHP:
<?
require("config/mysql.inc.php");
$sql = @mysql_query("SELECT * FROM gruppen");
while($row = @mysql_fetch_array($sql)) {
$mitglieder .= $row['mitglieder'];
$on = $mitglieder;          
$ony = explode(",", $on);
$i = 0;
foreach ($ony as $value) {
if ($i >0) 
$dmitglieder = '<a href="gb.php?u='.$value.'">'.$value.'</a> ';
$i++;
}
$tabelle = '<table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="10%"><strong>Gruppenname</strong></td>
        <td width="50%"><strong>Mitglieder</strong></td>
        <td width="20%"><strong>Gründer</strong></td>
		<td width="20%"><strong>Bild</strong></td>
      </tr>';
$eintraege .= '<link href="style.css" type="text/css" rel="stylesheet" />
        <tr>
        <td>'.$row['name'].'</td>
        <td>'.$dmitglieder.'</td>
        <td>'.$row['gruender'].'</td>
        <td><img src='.$row['img'].'></td>
      </tr>';
      }
$ende = '</table><br />';
echo $tabelle, $eintraege, $ende;
?>

Ausgabe in Zeile 1 ist richtig: Dennis Kiki
Ausgabe in Zeile 2 dann aber: Dennis Kiki Kiki Dennis
Richtig wäre in Zeile 2: Kiki Dennis

Das aus Zeile 1 wird in Zeile 2 mitkopiert. Will ich ja nicht. Jemand eine Idee?
Edit: Aus dem SQL werden alle Zeilen der Tabelle ausgelesen... (Zum Verständnis)
 
Zuletzt bearbeitet:
du kannst es auch als PHP script hier eingeben... edit ma dein text ;)
will ja kein schwein sowas lesen wo man keine outtakes sehen kann :D
 
PHP:
$mitglieder .= $row['mitglieder'];
$on = $mitglieder;
hmm dass heisst....
du liest ein aus den array...
wie kannst du explode machen wenn du keine "," hast?

kann man schwer was erkennen wenn du mit DB arbeitest und wo man keine DB struktur sehen kann.

ich verwende immer wenn ich mysql arbeite oder SQL generell den fetch_assoc.
 
id name |gruender |mitglieder
1 Gruppe1 |Dennis |Dennis,Kiki
2 Gruppe2 |Kiki.......|Kiki,Dennis

So ist derzeit der Inhalt der DB.
 
Zuletzt bearbeitet:
Ein Mitadmin gab mir die Lösung.

PHP:
<?
require("config/mysql.inc.php");
$sql = @mysql_query("SELECT * FROM gruppen");
while($row = @mysql_fetch_array($sql)) {
unset($dmitglieder);
$mitglieder = $row['mitglieder'];
$on = $mitglieder;
$ony = explode(",", $on);
$i = 0;
foreach ($ony as $value) {
if ($i >0)
$dmitglieder .= '<a href="gb.php?u='.$value.'">'.$value.'</a> ';
$i++;
}
$tabelle = '<table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="10%"><strong>Gruppenname</strong></td>
        <td width="50%"><strong>Mitglieder</strong></td>
        <td width="20%"><strong>Gründer</strong></td>
		<td width="20%"><strong>Bild</strong></td>
      </tr>';
$eintraege .= '<link href="style.css" type="text/css" rel="stylesheet" />
        <tr>
        <td>'.$row['name'].' (Info)</td>
        <td>'.$dmitglieder.'</td>
        <td>'.$row['gruender'].'</td>
        <td>Mitglied werden</td>
      </tr>';
      }
$ende = '</table><br />';
echo $tabelle, $eintraege, $ende;
?>

Der Punkt erstens ist weg und es fehlte ein unset... :/
 
also ich kann dir die komplette klasse geben was ich selbst entwickelt habe... aber der ausschnitt hier sollte reichen!


PHP:
		function Select($query){
			$result = null;
############
#			return $query;					//debug
############
			$this->query = $query;                   //debug intern
			if(!$sql = mysql_query($query)){
				$this->error .= "Fehler beim Ausführen von Select: ".mysql_error().'\n';
				return (string)(mysql_error().'</br>'.$query);
			}
			if(preg_match('/^select/', $query))
			{
				$this->affected = mysql_num_rows($sql);
			}
				else
			{
				$this->affected = mysql_affected_rows();
			}
			
			while($data = mysql_fetch_assoc($sql)){
				$result[] = $data;
				//$this->test_data[] = $data;
			}
			
			$this->all .= $this->query."<br/>";			//----->>SQL HISTORY
			
			return $result;
		}

musst du halt drauf achten.... diese funktion, oder besser gesagt methode... auf klasse ausgelegt worden war/ist. Bisschen umschreiben und du kannst die als STANDALONE benutzen.

Wenn alles glatt gelaufen ist kriegst du einen ARRAY mit deinen daten zurück...
musst dann nur durch die schleife der länge des arrays durchführen.

array sieht so aus...
PHP:
           result[0] = {
                                ["id"] ={"1"},  
                                ["name"]={"gruppe1"},
                                ..........
                             }
           result[1] = {
                                ["id"] ={"2"},  
                                ["name"]={"gruppe2"},
                                ..........
                             }
 
Ich weiß noch nicht ganz, ich bin derzeit am Überlegen ob ich die ganze Struktur überarbeite (mehrere Tabellen mit ID-Verlinkung).

Denn die Mitglieder in der Art hinzuzufügen ist doch ein ordentlicher Aufriss.

Hat jemand eine Idee wie ich das am elegantesten Löse?

Liebe Grüße
Dennis
 
Code:
tabelle 1
id    data    data2

tabelle 2
id    tabelle1.id    data    data2

jetzt sind die 2 so verlinkt dass du die joinen kannst!
 
Zurück
Oben