PHp Problem Ferienhäuser Problem

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

  • PHp Problem Ferienhäuser Problem

    Guten Abend,

    vieleicht kann mir der ein oder andere hier weiterhelfen.

    Ich baue gerade an einer Seite für das Inserieren von Ferienhäuser. Ein Vermieter von Ferienhäuser soll ein Haus anlegen können. Dazu soll in verschiedenen PHP Dateien Eckdaten (Straße, Ort),, Ausstattungsmerkmale, Freizeitmöglichkeiten, Keywords und Bilder eingeben können. Auf der letzten Seite soll er dann eine Zusammenfassung aller eingebenen Häuser erhalten. Auf jeder Weißen Karte soll ein einzelnen Haus mit dessen Attributen abgebildet sein.

    Der Code dieser Seite ist wie folgt:​

    PHP-Code:
      <?php  //Aufbau der Verbindung   require("connection.php");    //Starten der Seasson   session_start();       //Einbinden css Datei  echo '<link rel="stylesheet" type="text/css" href="styleneu.css">';  
    $Merker=$_SESSION["eigentuemer_ID"];//Übergabe der gemerkten ID_Eigentümer    //Ergebnisliste Kerndaten produzieren produzieren  $stmt = $con->prepare(      "SELECT *       FROM haeuser as h,ausstattungsmerkmale as a, freizeitmoeglichkeiten as f, keywords as k      WHERE h.eigentuemer_ID=a.eigentuemer_ID AND h.eigentuemer_ID= f.eigentuemer_ID AND h.eigentuemer_ID= k.eigentuemer_ID       AND h.Haus_ID=a.Haus_ID AND h.Haus_ID=f.Haus_ID AND h.Haus_ID=k.Haus_ID ");    $result= $stmt->execute();  $Ergebnisliste = $stmt->fetchAll();    ?>  <!DOCTYPE html>  <html>  <head>      <meta charset="UTF-8">      <meta http-equiv="X-UA-Compatible" content="IE=edge">      <meta name="viewport" content="width=device-width, initial-scale=1.0">      <title>Übersicht</title>      <link href="stylewebproject.css" rel="stylesheet">        <script src="main.js"></script>  </head>    <body>    <header>      <div class="headerimage">          <div> <img class="Startseitelogo"                  src="Bilder/Ferienhauser_Logo.jpg"                  alt="Logo Ferienportal"                 /></div>      </div> 
        <div class="topnav">          <a href="frontpage.php">Startseite</a>          <a href="Angebote.php">Angebote</a>          <?php               if(isset($_SESSION['eigentuemer_ID']) && !empty($_SESSION['eigentuemer_ID'])) {                  echo "<a href='Verwaltung.php' >Verwaltung</a>";                  }               else{              echo "<a href='login.php'>Verwaltung</a>";          }?>          <?php               if(isset($_SESSION['eigentuemer_ID']) && !empty($_SESSION['eigentuemer_ID'])) {                  echo "<p class='Schriftrechts'>Anmeldung als: <?php echo $_SESSION[username]; ?></p>";                  }               else{                    }?>      </div>  </header>    <div class="row">        <div class="VerwaltungscontainerHeader">              <h2>Übersicht deiner eingebenen Häuser, <?php echo $_SESSION["Vorname"]?> !</h2>      </div>      <div class="UebersichtHauserContainer">          <?php          foreach($Ergebnisliste as $row):                    ?>          <div class="card">              <div class="ContainerRechts" >                  <p>Ferienhaus: <?= $row['Name']; ?></p>                  <p>Haus ID: <?= $row['Haus_ID']; ?></p>                  <p>Registrierungsdatum  <?= $row['Registrierungsdatum']; ?></p>                  <p> Ausstattungs ID <?= $row['ausstattung_id']; ?></h3> </p>                  <p> freizeitmoeglichkeiten ID <?= $row['freizeitmoeglichkeiten_id']; ?></p> </p>                  <?php                      foreach($Ergebnisliste as $row):                      echo $row['keywords'];                  ?>                  <?php endforeach?>                </div>          </div>                      <?php      endforeach;      ?>      </div>  </div>    <div class="footer">      <a href="impressum.php">Impressum</a>      <a href="kontakt.php">Kontakt</a>      <a href="datenschutz.php">Datenschutz</a>      <div> <img class="footerlogo"                      src="Bilder/Ferienhauser_Logo.jpg"                      alt="Logo Ferienportal"                     /></div>  </div> 
    </body>  </html> 
    zz0.imctmvdey3zz

    Problem ist for each-Schleife für die Keywords (und dann auch die Bilder). Hab mal im Anhang die Screenshots von den Tabellen der Keywords angehangen. Über einen Input können für jedes eingebenen Haus mehrere Keywords eingebenen werden.
    Die Ausgabe produziert dann aber nicht schön komprimiiert für jedes Haus die dazuhehörigen Keywords gemäß HausID, sondern als einzelne Ausgaben.

    Wie könnte ich das so lösen, dass es für jedes eingebene Haus (also jeder einzelne HausID) auch natürlich nur einmal die Keywordliste ausgebenen werden?

    Sinnhaftigkeit des Codes bitte nicht diskustieren. Mir geht es nur darauf, dass zu jedem Haus bzw. zu jeder Haus_ID die dazugehörigen Keywords als Liste ausgegeben werden...


    zz0.mcgjur3mcshzz
    Angehängte Dateien

  • #2
    Zitat von Palantine92 Beitrag anzeigen
    Good evening,

    perhaps one or two of you can help me here.

    I am currently building a page for advertising holiday homes. A holiday home landlord should be able to create a house. To do this, he should be able to enter key data (street, location), features, leisure activities, keywords and images in various PHP files. On the last page, he should then receive a summary of all the houses entered. Each white card should show a single house with its attributes.
    The code for this page is as follows:

    PHP-Code:
    <?php //Establishing the connection require("connection.php"); //Starting the season session_start(); //Embedding css file echo '<link rel="stylesheet" type="text/css" href="styleneu.css">';
    $Marker=$_SESSION["owner_ID"];//Transfer of the noted ID_owner //Result list produce core data produce $stmt = $con->prepare( "SELECT * FROM houses as h, equipment features as a, leisure options as f, keywords as k WHERE h.owner_ID=a.owner_ID AND h.owner_ID= f.owner_ID AND h.owner_ID= k.owner_ID AND h.House_ID=a.House_ID AND h.House_ID=f.House_ID AND h.House_ID=k.House_ID "); $result= $stmt->execute(); $Result list = $stmt->fetchAll(); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Overview</title> <link href="stylewebproject.css" rel="stylesheet"> <script src="main .js"></script> </head> <body> <header> <div class="headerimage"> <div> <img class="Startseitelogo" src="Images/Ferienhauser_Logo.jpg" alt="Logo Ferienportal" /></div> </div>
    <div class="topnav"> <a href="frontpage.php">Homepage</a> <a href="Angebote.php">Offers</a> <?php if(isset($_SESSION['eigentuemer_ID']) && !empty($_SESSION['eigentuemer_ID'])) { echo "<a href='Verwaltung.php' >Administration</a>"; } else{ echo "<a href='login.php'>Administration</a>"; }?> <?php if(isset($_SESSION['eigentuemer_ID']) && !empty($_SESSION['eigentuemer_ID'])) { echo "<p class='Schriftrechts'>Login as: <?php echo $_SESSION[username]; ?></p>"; } else{ }?> </div> </header> <div class="row"> <div class="VerwaltungscontainerHeader"> <h2>Overview of the houses you have entered, <?php echo $_SESSION["FirstName"]?> !</h2> </div> <div class="UebersichtHauserContainer"> <?php foreach($Erergebnisnisliste as $row): ?> <div class="card"> <div class="ContainerRechts" > <p>Holiday home: <?= $row['Name']; ?></p> <p>House ID: <?= $row['Haus_ID']; ?></p> <p>Registration date <?= $row['Registration date']; ?></p> <p> Equipment ID <?= $row['equipment_id']; ?></h3> </p> <p> leisure opportunities ID <?= $row['leisure_opportunities_id']; ?></p> </p> <?php foreach($Results_List as $row): echo $row['keywords']; ?> <?php endforeach?> </div> </div> <?php endforeach; ?> </div> </div> <div class="footer"> <a href="impressum.php">Impressum</a> <a href="kontakt.php">Contact</a> <a href="datenschutz.php">Privacy Policy</a> <div> <img class="footerlogo" src="Bilder/Ferienhauser_Logo.jpg" alt="Logo Ferienportal" /></div> </div> </body>
    </html>
    zz0.imctmvdey3zz

    The problem is the for each loop for the keywords (and then also the images). I've attached the screenshots of the keyword tables. Multiple keywords can be entered for each house entered using one input.
    The output then does not produce the associated keywords for each house in a nicely compressed form according to the house ID, but as individual outputs.

    How could I solve this so that the keyword list is only output once for each house entered (i.e. each individual house ID)?

    Please do not debate the usefulness of the code. I am only concerned that for each house orfor each house_ID the corresponding keywords are output as a list...


    zz0.mcgjur3mcshzz
    Step 1: Adjust the SQL query


    Make sure that your SQL query groups the data correctly and only retrieves the required fields. In your case it would make sense to collect the keywords in a GROUP_CONCAT function if your database is MySQL or MariaDB:
    ​SELECT h.*, GROUP_CONCAT(k.keyword SEPARATOR ', ') AS keyword_list
    FROM haeuser AS h
    JOIN ausstattungsmerkmale AS a ON h.Haus_ID = a.Haus_ID
    JOIN freizeitmoeglichkeiten AS f ON h.Haus_ID = f.Haus_ID
    JOIN keywords AS k ON h.Haus_ID = k.Haus_ID
    WHERE h.eigentuemer_ID = :eigentuemer_ID
    GROUP BY h.Haus_ID;
    ​Make sure that the data is processed and output correctly:
    ​<?php
    // Establish connection to the database
    require("connection.php");

    // Start session
    session_start();

    // Include CSS file
    echo '<link rel="stylesheet" type="text/css" href="styleneu.css">';

    // Owner ID from the session
    $Merker = $_SESSION["eigentuemer_ID"];

    // Prepare SQL query
    $stmt = $con->prepare(
    "SELECT h.*, GROUP_CONCAT(k.keyword SEPARATOR ', ') AS keyword_list
    FROM houses AS h
    JOIN equipment features AS a ON h.House_ID = a.House_ID
    JOIN leisure options AS f ON h.House_ID = f.House_ID
    JOIN keywords AS k ON h.House_ID = k.House_ID
    WHERE h.owner_ID = wner_ID
    GROUP BY h.House_ID"
    );

    $stmt->bindParam('wner_ID', $Marker, PDO::PARAM_INT);
    $stmt->execute();
    $Results list = $stmt->fetchAll();
    ?>

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Overview</title>
    <link href="stylewebproject.css" rel="stylesheet">
    <script src="main .js"></script>
    </head>

    <body>
    <header>
    <div class="headerimage">
    <div>
    <img class="Homepagelogo" src="Images/Ferienhauser_Logo.jpg" alt="Logo Ferienportal"/>
    </div>
    </div>
    <div class="topnav">
    <a href="frontpage.php">Homepage</a>
    <a href="Offers.php">Offers</a>
    <?php if(isset($_SESSION['owner_ID']) && !empty($_SESSION['owner_ID'])) {
    echo "<a href='Verwaltung.php' >Administration</a>";
    } else {
    echo "<a href='login.php'>Administration</a>";
    } ?>
    <?php if(isset($_SESSION['owner_ID']) && !empty($_SESSION['owner_ID'])) {
    echo "<p class='Schriftrechts'>Login as: " . $_SESSION['username'] ."</p>";
    } ?>
    </div>
    </header>

    <div class="row">
    <div class="VerwaltungscontainerHeader">
    <h2>Overview of your entered houses, <?php echo $_SESSION["Vorname"]?>!</h2>
    </div>
    <div class="UebersichtHauserContainer">
    <?php foreach($Erergebnisnisliste as $row): ?>
    <div class="card">
    <div class="ContainerRechts">
    <p>Holiday home: <?= htmlspecialchars($row['Name']); ?></p>
    <p>Haus ID: <?= htmlspecialchars($row['Haus_ID']); ?></p>
    <p>Registrierungsdatum: <?= htmlspecialchars($row['Registrierungsdatum']); ?></p>
    <p>Ausstattungs ID: <?= htmlspecialchars($row['ausstattung_id']); ?></p>
    <p>Freizeitmöglichkeiten ID: <?= htmlspecialchars($row['freizeitmoeglichkeiten_id']); ?></p>
    <p>Keywords: <?= htmlspecialchars($row['keyword_list']); ?></p>
    </div>
    </div>
    <?php endforeach; ?>
    </div>
    </div>

    <div class="footer">
    <a href="impressum.php">Impressum</a>
    <a href="kontakt.php">Kontakt</a>
    <a href="datenschutz.php">Datenschutz</a>
    <div>
    <img class="footerlogo" src="Bilder/Ferienhauser_Logo.jpg" alt="Logo Ferienportal"/>
    </div>
    </div>
    </body>
    </html>​

    Kommentar

    Lädt...
    X