PHP 2 Select verarbeiten aber wie?

phoenix430

Lt. Commander
Registriert
Juni 2008
Beiträge
1.446
Hallo Leute,

Ich habe folgendes Problem mit einem Formular:
Ich habe ein Formular in der ich 2 verschiedene Select Befehle brauche. Mit meinem ersten Select lasse ich die ausgewählten DropDowns als Ergebnis anzeigen.
In meinem zweiten Select gebe ich aus, ob ein Artikel vorhanden ist oder nicht. Beide Select Befehle habe ich getestet (mit Navicat) und funktionieren. Ich bekomme aber die 2 Abfragen nicht zu einer zusammen.
Zum Verständis mein Code.
Hier baue ich die Auswahl für meinen ersten Select:
PHP:
$root=mysql_connect("localhost", "Benutzer", "Passwort");
mysql_select_db("Datenbank");

$abfrage="";
if ($titel <> ""){
    $suchworte = explode(" ",$titel);
    $count = count($suchworte);
    $abfrage.="(";
    for($i=0;$i <$count;$i++){
        $abfrage.="Titel LIKE '%".$suchworte[$i]."%'";
        if ($i<($count-1)){
            $abfrage.= " AND ";
        }
    }
    $abfrage.= " ) ";
}
if ($beschreibung <> ""){
    $suchworte = explode(" ",$beschreibung);
    $count = count($suchworte);
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
         $abfrage.= " (";
    }
    for($i=0;$i <$count;$i++){
        $abfrage.="Bemerkungen LIKE '%".$suchworte[$i]."%'";
        if ($i<($count-1)){
            $abfrage.= " AND ";
        }
    }
    $abfrage.= " ) ";
}
if ($begleitmaterial <> ""){
    $suchworte = explode(" ",$begleitmaterial);
    $count = count($suchworte);
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    for($i=0;$i <$count;$i++){
        $abfrage.="Begleitmaterial LIKE '%".$suchworte[$i]."%'";
        if ($i<($count-1)){
            $abfrage.= " AND ";
        }
    }
    $abfrage.= " ) ";
}
//  ID Liste

if ($typ <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_typ = ".$typ;
    $abfrage.= " ) ";
}
if ($art <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_art = ".$art."";
    $abfrage.= " ) ";
}

if ($fachbereich <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_fachbereich = ".$fachbereich."";
    $abfrage.= " )";
}

if ($schwierigkeit <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_schwierigkeit = ".$schwierigkeit."";
    $abfrage.= " )";
}

if ($besetzung <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_besetzung = ".$besetzung."";
    $abfrage.= " )";
}

if ($genre <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_genre = ".$genre."";
    $abfrage.= " )";
}
//  Liste

