Hilfe bei der Ausgabe...
Matthias
- php
Hallo,
es ist ein wenig kompliziert aber ich hoffe jemand kann mir helfen.
Mehrere Artikel sind in einer Datenbank (MySQL) - Tabelle: "artikel" vorhanden.
Es gibt folgende Spalten:
Anschluss
Preis
Beschreibung
Artikelnummer
(idrandom, autoincrement, primärschlüssel)
Die meißten Artikel sind mit einer Beschreibung vorhanden. Jetzt gibt es aber welche wo ganz oben Beschreibung steht und dann mehrere Zeilen drunter sind z.B.
Normal siehts so aus:
Beschreibung: $Beschreibung
Anschluss Preis Artikelnummer
1,4 10.90 EUR 120123
Manchmal jedoch so:
Beschreibung: $Beschreibung
Anschluss Preis Artikelnummer
1,4 10.90 EUR 120123
1,2 20.10 EUR 102684
2,3 12.19 EUR 104133
Jetzt will ich mit ner Beziehung oder einer weitern Spalte in der ein Bezug steht, das z.B. 120123 zum 102684 mit reingehört., das so ausgeben wie's oben steht. Wenn's also ein Bezug gibt, das halt so wie oben "MANCHMAL JEDOCH SO" ausgeben.
Meine Abfrage ist momentan so:
$anfrage= "Select * from artikel";
$result = mysql_query($anfrage);
while($r=mysql_fetch_array($result))
{
hier wirds halt ausgegeben, aber ich krieg das so nicht hin wie ichs will
}
Ich hoffe ihr habts irgendwie verstanden, ist echt kompliziert... :)
Danke für euere Bemühungen
Hallo.
Also, wenn ich dich richtig verstehe, willst du die Artikel gruppieren, die die gleiche Beschreibung haben?
Oder wie meinst du das?
mfg
Hallo.
Also, wenn ich dich richtig verstehe, willst du die Artikel gruppieren, die die gleiche Beschreibung haben?
Oder wie meinst du das?mfg
Ja, wäre nicht schlecht.
Aber dann solls die Beschreibung halt nur einmal ausgeben :)
so wie's ich im Beispiel stehen hab...
danke
Dann gibts zwei Möglichkeiten.
Entweder (da weiß ich aber nicht genau, ob das geht, aber müsste eigentlich) du startest eine neue Abfrage, wo du dir alle Datensätze mit eben dieser Beschreibung ausgeben lässt.
Oder du legst dir einfach ein schönes Array an, wo du immer die Daten speicherst.
Zu letzerem:
Du guckst, ob die aktuelle Beschreibung schon mal im Array vorhanden ist, wenn nicht, fügst du sie und die dazugehörigen Daten hinzu.
Falls sie schon existiert, hängst du einfach die Daten an den schon vorhandenen Satz an.
So würde ich das jedenfalls tun.
Hope it helps
Zu letzerem:
Du guckst, ob die aktuelle Beschreibung schon mal im Array vorhanden ist, wenn nicht, fügst du sie und die dazugehörigen Daten hinzu.
Falls sie schon existiert, hängst du einfach die Daten an den
schon vorhandenen Satz an.
Wie kann ich schauen ob die aktuelle Beschreibung schonmal im Array vorhanden ist? Wie lautet das Script?
Danke
Matze
Wie kann ich schauen ob die aktuelle Beschreibung schonmal im Array vorhanden ist? Wie lautet das Script?
Danke
Matze
Lasse die finger von der Lösung....
Der Ansatz von Dir beinhaltet Dein Problem.
Lasse die finger von der Lösung....
Der Ansatz von Dir beinhaltet Dein Problem.
wie kann ich dies dann umsetzen?
Warum sollte ich meine Datenbankstruktur ändern? Ich habe nur eine Tabelle (Name: artikel)
da ist alles drin... :)
Nun stelle Dir mal vor die Beschreibung ändert sich nun mußt Du in allen Artikeln mit der gleichen Beschreibung die Daten ändern.
Das führt zu Redundanzen.
Besorge die mal ein paar Bücher zur Datenbanktheorie..
Ich hab grad mal die Antwort von Sorgenkind Mech durchgelesen ([pref:t=77131&m=444865])
Machs so, wie er es beschrieben hat. Das ist die einfachste Lösung.
Viel Erfolg
moins
wennich das jetz richtig verstanden habe müsste das so gehen:
du speicherst immer die letzte beschreibung und vergleichst dann im nächsten gelieferten result, ob sich die beschreibung geändert hat, und schreibst nur dann die neue beschreibung
beispiel:
echo "<table>";
$letztebeschreibung="";
$query=mysql_query("select * from artikel ORDER BY beschreibung");
while($r=mysql_fetch_assoc($query))
{
if($letztebeschreibung!=$r['beschreibung'])
{
echo "<tr><td colspan=3>Beschreibung: ".$r['beschreibung']."</td></tr>
<tr><td>Anschluss</td><td>Preis</td><td>ArtNr</td></tr>";
}
echo "<tr><td>".$r['anschluss']."</td><td>".$r['preis']."</td><td>".$r['artikelnummer']."</td></tr>";
}
gruß
Moin,
Zunächst einmal...
Wenn man keine Ahnung hat einfach mal nix sagen...
Deine Daten befinden sich so wie von Dir beschrieben in einer Tabelle?
Dann ändere dringend Deine DB Struktur.
Wenn neine dann verstehe ich nicht Deine Abfrage... Wo bleibt die 2 Tabelle.
Für mich hört sich das ganze nach Excel etc. an. Täusche ich mich da?
TomIRL
P.S. Sind zu jedem Artikel Beschreibungen vorhanden? ja/nein
Sind die Beschreibungen identisch (Buchstabengleich)? ja /nein
P.S. Sind zu jedem Artikel Beschreibungen vorhanden? ja/nein
Sind die Beschreibungen identisch (Buchstabengleich)? ja /nein
Ja sind zu jedem vorhanden...
Sind buchstabengleich, ja!
2x Ja...
P.S. Sind zu jedem Artikel Beschreibungen vorhanden? ja/nein
Sind die Beschreibungen identisch (Buchstabengleich)? ja /nein
Ja sind zu jedem vorhanden...
Sind buchstabengleich, ja!
Ideallösung:
Du lagerst die Artikelbeschreibungen in eine Seperate Tabelle aus.
Noch besser Du überdenkst die DB Struktur hinsichtlich der normalformen.
Nicht Ideal
SELECT ... Order by Beschreibung
in Deine while Schleife dann:
if ($var['beschreibung']!=$v_OLD)
print ("$var['beschreibung']");
$v_OLD=$var['beschreibung'];
print ("Die restlichen Artikel");
TomIRL