PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Datensatz detailiert anzeigen (http://www.selfphp.de/forum/showthread.php?t=26056)

Vengalis 06.10.2017 18:09:25

Datensatz detailiert anzeigen
 
Hallo liebe PHP-Freunde,

ich hoffe als Neuling hier im Forum relativ schnelle eine Lösung meines Problems finden zu können. Ich möchte gern einen ausgelesenen Datensatz aus der Datenbank mit einer bestimmten Nummer (ID) anklicken können um diesen Datensatz entsprechend detailiert anzeigen zu lassen.

Hier erstmal der Quellcode dazu:

PHP-Code:

<?php
// Verbindung zur Datenbank aufbauen
include "./pav-db/verbinden.php";

// Anzahl der Datensätze (Nachrichten) pro Seite
$DatensaetzeSeite 10;

// Anzahl der Datensätze ermitteln
$select $db->query("SELECT `id` FROM `stellenangebot` WHERE `anzeige` = '1'");
$AnzahlDatensaetze $select->rowCount();

// Sind Datensätze vorhanden?
if ($AnzahlDatensaetze 0) {

 
// Die Anzahl der Seiten ermitteln
 
$AnzahlSeiten ceil($AnzahlDatensaetze $DatensaetzeSeite);

 
// Die aktuelle Seite ermitteln
 
$AktuelleSeite = isset($_GET["seite"]) ? $_GET["seite"] : 1;

 
// Den über $_GET["seite"] gesendeten Wert überprüfen und ggf. ändern
 
$AktuelleSeite ctype_digit($AktuelleSeite) ? abs((int)$AktuelleSeite) : 1;
 
$AktuelleSeite $AktuelleSeite || $AktuelleSeite $AnzahlSeiten $AktuelleSeite;

 
// Den Versatz ermitteln
 
$Versatz $AktuelleSeite $DatensaetzeSeite $DatensaetzeSeite;

 
// Alle Datensätze auslesen die in der DB-Spalte `anzeige` den Wert 1 haben.
 // Mit LIMIT die Ausgabe der Datensätze begrenzen (Versatz und Datensätze pro Seite).
 
$select $db->prepare("SELECT `id`, `angebotnr`, `stellen`, `beruf`, `ort`, `available`, `dauer`, `beschreibung`, `lohn`, `kfz`, `worktime`, `datum`
                         FROM `stellenangebot`
                         WHERE `anzeige` = '1'
                         ORDER BY `datum` DESC
                         LIMIT :versatz, :DatensaetzeSeite"
);
 
$select->bindParam(':versatz'$VersatzPDO::PARAM_INT);
 
$select->bindParam(':DatensaetzeSeite'$DatensaetzeSeitePDO::PARAM_INT);
 
$select->execute();
 
$nachrichten $select->fetchAll(PDO::FETCH_OBJ);

 
// Ausgabe über eine Foreach-Schleife
 
foreach ($nachrichten as $nachricht) {
  
// Mit sscanf() wird das Format des Datums in die Variablen $jahr, $monat und $tag extrahiert.
  
sscanf($nachricht->datum"%4s-%2s-%2s"$jahr$monat$tag);

An folgender Stelle soll nun die Angebotsnummer zum link gemacht werden, welche mich zu einer detailseite verlinkt. Das hat auch geklappt. jedoch kommt ich nicht mehr weiter was nun folgen muss, damit als Beispiel https://www.example.com/pav/pav-db/auslesen.php?id=9 zur detailierten Ansicht umgeschalten wird.

PHP-Code:

  echo '<tr><td valign=top><a href="?id=' $nachricht->id '">' $nachricht->angebotnr '</a></td>' 

Wenn das das dann hinhaut, bin ich euch sehr verbunden und Dankbar für Eure Hilfe.

PHP-Code:

       '<td valign=top>' $tag '.' $monat '.' $jahr '</td><td valign=top>' $nachricht->stellen '</td><td valign=top>' $nachricht->beruf .
       
'</td><td valign=top>' $nachricht->ort '</td></tr>';
 }

 
// Formular.- und Blätterfunktion (Wer sich da auskennt bekommt einen Preis verliehen ;)
 
echo '</table><br><br>';

 echo 
'<form action="./pav-db/auslesen.php" method="GET" autocomplete="off">' .
      ((
$AktuelleSeite 1) > ?
      
'<a href="?seite=' . ($AktuelleSeite 1) . '">◄</a>' :
      
' ◄') .
      
' <label>Seite <input type="text" value="' $AktuelleSeite '" name="seite" size="3"' .
      
' title="Seitenzahl eingeben und die Eingabetaste drücken."> von ' $AnzahlSeiten '</label>' .
      ((
$AktuelleSeite 1) <= $AnzahlSeiten ?
      
' <a href="?seite=' . ($AktuelleSeite 1) . '">►</a>' :
      
' ►') .
      
'</form>';
}
else {
 echo 
'</table><br><br><p>Keine Angebote vorhanden!</p>';
}
?> 

Das wäre der gesamte Quellcoder der Datei. Gern würde ich Euch anhand eines Beipiels ein Bild mit hochladen. Jedoch bekomme ich Fehler 500 angezeigt.

Ich hoffe das ich von jemanden hier Unterstützung mit eventl. Beispiel wonach ich mich richten kann, erhalte.

MfG Vengalis

vt1816 08.10.2017 16:51:36

AW: Datensatz detailiert anzeigen
 
Hallo und willkommen hier im Forum.

So sollte es funktionieren:
PHP-Code:

  echo '<tr><td valign=top><a href="https://www.example.com/pav/pav-db/auslesen.php?id=' .$nachricht->id .'">' .$nachricht->angebotnr .'</a></td>'


Vengalis 09.10.2017 10:58:13

AW: Datensatz detailiert anzeigen
 
Hallo, Danke für die Antwort aber es hat sich nichts geändert. Das Simmikolon am Ende ist unnötig da es wie im Quelltext steht in den folgezeilen mit dem Echo " " weiter geht. Ich habe nur ein punkt gesetzte damit ich für mich in der Ansicht im Quellcode sehen kann das eine neue Zeile weitergeht.

Deine Antwort ist als unverändert zu meinem.

vt1816 09.10.2017 11:08:00

AW: Datensatz detailiert anzeigen
 
Was steht in der Datei auslesen.php?

Wenn Dein og. Code der Datei auslesen.php entspricht, musst Du die übergebenen Werte abfragen (hier: ID) - ob vorhanden. Dann die entsprechende Verarbeitung (IF id ...) vornehmen.

Vengalis 10.10.2017 16:51:46

AW: Datensatz detailiert anzeigen
 
Hallo genau darin liegt ja das Problem, ich scheitere daran diese IF Abfrage zu machen, ich bin in Sachen PHP nicht so Firm, ich kann lediglich den Vorhandenen Code umschreiben bzw. für meine Zwecke anpassen, daher benötige ich einen Anhaltspunkt.

Das ich eine Seite basteln muss bei dem dann die detailierte Anzeige kommt ist mir bewusst jedoch ist mir nicht klar wie ich die Abfrage "programmieren" muss, dass wenn ich in der "auslesen.php" die ausgelesene $angebotnr anklicke, es dann zu der umgeleiteten Seite (Bsp: http://www.example.com/pav/pav-db/auslesen.php?id=9) kommt in dem der Datensatz mit der $angebotnr vollständig anzeigt als separate Seite und nicht als Übersichtstabelle.


Ich hoffe dass das verständlich geäußert wurde und nicht alt zu verwirrend geschrieben ist von mir. *schnauf*

vt1816 11.10.2017 08:23:31

AW: Datensatz detailiert anzeigen
 
Zum Beispiel so:
PHP-Code:

if(isset($_GET['id'] && $_GET['id'] > 0))
{
/*Dein neuer Code bzgl. Anzeige */}
else
{
/*Dein bisheriger Code */


Vengalis 12.10.2017 19:04:53

AW: Datensatz detailiert anzeigen
 
Super der Tipp hat mir mega weiter geholfen.

Ich habe das jetzt wie folgt gelöst!

PHP-Code:

<?php
// Verbindung zur Datenbank aufbauen
include "./pav-db/verbinden.php";

// Anzahl der Datensätze (Nachrichten) pro Seite
$DatensaetzeSeite 10;

// Anzahl der Datensätze ermitteln
$select $db->query("SELECT `id` FROM `stellenangebot` WHERE `anzeige` = '1'");
$AnzahlDatensaetze $select->rowCount();

$id = ( isset( $_GET['id'] ) && is_numeric$_GET['id'] ) ) ? intval$_GET['id'] ) : 0;

if ( 
$id != )
{
 
$select $db->prepare("SELECT `id`, `angebotnr`, `stellen`, `beruf`, `ort`, `available`, `dauer`, `beschreibung`, `lohn`, `kfz`, `worktime`, `datum`, `anzeige`
                         FROM `stellenangebot`
                         WHERE `id` = :id"
);

 
// $select->execute() führt die Anweisung aus.
 // Hier wird der Platzhalter und der Wert über ein assoziatives Array übergeben.
 
$select->execute( array(':id' => $_GET["id"]) );

 
// $select->fetch() holt die Zeile aus dem Ergebnis.
 
$nachricht $select->fetch();
  echo 
'
       <div style="background-color:#F3F781;"><span style="font-size:12pt; padding: 0cm 0.2cm 0cm;" align="left"><strong>' 
$nachricht["stellen"] . '&nbsp;' $nachricht["beruf"] . '</strong></span><br><span style="font-size:9pt; padding: 0cm 0.2cm 0cm;" align="left">Arbeitsangebot-Nr.:' $nachricht["angebotnr"] . '</span><br></div>
       <table border="0" cellspacing="0" cellpadding="5">
       <tr><td align="right">Einsatzort:</td><td>' 
$nachricht["ort"] . '</td></tr>
       <tr><td align="right">Verf&uuml;gbarkeit:</td><td>' 
$nachricht["available"] . '</td></tr>
       <tr><td align="right">Arbeitsdauer:</td><td>' 
$nachricht["dauer"] . '</td></tr>
       <tr><td align="right" valign="top">Beschreibung:</td><td>' 
nl2br($nachricht["beschreibung"]) . '</td></tr>
       <tr><td align="right">Verg&uuml;tung:</td><td>' 
$nachricht["lohn"] . '</td></tr>
       <tr><td align="right">F&uuml;hrerschein:</td><td>' 
$nachricht["kfz"] . '</td></tr>
       <tr><td align="right">Arbeitszeit:</td><td>' 
$nachricht["worktime"] . '</td></tr></table>
       '
;
  echo 
'<br><br><a href="stellenangebot.php">zur&uuml;ck zur &Uuml;bersicht</a>';
}
else
{
  echo 
'<div style="font-size:16pt; padding: 0cm 0.2cm 0cm;" align="left"><strong>Unsere Stellenangebote im &Uuml;berblick<br><br></strong></div>' .
       
'<table border="1" cellspacing="0" cellpadding="2">' .
       
' <tr>' .
       
'  <td>&nbsp;<b><nobr>Angebots-Nr:</nobr></b>&nbsp;</td><td>&nbsp;<b><nobr>Abgebot vom:</nobr></b>&nbsp;</td><td>&nbsp;<b>Stellen</b>&nbsp;</td><td>&nbsp;<b>Berufbezeichnung</b>&nbsp;</td><td>&nbsp;<b>Einsatzort</b>&nbsp;</td><!--<td>Verf&uuml;gbarkeit</td><td>Arbeitsdauer</td><td>Beschreibung</td><td>Verg&uuml;tung</td><td>F&uuml;hrerschein</td><td>Arbeitszeit</td> -->' .
       
' </tr>';
  if (
$AnzahlDatensaetze 0)
  {
    
$AnzahlSeiten ceil($AnzahlDatensaetze $DatensaetzeSeite);
    
$AktuelleSeite = isset($_GET["seite"]) ? $_GET["seite"] : 1;
    
$AktuelleSeite ctype_digit($AktuelleSeite) ? abs((int)$AktuelleSeite) : 1;
    
$AktuelleSeite $AktuelleSeite || $AktuelleSeite $AnzahlSeiten $AktuelleSeite;
    
$Versatz $AktuelleSeite $DatensaetzeSeite $DatensaetzeSeite;
    
$select $db->prepare("SELECT `id`, `angebotnr`, `stellen`, `beruf`, `ort`, `available`, `dauer`, `beschreibung`, `lohn`, `kfz`, `worktime`, `datum`
                                     FROM `stellenangebot`
                                     WHERE `anzeige` = '1'
                                     ORDER BY `datum` DESC
                                     LIMIT :versatz, :DatensaetzeSeite"
);
    
$select->bindParam(':versatz'$VersatzPDO::PARAM_INT);
    
$select->bindParam(':DatensaetzeSeite'$DatensaetzeSeitePDO::PARAM_INT);
    
$select->execute();
    
$nachrichten $select->fetchAll(PDO::FETCH_OBJ);
    foreach (
$nachrichten as $nachricht)
    {
       
sscanf($nachricht->datum"%4s-%2s-%2s"$jahr$monat$tag);
       echo 
'<tr><td valign=top><a style="text-decoration:underline; color:#08298A; font-weight:bold;" href="?id=' $nachricht->id '">' $nachricht->angebotnr '</a></td><td valign=top>' $tag '.' $monat '.' $jahr '</td><td valign=top>' $nachricht->stellen '</td><td valign=top>' $nachricht->beruf '</td><td valign=top>' $nachricht->ort '</td></tr>';
    }
    echo 
'</table><br><br>';
    echo 
'<form action="./pav-db/auslesen.php" method="GET" autocomplete="off">' .
         ((
$AktuelleSeite 1) > ?
         
'<a href="?seite=' . ($AktuelleSeite 1) . '">◄</a>' :
         
' ◄') .
         
' <label>Seite <input type="text" value="' $AktuelleSeite '" name="seite" size="3"' .
         
' title="Seitenzahl eingeben und die Eingabetaste drücken."> von ' $AnzahlSeiten '</label>' .
         ((
$AktuelleSeite 1) <= $AnzahlSeiten ?
         
' <a href="?seite=' . ($AktuelleSeite 1) . '">►</a>' :
         
' ►') .
         
'</form>';
  }
  else 
  {
    echo 
'</table><br><br><p>Keine Jobangebote vorhanden!</p>';
  }
}
?>

Jezt habe ich genau das, was ich mir vorgestellt hatte und es funktioniert auch!

*FREU*

vt1816 13.10.2017 09:41:13

AW: Datensatz detailiert anzeigen
 
Wenn Du schon prüfst ($id) - worauf ich immer hinweise, dann wende die Prüfung ($_GET['id']) auch konsequent an:

PHP-Code:

$id = ( isset( $_GET['id'] ) && is_numeric$_GET['id'] ) ) ? intval$_GET['id'] ) : 0;

if ( 
$id != )
{
 
$select $db->prepare("SELECT `id`, `angebotnr`, `stellen`, `beruf`, `ort`, `available`, `dauer`, `beschreibung`, `lohn`, `kfz`, `worktime`, `datum`, `anzeige`
                         FROM `stellenangebot`
                         WHERE `id` = :id"
);

 
// $select->execute() führt die Anweisung aus.
 // Hier wird der Platzhalter und der Wert über ein assoziatives Array übergeben.
 
$select->execute( array(':id' => $_GET["id"]) ); 



Alle Zeitangaben in WEZ +2. Es ist jetzt 23:58:53 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.