php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.12.2005, 09:28  
Gast
 
Beiträge: n/a
Standard Zwei Tabellen in einen Array + Ausgabe (no primkey)

Tach,

ich steh vor einem Problem. Und zwar hab ich zwei Tabellen, die ungefähr gleich aufgebaut sind.

1. Tabelle - name: table1
vmid
nid (auto_increment)
definition
ntext
datum

2. Tabelle - name: table2
nid (auto_increment)
definition
ntext
datum

Es gibt also keinen Primärschlüssel. Das Problem ist, ich möchte alle Datensätze aus Tabelle 1 mit der vmid aus der aktuellen
Session (nehmen wir einfach mal 1) und alle Datensätze aus Tabelle 2 ausgeben.

Dazu müssen die wahrscheinlich in 1 array, da ich die Inhalte noch nach Datum bzw nach nid sortieren möchte.

Leider hab ich keine Ahnung wie ich das genau bewärgstelligen soll.
Hab schon einiges versucht mit 2 Select befehlen und array_merge aber er hat dann die $keys nicht richtig :/

So hab ich es gemacht bei nur einer Tabelle (die table1):

PHP-Code:
<?php
        $qry 
mysql_query("SELECT * FROM vm_news WHERE vmid = "$_SESSION['vm'] ." GROUP BY datum ORDER BY datum DESC;") OR die(mysql_error());
        
$month = array("January"=>"Januar""February"=>"Februar""March"=>"März""April"=>"April"
                       
"May"=>"Mai""June"=>"Juni""July"=>"Juli""August"=>"August"
                       
"September"=>"September""October"=>"Oktober""November"=>"November""December"=>"Dezember");
        while(
$row mysql_fetch_array($qry)) {
          
$timestmp strtotime($row['datum']);
          echo 
'  <tr valign="top">'."\n";
          echo 
'    <td width="3%">[img]img/layout/forward.gif[/img]</td>'."\n";
          echo 
"    <td>\n";
          echo 
'       [b]'date("j."$timestmp) .' '$month[date("F"$timestmp)] .' 'date("Y"$timestmp) ."[/b]

\n"
;
          
$qry2 mysql_query("SELECT * FROM vm_news WHERE vmid = "$_SESSION['vm'] ." AND datum = '"$row['datum'] ."' ORDER BY nid DESC;") OR die(mysql_error());
          while(
$app mysql_fetch_array($qry2)) {
              echo 
'       <table width="600px" border="0" cellpadding="1" cellspacing="0">'."\n";
              echo 
'         <tr style="background:#E67D3E">'."\n";
              echo 
'           <td style="width:300px; color:#FFFFFF; font-weight:bold">'$app['definition'] .'</td>'."\n";
              echo 
'         </tr><tr style="background:#FFFCCF">'."\n";
              echo 
'           <td style="background:#FFFCCF; border:1px solid #E67D3E">'$app['ntext'] .'</td>'."\n";
              echo 
'         </tr><tr>'."\n";
              echo 
'           <td></td>'."\n";
              echo 
'         </tr>'."\n";
              echo 
'       </table>
'
."\n";
          }
          echo 
"    </td>\n";
          echo 
"  </tr>\n";
        }
?>
wie geh ich das am besten an?

MFG
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.12.2005, 09:32  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard

Als erstes empfehle ich dir wenn du vernünftige Antworten haben willst, dann ordne und rücke mal deine Quelltext richtig ein.
lass dir fehlermeldungen anzeigen.

und versuch es mal mit der suche unter Join
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline  
Alt 07.12.2005, 09:34  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

Zitat:
Zitat von HK
Es gibt also keinen Primärschlüssel.
Warum definierst du die Spalte nid nicht als Primärschlüssel.

Zitat:
Zitat von HK
Das Problem ist, ich möchte alle Datensätze aus Tabelle 1 mit der vmid aus der aktuellen
Session (nehmen wir einfach mal 1) und alle Datensätze aus Tabelle 2 ausgeben.
Dafür gibt es UNION:
Code:
(
    SELECT
        nid,
        definition,
        ntext,
        datum
    FROM
        table1
    WHERE
        vmid = 1
)
UNION
(
    SELECT
        nid,
        definition,
        ntext,
        datum
    FROM
        table2
)
xabbuh ist offline  
Alt 07.12.2005, 09:51  
Gast
 
Beiträge: n/a
Standard Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

Zitat:
Zitat von JEGO
und versuch es mal mit der suche unter Join
Falls du damit Inner Join oder Left / Right Join meinst -> Klappt hier leider nicht da gerade der Verbindungsschlüssel fehlt. Kann mich auch irren, mit MySql kenn ich mich nicht so extrem aus.

Zitat:
Zitat von xabbuh
Zitat:
Zitat von HK
Es gibt also keinen Primärschlüssel.
Warum definierst du die Spalte nid nicht als Primärschlüssel.
Sind sie. Nur kann ich sie nicht als Verbindungsschlüssel benutzen, da die Datensätze von Tabelle 1 sowie Tabelle 2 mit der selben nid nicht identisch sind bzw nichts miteinander zu tun haben. Also kann ich Inner Join etc nicht anwenden (wenn ich mich nicht irre).

Zitat:
Zitat von xabbuh
Zitat:
Zitat von HK
Das Problem ist, ich möchte alle Datensätze aus Tabelle 1 mit der vmid aus der aktuellen
Session (nehmen wir einfach mal 1) und alle Datensätze aus Tabelle 2 ausgeben.
Dafür gibt es UNION:
Danke, klappt wunderbar. Union ist mir sogar neu (Wer hätte das gedacht).

Danke für eure Hilfe
 
Alt 07.12.2005, 09:55  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

