Zeilen nebeneinander

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeilen nebeneinander

    So,

    mal ein großes Problem bei mir.
    Ich habe eine schöne DB, die alles macht was der AG will.
    Nun ist er auf den Trichter gekommen, schöne Excel
    Dateien als Übersichtlisten haben zu wollen. Kein Problem

    Aber, er will Daten, die in verschiedenen Tabellen stehen,
    nebeneinander haben.

    Also sowas

    tab_doc
    ======
    doc_id
    titel
    ...


    tab_doc_2_autor
    ============
    doc_id
    autor_id

    tab_autor
    =======
    autor_id
    name
    ...


    Er will alle Documente habe,
    und dazu in der selben Zeile alle Autoren

    Irgendjemand ne Idee, Ansatz, ... wie
    man sowas möglichst einfach hinbekommt?

    Wenn möglich mit einer SQL Anweisung, dann
    kann ich gleich mein fertiges Export Modul nutzen.
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    meinst du etwas in der art:
    http://www.php-resource.de/forum/sho...threadid=25201
    Kissolino.com

    Kommentar


    • #3
      nö, der will ne Excel Datei in der Art


      | doc_id | titel | Name1, Name2, Name3, ... |
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        OffTopic:
        geht doch nix über kreative kunden


        wie wärs damit:
        PHP-Code:
        $sql "SELECT tab1.*, tab2.* FROM tab1, tab2";
        $result mysql_query($sql,$conn) or die (mysql_error());
        while(
        $row mysql_fetch_array($result,MYSQL_NUM))
        {
            
        $ausgabe[] = $row;
        }
        print_r($ausgabe); 
        - damit hast du alle inhalte
        - die feldnamen (als spaltentitel) zu holen, dürfte kein akt sein
        - der rest sollte eine spielerei mit arrays sein
        Kissolino.com

        Kommentar


        • #5
          @wurzel: ich glaub nicht ganz!

          Denke das ist ein Fall für zwei Abfragen...
          Anders müsstest du immer das Ergebnis Prüfen. Was glaube ich nicht so gut ist.

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            @wurzel: ich glaub nicht ganz!

            Denke das ist ein Fall für zwei Abfragen...
            Anders müsstest du immer das Ergebnis Prüfen. Was glaube ich nicht so gut ist.
            => ergebnis prüfen?

            weitere abfragen sind eh nötig. die spaltennamen kriegst du nur in einem
            rutsch, wenn's keine dubletten in den spaltennamen gibt.

            ohne dubletten kann man's ganz elegant mit einer abfrage und einer
            kombimierten for/foreach schleife ausgeben.

            oder bin ich blöd ? (=> kein spruch getz )

            belehr mich.
            Kissolino.com

            Kommentar


            • #7
              die spaltennamen (um sie oben drüber zu schreiben) interessieren hier glaube ich noch am wenigsten. da hatte ich mich jetzt gar nicht drum gekümmert. Die werden denke ich mal sowieso von hand gemacht.

              es ging hier hauptsächlich um die daten. und da kommst du mit deinem script glaube ich nicht ganz so weit.

              Kommentar


              • #8
                Re: Zeilen nebeneinander

                Original geschrieben von TBT
                Er will alle Documente habe,
                und dazu in der selben Zeile alle Autoren
                ich würde erstmal beide tabellen in arrays einlesen.

                dann gehst du das array mit den dokumenten durch, und legst ein weiteres assoziatives array an. die dokumente verwendest du hier als schlüssel.

                $neuesarray[$dokumentname] .= $autorarray[$autorid];

                wenn zu dem dokument noch kein array-eintrag existiert, legt php diesen ja automatisch an.
                und jeder autor wird einfach hinten drangehangen, so dass du sie nachher alle als einen string vorliegen hast (trennzeichen o.ä. kannst du ja noch einfügen).
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  hab jetzt nen Würgaround.
                  Hoffe das alle anderen Listen per Standardmodul exportiert
                  werden können.
                  Und ja, der Kunde ist kreativ - aber nicht kreativ genug !

                  PHP-Code:
                  $res $query->select('    SELECT 
                                              m.man_id                                msnoconf,
                                              \'\'                                    msnrpss,
                                              \'\'                                    issue,
                                              \'\'                                    series,
                                              concat(u1.vorname,\' \',u1.name)        authors,
                                              m.titel                                    title,
                                              \'\'                                    mspages,
                                              \'\'                                    figs,
                                              \'\'                                    received,
                                              \'\'                                    revised,
                                              \'\'                                    accepted,
                                              concat(u1.vorname,\' \',u1.name)        corrauthor,
                                              u1.mail                                    email,
                                              u1.fax                                    fax,
                                              s.bezeichnung                             status,
                                              DATE_FORMAT(m.datum,\'%d.%m.%Y\')        date,
                                              concat(u.vorname,\' \',u.name)            referee1,
                                              \'\'                                    referee2,
                                              \'\'                                    referee3,
                                              \'\'                                    referee4,
                                              \'\'                                    referee5,
                                              \'\'                                    referee6,
                                              \'\'                                    referee7,
                                              \'\'                                    referee8,
                                              \'\'                                    referee9
                                          FROM manuscripte m
                                          LEFT JOIN gutachten g
                                              ON  ( m.man_id = g.man_id )
                                          LEFT JOIN user u
                                              ON ( g.user_id = u.user_id )
                                          LEFT JOIN user u1
                                              ON ( m.user_id = u1.user_id )
                                          LEFT JOIN status s
                                              ON ( m.sta_id = s.sta_id )
                                          GROUP BY 
                                              msnoconf,msnrpss,issue,series,authors,title,
                                              mspages,figs,received,accepted,corrauthor,email,fax,status,
                                              date,referee1,referee2,referee3,referee4,referee5,
                                              referee6,referee7,referee8,referee9
                                          '
                  );
                  $z 0;
                  $ref 1;
                  for(
                  $i 0;$i $query->rows;++$i){
                      
                  $r 0;
                      if(
                  $i == 0){ 
                          
                  // 24
                          
                  foreach($res[$i] as $key => $value){
                              
                  $sheet->write(0$r$key);
                              
                  $sheet->write(1$r$value);
                              ++
                  $r;
                          }
                      }else{
                          if(
                  $res[$i]['msnoconf'] == $res[$i-1]['msnoconf']){ 
                              
                  // gleicher DS, keine neue Zeile
                              
                  ++$z;
                              
                  $m 0;
                              foreach(
                  $res[$i] as $key => $value){
                                  if(
                  $m 15) continue;
                                  if(
                  $key == 'authors' && $res[$i]['authors'] != $res[$i-1]['authors']){
                                      
                  $res[$i]['authors'] = $res[$i-1]['authors'] . ',' $res[$i]['authors'];
                                      
                  $sheet->write($i $z$r$res[$i]['authors']);
                                  }
                                  if(
                  $key == 'referee1' && $res[$i-1]['referee1'] != $res[$i]['referee1']){
                                      
                  $sheet->write($i $z$r $ref$res[$i]['referee1']);
                                      
                  $ref++;
                                      
                  $r++;
                                  }
                                  ++
                  $r;
                              }
                          }else{ 
                              
                  // 15
                              
                  $ref 1;
                              foreach(
                  $res[$i] as $key => $value){
                                  
                  $sheet->write($i $z$r$value);
                                  ++
                  $r;
                              }
                          }
                      }

                  PS: die SQL Abfrage ist noch im Aufbau, nur schon alle Felder
                  für die Excel Tabelle drin.
                  Das Forum verschluckt die \ bei der SQL Anweisung
                  TBT

                  Die zwei wichtigsten Regeln für eine berufliche Karriere:
                  1. Verrate niemals alles was du weißt!


                  PHP 2 AllPatrizier II Browsergame

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    Die werden denke ich mal sowieso von hand gemacht.
                    Handarbeit wenns nen Computer mit DB gibt ?
                    Das geht mir nen bissel zu weit, so weit komms noch!

                    Nene, das Standardmodul übernimmt die Spaltennamen
                    der SQL Anweisung in die Excel Tabelle
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      ich dachte nur, wenn du die spalten ohnehin in der query eingibst.

                      Kommentar

                      Lädt...
                      X