Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „PHP Tabelle mit MySQL-Abfrage“

replay_

Grandmaster

Guten Abend,

ich habe eine ziemlich einfache Frage, wo ich leider jetzt den ganzen Tag nicht weiter komme ... Ich möchte die eingetragen Firmen aus den jeweiligen Ländern, aber jeweils mit den dazugehörigen Mitarbeitern ausgeben.

MySQL: 2 Tabellen (Firma und Mitarbeiter)

Code:
CREATE TABLE Company (
    ID INT(5) PRIMARY,
    Firma VARCHAR(50),
    Street VARCHAR(100),
    City VARCHAR(50),
    Country VARCHAR(50),
    Telefon VARCHAR(30),
    Email VARCHAR(50),
    Website VARCHAR(50),
    Website2 VARCHAR(50)
)

CREATE TABLE Member (
    ID INT(5) PRIMARY,
    COMPANY_ID INT(5),
    Name VARCHAR(50),
    Position VARCHAR(50),
    Email VARCHAR(50)
)
Nun möchte ich per PHP eine zweispaltige Tabellen füllen und das separat für jedes Land, zB: Für Deutschland möchte ich jede Firme mit den dazugehörigen Mitarbeitern ausgeben. Da bin ich bis jetzt soweit gekommen:

PHP:
<?php
    error_reporting(E_ALL);
    
    include("functions/config.inc.php");
    
    $conn = @mysql_connect($dbserver,$dbuser,$dbpass) OR die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($dbname, $conn) OR die("Konnte die Datenbank nicht waehlen.");
    
    $germany = "SELECT Firma, Street, City, Telefon, Website FROM Company WHERE Country = 'Germany' ORDER BY Firma ASC";
    
    $germany_member = "SELECT Name, Position, Email FROM Member WHERE COMPANY_ID = '1' ORDER BY Position ASC"; /* 1 ist die ID für Deutschland in der Company Tabelle */
    
    $germany_query1 = mysql_query($germany) or die("Anfrage nicht erfolgreich");
    $germany_query2 = mysql_query($germany_member) or die("Anfrage nicht erfolgreich");
?>

<html>

<head>
    <title>No Title</title>
    <link rel="stylesheet" href="style/style.css" type="text/css" />
</head>
<body>
    <div id="root">
        <table width="100%" cellpadding="1" cellspacing="1">
            <?php 
                  while ($adr = mysql_fetch_array($germany_query1)){
              ?>
            
            <tr>
                <td>Firma:</td>
                <td><b><?php echo $adr['Firma']; ?></b></td>
            </tr>
            <tr>
                <td>Street:</td>
                <td><?php echo $adr['Street']; ?></td>
            </tr>
            <tr>
                <td>City:</td>
                <td><?php echo $adr['City']; ?></td>
            </tr>
            <tr>
                <td>Telefon:</td>
                <td><?php echo $adr['Telefon']; ?></td>
            </tr>
            <tr>
                <td>Website:</td>
                <td><?php echo $adr['Website']; ?></td>
            </tr>
            <?php 
                  while ($adr2 = mysql_fetch_array($germany_query2)){
              ?>
              <tr>
                <td><i><?php echo $adr2['Position']; ?>:</i></td>
                <td><?php echo $adr2['Name']; ?>&nbsp;(<?php echo $adr2['Email']; ?>)</td>
            </tr>
             <?php
                }
               ?>
            
            <tr>
                <td class="end">&nbsp;</td>
                <td class="end">&nbsp;</td>
            </tr>
             <?php
                }
             ?>
        </table>
    </div>
    
</body>
</html>
Nun klappt es eigentlich ganz gut, es werden aber nur für die erste Firma in der Tabelle die dazugehörigen Mitarbeiter ausgegeben und die restlichen bleiben ohne Mitarbeiter und es werden nur die Firmendaten ausgegeben.

Wie kann ich das einfacher bzw. richtig abfragen und ausgeben!

Schöne Grüsse,

replay_
 

Duddle

Posting-Frequenz: 14µHz

AW: PHP Tabelle mit MySQL-Abfrage

es werden aber nur für die erste Firma in der Tabelle die dazugehörigen Mitarbeiter ausgegeben und die restlichen bleiben ohne Mitarbeiter und es werden nur die Firmendaten ausgegeben.
Genau das fragst du ja ab ("WHERE COMPANY_ID='1'"), also gibt er genau das auch aus.

Dein Problem lässt sich auf mehrere Arten lösen: entweder per geschachtelter Schleife oder mit einem einfachen JOIN. Für ersteres müsstest du bei jedem Durchgang von $adr die jeweilige ID der Company holen, dann eine SQL-Anfrage für Mitarbeiter mit dieser COMPANY_ID stellen und diese ausgeben. Für den JOIN, der ungefähr so aussieht
Code:
SELECT *
FROM `Company` c
JOIN `Member` m
ON `c.id` = `m.company_id`
WHERE `c.country` = 'Germany'
ORDER BY `c.id`;
müsstest du dir merken, welche c.id du zuletzt betrachtest hast. Falls sich diese ändert, musst du wieder die Daten des (neuen) Unternehmens ausgeben.

Lösung 1 ist "intuitiver", kostet aber mehrere Datenbankanfragen (höchstwahrscheinlich für die kein Problem). Lösung 2 ist mehr im Sinne der relationalen Datenbank (und kostet nur 1 Anfrage), aber minimal schwieriger zu schreiben.


Duddle
 

vincitore

Aktives Mitglied

AW: PHP Tabelle mit MySQL-Abfrage

Nun klappt es eigentlich ganz gut, es werden aber nur für die erste Firma in der Tabelle die dazugehörigen Mitarbeiter ausgegeben und die restlichen bleiben ohne Mitarbeiter und es werden nur die Firmendaten ausgegeben.

Wie kann ich das einfacher bzw. richtig abfragen und ausgeben!

Schöne Grüsse,

replay_

in wie fern sind denn die Mitarbeiter mit der Firma verknüpft?

also ich würde die whileschleifen ineinander verschachteln (hast du ja auch gemacht) und dann den Mitarbeitern jeweils die firmen_id mit hinterlegen

falls du das vor hattest, liegt es bei dir daran, dass du nur ID=1 abrufst
 

Tr3icio

Nicht mehr ganz neu hier

AW: PHP Tabelle mit MySQL-Abfrage

Die schnellste, professionellste und im Allgemeinen auch beste Lösung hat Duddle schon genannt: Joins

Und dann noch 2 Tipps:
- Für ID kann man Auto_Increment nutzen (setzt die ID automatisch, halt erst 1 beim nächsten mal 2 und so weiter)
- Foreign Keys sind hilfreich. So kannst du der Datenbank sagen, dass sie, wenn eine Company entfernt wird, automatisch alle Member entfernt werden sollen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
175.158
Beiträge
2.581.869
Mitglieder
67.223
Neuestes Mitglied
Desiree
Oben