php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-08-2010, 16:15
SqlPhpNovize
 Registrierter Benutzer
Links : Onlinestatus : SqlPhpNovize ist offline
Registriert seit: Aug 2010
Beiträge: 8
SqlPhpNovize befindet sich auf einem aufstrebenden Ast
Standard Mehrere Zeilen einer Tabelle in eine Ergebniszeile, Gruppenbruch?

Hallo,
ich habe eine Namenstabelle, die über den Schlüssel IDNamen mit einer Berufstabelle verknüpft ist. Namen sind Unikate, aber jeder Name kann mehrere Berufe haben (1:n). Wie bekomme ich jetzt bei einer Abfrage (select) die verschiedenen Berufe in eine Ergebniszeile? Ich habe gelesen, dass das mit einem "Gruppenbruch" funktionieren solle, habe aber nicht wirklich eine Ahnung wie das gegen soll, WEIL:
Ich gebe die Daten mit einer Tabellenfunktion aus, die schon ein Array benutzt. Ein Array im Array, geht das?
PHP-Code:
function tab_out($result)
{
$num mysql_num_rows($result);
for (
$j 0$j $num$j++)
{
$row mysql_fetch_array($result);
echo 
"<table width='100%' border='0' cellspacing='2' cellpadding='0' height='16' class='texttab'>";
echo 
"<tr><td>$row[0]</td></tr>"//es gibt die $rows[0-15] 
Die Berufe sind im $row[13] (neben anderen Daten aus den Tabellen). Soll das dann $row[13.1] sein, oder wie?

Ich könnte auch in der Ursprungstabelle selbst alle Berufe einer ID in ein Feld kopieren, was aber keine sehr elegante Lösung ist.

Sorry für die blöde Frage. Danke

Geändert von SqlPhpNovize (15-08-2010 um 10:17 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-08-2010, 16:18
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Und wo liegt jetzt dein Problem?

Wenn du dich über das Verfahren des Gruppenbruchs informiert hast, und verstanden hast, was zu tun ist - dann brauchst du es doch nur noch umsetzen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 14-08-2010, 16:36
SqlPhpNovize
 Registrierter Benutzer
Links : Onlinestatus : SqlPhpNovize ist offline
Registriert seit: Aug 2010
Beiträge: 8
SqlPhpNovize befindet sich auf einem aufstrebenden Ast
Standard

Das ist ja das Problem, dass ich nicht verstehe, wie man das umsetzen muss. Bin Anfänger. Verstehe eben nicht, wie ich die Schleife, die je Durchlauf die Ergebnisse aus der Datenbank ausgibt, dazu bringe, die Daten des nächsten, übernächsten Durchlaufs vorauszunehmen und schon beim ersten Mal als gemeinsamen String auszugeben. Da müßte ich ja für jede Spalte, die Mehrfachwerte hat, nochmal eine "interne" Schleife programmieren, die alle Ergebnisse der Spalte ausgibt.

Geändert von SqlPhpNovize (15-08-2010 um 08:43 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 15-08-2010, 00:00
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

hilft dir mein Blogeintrag zu dem Thema vielleicht weiter?

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 15-08-2010, 09:19
SqlPhpNovize
 Registrierter Benutzer
Links : Onlinestatus : SqlPhpNovize ist offline
Registriert seit: Aug 2010
Beiträge: 8
SqlPhpNovize befindet sich auf einem aufstrebenden Ast
Standard Gruppenbruch

Vielen Dank, schon frustrierend, dass alles was ich nicht verstehe immer so einfach zu lösen ist.
Aber doch nicht ganz: Habe meinen Code folgendermaßen ergänzt ($row[19] enthält die ID).
ALT:
PHP-Code:
echo "<tr><td>"; echo mysql_field_name($result,13); echo "</td>";
echo 
"<td>$row[13]</td></tr>"
NEU:
PHP-Code:
echo "<tr><td>"; echo mysql_field_name($result,13); echo "</td>";
$array = array(); 
foreach (
$rows as $row) { 
$array[$row[13]][$row[19]][] = $row

echo 
"<td>$array</td></tr>"
Leider bekomme ich da die Fehlermeldung:
Invalid argument supplied for foreach()

Danke
Robert

Geändert von SqlPhpNovize (15-08-2010 um 09:39 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 15-08-2010, 09:35
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Bitte bearbeite jetzt erstmal deine Beiträge mit dem -Button, danach [Erweitert] und dort benutzt du die Code-Tags (siehe meine Signatur).

Danach überlegst du mal, warum es bei dir keine Variable $rows gibt, aber dennoch irgendetwas aus dem man mehrmals eine $row abrufen kann und ob du nicht lieber das Ding an Stelle der foreach-Schleife benutzen willst.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 15-08-2010, 09:47
SqlPhpNovize
 Registrierter Benutzer
Links : Onlinestatus : SqlPhpNovize ist offline
Registriert seit: Aug 2010
Beiträge: 8
SqlPhpNovize befindet sich auf einem aufstrebenden Ast
Standard

Hallo Freundin der Nacht!

Habe meinen Beitrag geändert
Aber ich stehe wohl immer noch auf der Leitung:
Du meinst wohl die Result-Variable, aber das funzt auch nicht

PHP-Code:
foreach ($result as $row) { 
    
$array[$row[13]][$row[19]][] = $row

Amicus Aurorae

Geändert von SqlPhpNovize (15-08-2010 um 09:50 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 15-08-2010, 09:54
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

In deinem Falle musst du ganz von dem foreach weg und mit
PHP-Code:
while ($row mysql_fetch_array($result)) {
    
// ...

arbeiten. Wenn dich diese Zahlen (z. B. $row[13]) nicht glücklich machen, nimm mysql_fetch_assoc. Dann kannst du auf die Felder mit Spaltennamen zugreifen (z. B. $row['first_name']).

Bitte auch den ersten Beitrag noch anpassen. Danke.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (15-08-2010 um 09:57 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 15-08-2010, 10:46
SqlPhpNovize
 Registrierter Benutzer
Links : Onlinestatus : SqlPhpNovize ist offline
Registriert seit: Aug 2010
Beiträge: 8
SqlPhpNovize befindet sich auf einem aufstrebenden Ast
Standard

"nimm mysql_fetch_assoc" -> werde ich machen, super Tipp!

Ich habe das jetzt so geändert:
PHP-Code:
echo "<td width='93%'>";
while (
$row mysql_fetch_array($result)){ 
echo 
$row[13]." ";
}
echo 
"</td></tr>"
Beim ersten Datensatz, der Berufsangaben enthält, werden die Berufe auch richtig aneinandergereiht.
Aber alle folgenden Daten werden unterdrückt.

Das Ergebnis (bitte etwas nach unten scrollen):

http://www.oeaw.ac.at/kmf/cvp/demos/...p#$Name="Klug"

Danke Robert
Mit Zitat antworten
  #10 (permalink)  
Alt 15-08-2010, 10:52
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich meinte das so:
PHP-Code:
$array = array();
while (
$row mysql_fetch_array($result)) { 
    
$array[$row[13]][$row[19]][] = $row

Dann siehst du dir erstmal in aller Ruhe mit print_r an, wie $array aufgebaut ist und überlegst deine weiteren Schritte.

Zitat:
Zitat von SqlPhpNovize Beitrag anzeigen
http://www.oeaw.ac.at/kmf/cvp/demos/Bio.php#$Name="Klug"
Da kommt (nach einiger Zeit) nur:

Zitat:
Notice: Undefined index: Bio in /usr/local/www/data/kmf_cvp/demos/Bio.php on line 6

Notice: Undefined index: Jahrmin in /usr/local/www/data/kmf_cvp/demos/Bio.php on line 7

Notice: Undefined index: Jahrmax in /usr/local/www/data/kmf_cvp/demos/Bio.php on line 8
Incorrect key file for table '/tmp/#sql_a5d_0.MYI'; try to repair it
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #11 (permalink)  
Alt 15-08-2010, 11:24
SqlPhpNovize
 Registrierter Benutzer
Links : Onlinestatus : SqlPhpNovize ist offline
Registriert seit: Aug 2010
Beiträge: 8
SqlPhpNovize befindet sich auf einem aufstrebenden Ast
Standard

Sorry, ich bekomme das nicht hin, trotzdem vielen Dank. Das Problem liegt wohl am ($row = mysql_fetch_array($result), das ja schon am Anfang der Tabellenausgabe steht, also in deiner while-Schleife ein zweites Mal erscheint. Das verträgt sich irgendwie nicht. Ich werde Wohl oder Übel jemanden dafür engagieren müssen. Vielleicht kennst ja jemanden, der so kleine Sache gegen Bezahlung macht.
LG Robert
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
gruppenbruch, gruppierung, mysql, tabelle


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[MySQL] Eine Tabelle, mehrere Nutzer - Zeilen sperren (lock)? FeGm SQL / Datenbanken 3 24-04-2010 10:31
[Funktion] Mehrere Zeilen als eine Ausgeben knoebi PHP Developer Forum 4 31-08-2007 16:16
subqueries - mehrere zeilen in einer zeile zusammenfassen extr3m0 SQL / Datenbanken 1 08-03-2007 14:21
Mehrere Zeilen einer Datenbank gleichzeitig updaten crisu SQL / Datenbanken 1 10-05-2005 23:05
Mehrere Zeilen einer MySQL Tabelle ausgeben... avatarX PHP Developer Forum 4 17-03-2005 01:33

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:54 Uhr.