query(über relationelle Tabelle)-Ausgabeproblem-ich weiss einfach immer weiter



  • Hallo alle zusammen,

    ich weiss einfach nimmer woran es liegt. Ich schreib einfach mal die Fehlermeldung und danach den Code. Eigentlich wollte ich noch ein Bild anhängen von meiner Datenbankstruktur aber des scheint net zu gehen.

    Author, Bearbeiter und Eintrag sind jeweils eine Tabelle. Während hier Eintrag die Fremdschlüssel von Author und Bearbeiter drinnen hat.

    Fehlermeldung : Unknown column 'A.Author_name' in 'field list'

    $query = ("SELECT idEintrag,A.Author_name,B.Bearbeiter_name,Zeit,Datum,Eintrag 
    	FROM Author A,Bearbeiter B,Eintrag
    	WHERE E.Author_ID=A.Author_ID  AND
    	E.Bearbeiter_ID=B.Bearbeiter_ID;");
    
    	$result = mysql_query($query) OR die(mysql_error());
    	echo("<table border='1'>");
    	//echo("<tr><th>Anzeige der Tabelle: ".$woher."</th></tr>");
    	while ($line = mysql_fetch_array($result)) {
    	?>
    	<tr>
    	<td><?php $line[idEintrag] ?></td>
    	<td><?php $line[A.Author_name] ?></td>
    	<td><?php $line[B.Bearbeiter_name]?></td>
    	<td><?php $line[Zeit] ?></td>
    	<td><?php $line[Datum] ?></td>
    	<td><?php $line[Eintrag]?></td>
    	</tr>");
    	<?php
    	}
    	echo("</table>");
    	mysql_free_result($result);
    	}
    

    Vielleicht weiss jemand von euch ja weiter. Ich verstehe es nimmer

    auch so gehts nicht

    $query = ("SELECT idEintrag, A.name as Authorname ,B.name as Bearbeitername,Zeit,Datum,Eintrag 
    	FROM Author A,Bearbeiter B,Eintrag E
    	WHERE E.Author_ID=A.Author_ID  AND
    	E.Bearbeiter_ID=B.Bearbeiter_ID;");
    
    	$result = mysql_query($query) OR die(mysql_error());
    	//echo("<table border='1'>");
    	while ($line = mysql_fetch_assoc($result)) {
    	echo("
    	<tr>
    [b]LINE37[/b]	<td>$line['idEintrag']</td>
    	<td>$line['Authorname']</td>
    	<td>$line['Bearbeitername']</td>
    	<td>$line['Zeit']</td>
    	<td>$line['Datum']</td>
    	<td>$line['Eintrag']</td>
    	</tr>");
    	echo("</table>");
    	mysql_free_result($result);
    	} 
    	echo("hallo");
    }
    

    Fehlermeldung Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\webseite\Zeiterfassung\functions.php on line 37

    Ich hab keine ahnung mehr woran des liegt. BITTE HELFT MIR



  • Schüler schrieb:

    A.Author_name
    
    A.name as Authorname
    

    und wie heißt das Feld denn nun?



  • Das hier war im Query beim ersten Beispiel, welche ich gepostet habe

    A.Author_name
    

    aber leider funktionierte es nicht.

    Im zweiten Bespiel was nicht im zusammenhang mit dem ersten steht probierte ich über "AS" einen andern Lösungsweg. "AS" deklariert das darauffolgende Wort als "Alias". Ich dachte so eventuell mein Problem lösen zu können. Aber leider ging auch das nicht.

    Somit zwutz bin ich dankbar für Tipps für beide Bespiele.

    Ich hoffe meine Erklärung war hier verständlich ausgedrückt.



  • ich weiß, was AS macht, trotzdem ist aus dem Query immernoch nicht die Tabellenstruktur ersichtlich...

    außerdem sind beide while-Schleifen fehlerhaft. Die erste enthält PHP-Code außerhalb von PHP, und die zweite dürfte maximal einmal durchlaufen (du machst einen free_result innerhalb der Schleife, in der du auf das result zugreifst)

    außerdem: woher soll der PHP-Parser wissen, was du mit <?php $line[idEintrag] ?> willst?

    Also erstmal solltest du deinen Code soweit von den mehr als groben Fehlern reinigen und dich dann an die Queries wagen



  • Ja stimmt der erste ist fehlerhaft das hab ich im nachhinein auch jetzt festgestellt. Aber selbst wo ich jetzt das

    mysql_free_result($result);
    

    aus dem 2 Beispiel

    rausgenommen hab aus der Klammer ( was dumm von mir war reinzuschreiben) ging es dennoch nicht. Er hatte immer Probleme mit dem e.Wert.

    Egal ob es assoziatives oder numerisches array war.
    
    mysql_query("CREATE TABLE Eintrag (
      idEintrag int(11) NOT NULL AUTO_INCREMENT,
      Author_ID int(11) NOT NULL,
      Bearbeiter_ID int(11) NOT NULL,
      Datum DATE NULL,
      Zeit TIME NULL,
      Eintrag TEXT NULL,
      PRIMARY KEY(idEintrag, Author_ID, Bearbeiter_ID),
      INDEX Eintrag_FKIndex1(Author_ID),
      INDEX Eintrag_FKIndex2(Bearbeiter_ID)
      );");
    

    Hier ist nochmal das Create von Eintragtabelle. Neben diese Tabelle gibt es dann eben noch die 2 Tabellen Author und Benutzer. Ich poste hier mal nur das von Author weil die Tabelle von Benutzer gleich ist vom Aufbau.

    mysql_query("CREATE TABLE Author ( 
    Author_ID int(11) NOT NULL auto_increment,name varchar(100) NOT NULL, 
    PRIMARY KEY(Author_ID));");
    


  • Hallo,

    worauf zwutz hinaus will ist, dass du in deiner Tabellenarchitektur eine Tabelle mit Namen "Author_name" hast, sie im anderen Code aber als "name" referenzierst. Irgendetwas stimmt da mit der Benennung nicht ...



  • Nach der Tabellenstruktur hättest Du nur das Select-Statement aus dem zweiten Codestück mit der Ausgabe aus dem ersten Codestück kombinieren müssen, da die zweite Fehlermeldung sich garnicht auf das Query bezieht 😉



  • Ah stimmt ja. Tja manchmal sieht man einfach nach einiger Zeit wenn man sich mit einem Problem beschäftigt die Fehler gar nimmer mehr. Des schaue ich mir jetzt nochmal genauer an.

    Ich danke für eure Tipps und Anregungen


Anmelden zum Antworten