Zitat:
Zitat von HK
Sind sie. Nur kann ich sie nicht als Verbindungsschlüssel benutzen, da die Datensätze von Tabelle 1 sowie Tabelle 2 mit der selben nid nicht identisch sind bzw nichts miteinander zu tun haben. Also kann ich Inner Join etc nicht anwenden (wenn ich mich nicht irre).
Achso, das war so nicht aus deinem ersten Beitrag hervorgegangen, macht dann aber natürlich Sinn.

Zitat:
Zitat von HK
Danke, klappt wunderbar. Union ist mir sogar neu (Wer hätte das gedacht).

Achja, wenn zwei Datensätze in beiden Tabellen vorkommen wird nur ein Datensatz ermittelt. Wenn beide ermittelt werden müssen, müsstest du UNION ALL verwenden. Das hatte ich eben vergessen zu erwähnen.
xabbuh ist offline  
Alt 07.12.2005, 10:05  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard Re: Zwei Tabellen in einen Array + Ausgabe (no primkey)

Zitat:
Zitat von HK
Falls du damit Inner Join oder Left / Right Join meinst -> Klappt hier leider nicht da gerade der Verbindungsschlüssel fehlt.
hast du leider oben nicht gesagt.(da siehst du wie wichtig eine ordendliche fragestellung ist.)

Antwort hast du ja jetzt bekommen. :wink:
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline  
Alt 07.12.2005, 10:14  
Gast
 
Beiträge: n/a
Standard

Ja, hab ich gelesen, wäre aber in meinem Fall an sich egal. Sind nur News und sollen nicht doppelt auftauchen.

Der gelöste Code:

PHP-Code:
<?php
        $qry 
mysql_query("(  SELECT
                                 datum
                               FROM
                                 vm_news
                               WHERE
                                 vmid = "
$_SESSION['vm'] ."
                               GROUP BY 
                                 datum 
                             ) UNION (
                               SELECT
                                 datum
                               FROM
                                 vm_genonews
                               GROUP BY 
                                 datum 
                             ) ORDER BY 
                               datum DESC;"
) OR die(mysql_error());
        
$month = array("January"=>"Januar""February"=>"Februar""March"=>"März""April"=>"April"
                       
"May"=>"Mai""June"=>"Juni""July"=>"Juli""August"=>"August"
                       
"September"=>"September""October"=>"Oktober""November"=>"November""December"=>"Dezember");
        while(
$row mysql_fetch_array($qry)) {
          
$timestmp strtotime($row['datum']);
          echo 
'  <tr valign="top">'."\n";
          echo 
'    <td width="3%">[img]img/layout/forward.gif[/img]</td>'."\n";
          echo 
"    <td>\n";
          echo 
'       [b]'date("j."$timestmp) .' '$month[date("F"$timestmp)] .' 'date("Y"$timestmp) ."[/b]

\n"
;
          
$qrys mysql_query("(SELECT
                                    nid,
                                    definition,
                                    ntext,
                                    datum
                                FROM
                                    vm_news
                                WHERE
                                    vmid = "
$_SESSION['vm'] ." AND
                                    datum = '"
$row['datum'] ."'
                                ORDER BY nid DESC
                               ) UNION (
                                SELECT
                                    nid,
                                    definition,
                                    ntext,
                                    datum
                                FROM
                                    vm_genonews
                                WHERE
                                    datum = '"
$row['datum'] ."'
                                ORDER BY nid DESC
                               )"
) OR die(mysql_error());
          while(
$app mysql_fetch_array($qrys)) {
              echo 
'       <table width="600px" border="0" cellpadding="1" cellspacing="0">'."\n";
              echo 
'         <tr style="background:#E67D3E">'."\n";
              echo 
'           <td style="width:300px; color:#FFFFFF; font-weight:bold">'$app['definition'] .'</td>'."\n";
              echo 
'         </tr><tr style="background:#FFFCCF">'."\n";
              echo 
'           <td style="background:#FFFCCF; border:1px solid #E67D3E">'$app['ntext'] .'</td>'."\n";
              echo 
'         </tr><tr>'."\n";
              echo 
'           <td></td>'."\n";
              echo 
'         </tr>'."\n";
              echo 
'       </table>
'
."\n";
          }
          echo 
"    </td>\n";
          echo 
"  </tr>\n";
        }
?>
(was ist daran nicht eingerückt? )
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
[Erledigt] Formular ausgabe Array cuep PHP Tipps 2008 11 27.05.2008 17:45
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
array ausgabe falsch? se-clan PHP Tipps 2007 2 07.01.2007 22:20
Text Array, auch wenn keine Ausgabe Array ist? tinchen PHP Tipps 2006 3 02.09.2006 14:18
Ausgabe Array in schleife PHP Tipps 2006 2 01.02.2006 13:49
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
3 Tabellen verbunden -- Ausgabe in einer Spalte Datenbanken 4 06.09.2005 10:43
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql_fetch_array mehrere tabellen, mysql_fetch union, array ausgabe in tabelle, mysql_fetch_array 2 tabellen, mehrere tabellen in array, mysql_fetch_array über 2 tabellen, primkey, mehrere tabellen in array einlesen, php row array mehrere tabellen, mehrere tabellen in array speichern, php mysql echo mehreren tabellen arrays, zwei tabellen select ausgeben fetch_array, zwei tabellen select und ausgeben array, zwei tabellen select mysql_fetch_array, ausgabe aller datensätze in einer tabelle, php select aus mehreren tabellen echo, php mysql_fetch_array mehrere tabellen, zwei mal join tabelle ausgabe array, mysql_fetch_array aus mehreren tabellen, array ( $month \january\ => \januar\,

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:52 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.