if (($herausgeber <> "") AND ($herausgeber <> "Bitte wählen")){
    if ($abfrage <> "") {
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='herausgeber = "'.$herausgeber.'"';
    $abfrage.= " )";
}

if (($ort <> "") AND ($ort <> "Bitte wählen")){
    if ($abfrage <> "") {
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='ort = "'.$ort.'"';
    $abfrage.= " )";
}

if (($standort <> "") AND ($standort <> "Bitte wählen")){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='standort = "'.$standort.'"';
    $abfrage.= " )";
}

if (($komponist <> "") AND ($komponist <> "Bitte wählen")){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='komponist = "'.$komponist.'"';
    $abfrage.= " )";
}

if (($verlag <> "") AND ($verlag <> "Bitte wählen")){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='abfrage = "'.$abfrage.'"';
    $abfrage.= " )";
}
Hier meine Ausgabe:
PHP:
$auswertung = "SELECT * FROM titel WHERE";
    $auswertung.= $abfrage;
    $auswertung2 ="SELECT
MAX(a.ID) AS Maximum,
t.*,
CASE WHEN a.rueckgabedatum Is Null Then 'Titel ist ausgeliehen' Else 'Titel ist verfügbar' End As Ausgeliehen
FROM titel t
LEFT JOIN ausgeliehen a
ON a.Titelnr =  t.ID
GROUP BY Ausleihdatum DESC";
    $ergebnis = mysql_query($auswertung);
    while($row = mysql_fetch_object($ergebnis)){

    echo '<tr>'."\r\n";
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n";
    echo '<td>'.$row->Komponist.'</td>'."\r\n";
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n";
    echo '<td>'.$row->Verlag.'</td>'."\r\n";
    echo '<td>'.$row->Ausgeliehen.'</td>'."\r\n";
    echo '</tr>';
    }
    echo '</table>';
?>

und das ist quasi meine zweite Abfrage
PHP:
$auswertung2 ="SELECT
MAX(a.ID) AS Maximum,
t.*,
CASE WHEN a.rueckgabedatum Is Null Then 'Titel ist ausgeliehen' Else 'Titel ist verfügbar' End As Ausgeliehen
FROM titel t
LEFT JOIN ausgeliehen a
ON a.Titelnr =  t.ID
GROUP BY Ausleihdatum DESC";
Und wie kann ich diese Abfrage nach meiner ersten Select Abfrage einbinden? Die query kann ja nur eins verarbeiten oder?
 
mach doch einfach $ergebnis2 = mysql_query($auswertung2);
 
Markus83Muc schrieb:
mach doch einfach $ergebnis2 = mysql_query($auswertung2);
Danke für deine Antwort so weit war ich auch, aber wie mache ich es dann weiter mit while?
Kann ja schlecht sagen
PHP:
while($row = mysql_fetch_object($ergebnis & $ergebnis2)){
    echo '<tr>'."\r\n";
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n";
    echo '<td>'.$row->Komponist.'</td>'."\r\n";
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n";
    echo '<td>'.$row->Verlag.'</td>'."\r\n";
    echo '<td>'.$row->Ausgeliehen.'</td>'."\r\n";
    echo '</tr>';
    }
    echo '</table>';
?>
Sry ist wahrscheinlich für euch banal, aber ich habe gerade total den hänger
 
vielleicht habe ich noch nicht verstanden was du genau erreichen willst. Welche infos aus $auswertung2 brauchst du denn während du durch die while-Schleife läufst.
 
Markus83Muc schrieb:
vielleicht habe ich noch nicht verstanden was du genau erreichen willst. Welche infos aus $auswertung2 brauchst du denn während du durch die while-Schleife läufst.
Also es ist so, dass ich als erstes ein Formular habe. Dort kann ein User in DropDowns Werte auswählen. z.B. Komponist Mozart.
Meine erste Abfrage zeigt ihm nun alles an was mit Mozart zu tun hat. Als Beispiel wird zum Beispiel der Titel " eine kleine Nachtmusik" angezeigt.
Nun möchte ich, dass der User sieht ob dieser Titel momentan verfügbar ist oder nicht.
Mit der ersten Abfrage wird also die Auswahl des users übergeben. und Anschließend soll die zweite Abfrage zur Auswahl des users sagen, ob die Titel verfügbar sind oder nicht.
 
PHP:
$ergebnis2 = mysql_query($auswertung2);
while($row = mysql_fetch_object($ergebnis)){ 
    echo '<tr>'."\r\n"; 
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n"; 
    echo '<td>'.$row->Komponist.'</td>'."\r\n"; 
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n"; 
    echo '<td>'.$row->Verlag.'</td>'."\r\n"; 
    $id=$row->ID;
    while($row2 = mysql_fetch_object($ergebnis2)){ 
        $id2=$row2->ID;
        if($id == $id2){
            echo '<td>'.$row2->Ausgeliehen.'</td>'."\r\n"; 
        }
    }
    echo '</tr>'; 
    } 
    echo '</table>'; 
?>
 
Markus83Muc schrieb:
PHP:
$ergebnis2 = mysql_query($auswertung2);
while($row = mysql_fetch_object($ergebnis)){ 
    echo '<tr>'."\r\n"; 
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n"; 
    echo '<td>'.$row->Komponist.'</td>'."\r\n"; 
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n"; 
    echo '<td>'.$row->Verlag.'</td>'."\r\n"; 
    $id=$row->ID;
    while($row2 = mysql_fetch_object($ergebnis2)){ 
        $id2=$row2->ID;
        if($id == $id2){
            echo '<td>'.$row2->Ausgeliehen.'</td>'."\r\n"; 
        }
    }
    echo '</tr>'; 
    } 
    echo '</table>'; 
?>

Vielen dank für deine Hilfe! Ich habe jetzt aber folgendes Problem:
Habe ich in meiner Ergebnisliste 3 Einträge, so sagt er mir nur beim ersten Eintrag ob der Titel verfügbar ist oder nicht( siehe Bild).
Ich habe die vermutung, dass es mit der zweiten while Schlefe zu tun hat, bin mir aber nicht sicher?
 

Anhänge

  • ausgeliehen.JPG
    ausgeliehen.JPG
    41 KB · Aufrufe: 260
Mir ist dein Datenbankschema nicht ganz einleuchtend. Eigentlich kann man sowas in einem einzigen SELECT erledigen.
Kannst du hier mal kurz die betreffenden CREATE TABLE-Anweisungen reinkopieren?
 
IceMatrix schrieb:
Mir ist dein Datenbankschema nicht ganz einleuchtend. Eigentlich kann man sowas in einem einzigen SELECT erledigen.
Kannst du hier mal kurz die betreffenden CREATE TABLE-Anweisungen reinkopieren?
Ich habe es in einem SELECT versucht, bin aber gescheitert. Muss aber dazu sagen bin Anfänger...
Zur Erläuterung:
Ich habe ein Formular mit drop Down Menüs in der man Werte auswählen kann. Wähle ich als Beispiel Mozart, sollen mir alle Ergebnisse von Mozart angezeigt werden. In meiner zweiten Abfrage soll dann geschaut werden, ob der Titel verfügbar ist oder nicht.
Mein Formular in gekürzter Form:
PHP:
<?php
$root=mysql_connect("Server", "Benutzer", "Passwort");
mysql_select_db("mediathek");

function Liste ($abfrage){
   $ergebnis = mysql_query($abfrage);
   $anzeige = array();
while($row = mysql_fetch_object($ergebnis))
   {
   $anzeige[] = $row->bezeichnung;
   }
foreach($anzeige as $value){
   echo '<option value="'.$value.'">'.$value.'</option>';
   }
}

function IdListe ($abfrage){
   $ergebnis = mysql_query($abfrage);
   $anzeige = array();
while($row = mysql_fetch_object($ergebnis))
   {
   echo '<option value="'.$row->id.'">'.$row->bezeichnung.'</option>';
   }
}

echo '
<form action="ausgabe.php" method="post">
Typ: <select name="typ" id="dropdown">
<option value="0" selected="selected">Bitte wählen</option>';
IdListe ("SELECT bezeichnung, id FROM kat_typ ");
echo '</select>';
echo '
Titel enthält <input type="text" name="titel" size="40"/>';
echo '
Herausgeber enthält <select name="herausgeber" id="dropdown">
<option value="Bitte wählen" selected="selected">Bitte wählen</option>';
Liste ("SELECT Herausgeber AS bezeichnung FROM titel WHERE (Herausgeber IS NOT NULL AND Herausgeber <>'') GROUP BY Herausgeber");
echo '</select>';
echo '
Ort enthält <select name="ort" id="dropdown">
<option value="Bitte wählen" selected="selected">Bitte wählen</option>';
Liste ("SELECT Ort AS bezeichnung FROM titel WHERE (Ort IS NOT NULL AND Ort <>'') GROUP BY Ort");
echo '</select>';
echo '
Standort enthält <select name="standort" id="dropdown">
<option value="Bitte wählen" selected="selected">Bitte wählen</option>';
Liste ("SELECT Standort AS bezeichnung FROM titel WHERE Standort IS NOT NULL GROUP BY Standort");
echo '</select>';
echo '
Beschreibung enthält <input type="text" name="beschreibung" size="40"/> ';
echo '
Begleitmaterial enthält <input type="text" name="begleitmaterial" size="40"/> ';
echo '
Art <select name="art" id="dropdown">
<option value="0" selected="selected">Bitte wählen</option>';
IdListe ("SELECT Bezeichnung AS bezeichnung,ID AS id FROM kat_art");
echo '</select>';
Und hier meine Ausgabe
PHP:
<?php
echo '<table width="1000"  cellpadding="10" cellspacing="10" border="10">';
echo '<tr>';
echo '<th>Titel</th>';
echo '<th>Komponist</th>';
echo '<th>Herausgeber</th>';
echo '<th>Verlag</th>';
echo '<th>Ausgeliehen</th>';
echo '</tr>';

$titel=$_POST['titel'];
$beschreibung=$_POST['beschreibung'];
$begleitmaterial=$_POST['begleitmaterial'];
$typ=$_POST['typ'];
$herausgeber=$_POST['herausgeber'];
$ort=$_POST['ort'];
$standort=$_POST['standort'];
$beschreibung=$_POST['beschreibung'];
$begleitmaterial=$_POST['begleitmaterial'];
$art=$_POST['art'];
$fachbereich=$_POST['fachbereich'];
$schwierigkeit=$_POST['schwierigkeit'];
$komponist=$_POST['komponist'];
$verlag=$_POST['verlag'];
$besetzung=$_POST['besetzung'];
$genre=$_POST['genre'];

$root=mysql_connect("Datenbank", "Benutzer", "Passwort");
mysql_select_db("mediathek");

// hier baue ich meine Ergebnisliste für meine erste Abfrage

$abfrage="";
if ($titel <> ""){
    $suchworte = explode(" ",$titel);
    $count = count($suchworte);
    $abfrage.="(";
    for($i=0;$i <$count;$i++){
        $abfrage.="Titel LIKE '%".$suchworte[$i]."%'";
        if ($i<($count-1)){
            $abfrage.= " AND ";
        }
    }
    $abfrage.= " ) ";
}
if ($beschreibung <> ""){
    $suchworte = explode(" ",$beschreibung);
    $count = count($suchworte);
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
         $abfrage.= " (";
    }
    for($i=0;$i <$count;$i++){
        $abfrage.="Bemerkungen LIKE '%".$suchworte[$i]."%'";
        if ($i<($count-1)){
            $abfrage.= " AND ";
        }
    }
    $abfrage.= " ) ";
}
if ($begleitmaterial <> ""){
    $suchworte = explode(" ",$begleitmaterial);
    $count = count($suchworte);
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    for($i=0;$i <$count;$i++){
        $abfrage.="Begleitmaterial LIKE '%".$suchworte[$i]."%'";
        if ($i<($count-1)){
            $abfrage.= " AND ";
        }
    }
    $abfrage.= " ) ";
}
//  ID Liste

if ($typ <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_typ = ".$typ;
    $abfrage.= " ) ";
}
if ($art <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_art = ".$art."";
    $abfrage.= " ) ";
}

if ($fachbereich <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_fachbereich = ".$fachbereich."";
    $abfrage.= " )";
}

if ($schwierigkeit <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_schwierigkeit = ".$schwierigkeit."";
    $abfrage.= " )";
}

if ($besetzung <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_besetzung = ".$besetzung."";
    $abfrage.= " )";
}

if ($genre <> 0){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.="KAT_genre = ".$genre."";
    $abfrage.= " )";
}
//  Liste

if (($herausgeber <> "") AND ($herausgeber <> "Bitte wählen")){
    if ($abfrage <> "") {
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='herausgeber = "'.$herausgeber.'"';
    $abfrage.= " )";
}

if (($ort <> "") AND ($ort <> "Bitte wählen")){
    if ($abfrage <> "") {
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='ort = "'.$ort.'"';
    $abfrage.= " )";
}

if (($standort <> "") AND ($standort <> "Bitte wählen")){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='standort = "'.$standort.'"';
    $abfrage.= " )";
}

if (($komponist <> "") AND ($komponist <> "Bitte wählen")){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='komponist = "'.$komponist.'"';
    $abfrage.= " )";
}

if (($verlag <> "") AND ($verlag <> "Bitte wählen")){
    if ($abfrage <> ""){
        $abfrage.= " AND (";
    }
    else {
        $abfrage.= " (";
    }
    $abfrage.='abfrage = "'.$abfrage.'"';
    $abfrage.= " )";
}

// Ausgabe
    $auswertung = "SELECT * FROM titel WHERE";
    $auswertung.= $abfrage;
    $auswertung2 =  "SELECT
                    MAX(a.ID) AS Maximum,
                    t.*,
                    CASE WHEN a.rueckgabedatum Is Null Then 'Titel ist ausgeliehen' Else 'Titel ist verfügbar' End As Ausgeliehen
                    FROM titel t
                    LEFT JOIN ausgeliehen a
                    ON a.Titelnr =  t.ID
                    GROUP BY Ausleihdatum DESC";

$ergebnis = mysql_query($auswertung);
$ergebnis2 = mysql_query($auswertung2);
while($row = mysql_fetch_object($ergebnis)){

error_reporting(-1);
    echo '<tr>'."\r\n";
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n";
    echo '<td>'.$row->Komponist.'</td>'."\r\n";
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n";
    echo '<td>'.$row->Verlag.'</td>'."\r\n";
    $id=$row->ID;
    while($row2 = mysql_fetch_object($ergebnis2)){
        $id2=$row2->ID;
        if($id == $id2){
            echo '<td>'.$row2->Ausgeliehen.'</td>'."\r\n";
        }
    }
    echo '</tr>';
    }
    echo '</table>';
?>
 
In deinen Scripten ist für SQL-Injection Tür und Tor offen..
Was ist mit den CREATE TABLE-Anweisungen?
 
IceMatrix schrieb:
In deinen Scripten ist für SQL-Injection Tür und Tor offen..
Was ist mit den CREATE TABLE-Anweisungen?
OK wie kann ich das umgehen?
reicht das nicht als create table?
PHP:
echo '<table width="1000"  cellpadding="10" cellspacing="10" border="10">';
echo '<tr>';
echo '<th>Titel</th>';
echo '<th>Komponist</th>';
echo '<th>Herausgeber</th>';
echo '<th>Verlag</th>';
echo '<th>Ausgeliehen</th>';
echo '</tr>';
 
IceMatrix schrieb:
Das ist kein CREATE TABLE, sondern eine HTML Tabelle. Ich brauch das Tabellenschema der DATENBANK.

-> http://de.wikipedia.org/wiki/SQL-Injection
Danke für deine Mühe und Geduld!
Zum Thema SQL-Injection habe ich gegoogelt, aber noch nicht zu 100% verstanden. Mein Befehl mysql_real_escape_string() muss ja vor der querry kommen.
Ich habe es so versucht.
PHP:
$titel=mysql_real_escape_string($_POST['titel']);
$beschreibung=mysql_real_escape_string($_POST['beschreibung']);
$begleitmaterial=mysql_real_escape_string($_POST['begleitmaterial']);
$typ=mysql_real_escape_string($_POST['typ']);
$herausgeber=mysql_real_escape_string($_POST['herausgeber']);
$ort=mysql_real_escape_string($_POST['ort']);
$standort=mysql_real_escape_string($_POST['standort']);
$beschreibung=mysql_real_escape_string($_POST['beschreibung']);
$begleitmaterial=mysql_real_escape_string($_POST['begleitmaterial']);
$art=mysql_real_escape_string($_POST['art']);
$fachbereich=mysql_real_escape_string($_POST['fachbereich']);
$schwierigkeit=mysql_real_escape_string($_POST['schwierigkeit']);
$komponist=mysql_real_escape_string($_POST['komponist']);
$verlag=mysql_real_escape_string($_POST['verlag']);
$besetzung=mysql_real_escape_string($_POST['besetzung']);
$genre=mysql_real_escape_string($_POST['genre']);
Ist das richtig?Und muss ich hier das mysql_real_escape_string auch noch wo setzen?
PHP:
    $auswertung = "SELECT * FROM titel WHERE";
    $auswertung.= $abfrage;
    $auswertung2 =  "SELECT
                    MAX(a.ID) AS Maximum,
                    t.*,
                    CASE WHEN a.rueckgabedatum Is Null Then 'Titel ist ausgeliehen' Else 'Titel ist verfügbar' End As Ausgeliehen
                    FROM titel t
                    LEFT JOIN ausgeliehen a
                    ON a.Titelnr =  t.ID
                    GROUP BY Ausleihdatum DESC";

$ergebnis = mysql_query($auswertung);
$ergebnis2 = mysql_query($auswertung2);
while($row = mysql_fetch_object($ergebnis)){

Ich nutze Momentan XAMPP um das ganze zu testen. So wie ich es gepostet habe, bekomme ich eine Fehlermeldung
Code:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\xampp\htdocs\ausgabe.php on line 11

Das mit dem Tabellenschema habe ich nicht ganz so verstanden. Ich hoffe du meinst wie meine SQL Tabellen aufgebaut sind? Fals ja, füge ich sie als Bild hinzu(siehe Bilder)
kurze Erklärung zu den Tabellen:

Bild Tabellen zeigt alle Tabellen die ich habe. Alle Tabellen die mit kat_ anfangen, verknüpfe ich mit left join auf Titel.

Bild Titel zeigt wie meine Tabelle Titel aufgebaut ist

Bild Ausgeliehen2 zeigt meine Tabelle ausgeliehen. Diese habe ich zum Verständnis nach nur einer Titelnr gefiltert. Wenn ein Titel ausgeliehen wird, bekommt dieser eine ID. Kommt der Titel wieder zurück und wird erneut ausgeliehen, so bekommt er eine andere ID. Steht bei "rueckgabedatum" ein Wert drin, so ist der Titel verfügbar. Steht nichts drin, so ist er ausgeliehen.
folgende Abfrage prüft dies:
PHP:
SELECT
                    MAX(a.ID) AS Maximum,
                    t.*,
                    CASE WHEN a.rueckgabedatum Is Null Then 'Titel ist ausgeliehen' Else 'Titel ist verfügbar' End As Ausgeliehen
                    FROM titel t
                    LEFT JOIN ausgeliehen a
                    ON a.Titelnr =  t.ID
                    GROUP BY Ausleihdatum DESC";
Ich hoffe das waren die Infos die du gebraucht hast?
Ergänzung ()

Sry Bilder vergessen
Ergänzung ()

Die Sache mit der XAMPP Fehlermeldung hat sich erledigt.
Ich habe statt mysql_real_escape_string einfach mysql_escape_string genommen und dann gings.
Ergänzung ()

So ich würde das Konzept gerne über Bord werfen und es anders machen.
In meiner ersten Abfrage sollen aus dem Formular die Eingaben des users angezeigt werden.
In der zweiten Abfrage soll dann zur Auswahl des Users angezeigt werden was verfügbar ist undw as nicht.
Anzeigen der Werte die der User ausgewählt hat klappt
PHP:
// Ausgabe
    $auswertung = "SELECT * FROM titel WHERE";
    $auswertung.= $abfrage;

$ergebnis = mysql_query($auswertung);
while($row = mysql_fetch_object($ergebnis)){

error_reporting(-1);
    // meine erste Abfrage hier wird die Auswahl des users angezeigt
    echo '<tr>'."\r\n";
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n";
    echo '<td>'.$row->Komponist.'</td>'."\r\n";
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n";
    echo '<td>'.$row->Verlag.'</td>'."\r\n";
    $id=$row->ID;
Und danach soll geschaut werden ob die Titel verfügbar sind oder nicht und das bekomme ich nicht hin. Kann mir hierbei jemand helfen?
soweit habe ich es schon
PHP:
// Ausgabe
    $auswertung = "SELECT * FROM titel WHERE";
    $auswertung.= $abfrage;

$ergebnis = mysql_query($auswertung);
while($row = mysql_fetch_object($ergebnis)){

error_reporting(-1);
    // meine erste Abfrage hier wird die Auswahl des users angezeigt
    echo '<tr>'."\r\n";
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n";
    echo '<td>'.$row->Komponist.'</td>'."\r\n";
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n";
    echo '<td>'.$row->Verlag.'</td>'."\r\n";
    $id=$row->ID;
    // hier soll eine zweite Abfrage erfolgen, die dem user sagt ob ein Titel verfügbar ist oder nicht und in der Spalte ausgeliehen angezeigt
    $auswertung2 =  "SELECT * FROM ausgeliehen WHERE Titelnr = $row->ID AND ISNULL(rueckgabedatum)";
    $ergebnis2 = mysql_query($auswertung2);
    $row2 = mysql_fetch_object($ergebnis2){
        if $auswertung2 Is Null Then{
            'Titel ist ausgeliehen';
        }
        else{
            'Titel ist verfügbar';
        }
        $id2=$row2->ID;
        if($id == $id2){
            echo '<td>'.$row2->Ausgeliehen.'</td>'."\r\n";
        }
    }
    echo '</tr>';
    }
    echo '</table>';
Ergänzung ()

Das Thema hat sich erledigt, ich habe es nun hinbekommen.
Ich habe es so gelöst:
PHP:
// Ausgabe
    $auswertung = "SELECT * FROM titel WHERE";
    $auswertung.= $abfrage;

$ergebnis = mysql_query($auswertung);
while($row = mysql_fetch_object($ergebnis)){

error_reporting(-1);
    // meine erste Abfrage hier wird die Auswahl des users angezeigt
    echo '<tr>'."\r\n";
    echo '<td><a href = "weiterleiten.php?id='.$row->ID.'" target ="blank"/>'.$row->Titel.'</a></td>'."\r\n";
    echo '<td>'.$row->Komponist.'</td>'."\r\n";
    echo '<td>'.$row->Herausgeber.'</td>'."\r\n";
    echo '<td>'.$row->Verlag.'</td>'."\r\n";
    $id=$row->ID;
    // hier soll eine zweite Abfrage erfolgen, die dem user sagt ob ein Titel verfügbar ist oder nicht und in der Spalte ausgeliehen angezeigt
    $auswertung2 =  "SELECT * FROM ausgeliehen WHERE Titelnr = $row->ID AND ISNULL(rueckgabedatum)";
    $ergebnis2 = mysql_query($auswertung2);
    if(mysql_num_rows($ergebnis2)<>0 ){
       echo '<td>Titel ist ausgeliehen</td>'."\r\n";
       echo '</tr>';
    }
    else{
       echo '<td>Titel ist verfügbar</td>'."\r\n";
       echo '</tr>';
    };
 }
    echo '</table>';
?>
 

Anhänge

  • Tabellen.JPG
    Tabellen.JPG
    21,1 KB · Aufrufe: 254
  • Tabelle Titel.JPG
    Tabelle Titel.JPG
    62,7 KB · Aufrufe: 222
  • Ausgeliehen2.JPG
    Ausgeliehen2.JPG
    23,5 KB · Aufrufe: 256
Zurück
Oben