ich habe mit php eine DB Abfrage implementiert.
Mittels HTML Formular kann man die DB Abfrage auf seine eigenen Anforderungen anpassen. (Es geht um die Abfrage einer Lehrveranstaltungsdatenbank wo man Lehrveranstaltungen nach Sommer od. Wintersemester filtern kann, etc.)
Außerhalb von Typo3 funktioniert alles prima. sobald ich das php script in Typo3 einbinde wird nur mehr das html formular angezeigt und die db abfrage funktioniert nicht mehr. es werden keine Lehrveranstaltungen aufgelistet.(php page content extension ist installiert)
weiters habe ich bei form action auf die index.php?id=3 verwiesen. (form action leer zu lassen hat auch nicht funktioniert)
wie kann ich das script in vollem funktionsumfang in typo3 nutzen ?
liefert Dein php-Skript grundsätzlich content zurück ?
(also auch nur mal zum Test einen String ...)
Kannst Du uns mit paar mehr Infos versorgen (Code des php - Typoscriptauszug) - ich glaube die Hellseherabteilung hier ist gerade im Urlaub und da must Du halt mit uns vorlieb nehmen und uns dazu eben Infos geben ....
Tom
hi
poste ma code.......
hm.........wie hast du die connection zur datenbank aufgebaut?
pconnect?????
gib ma code
cu
thorsten
Datei1: connect2db.inc.php (Stellt Verbindung zur DB her und macht SQL Abfragen)
<?php
$conn = "";
connect2db();
function connect2db(){
global $conn;
$server = "localhost";
$user = "root";
$db = "test";
$conn = @mysql_connect($server, $user) or die("Fehler beim Verbinden mit Datenbank auf ".$server."
");
@mysql_select_db($db, $conn) or die("Fehler beim Auswählen der ".$db."Datenbank
");
}
function getLVA($sql_statement){
global $conn;
$result = mysql_query( "SELECT * FROM wt_lva, wt_lva_prof, wt_prof
WHERE wt_lva.nr = wt_lva_prof.lva_nr
AND wt_lva.bezeichnung = wt_lva_prof.lva_bezeichnung
AND wt_lva.semester = wt_lva_prof.lva_semester
AND wt_prof.id = wt_lva_prof.prof_id
".$sql_statement."
ORDER BY wt_lva.nr asc",$conn );
if( ! $result ){
die ( "getRows fatal error: ".mysql_error() );
}
else{
return $result;
}
}
?>
Datei 2: suche_lva.php (Formular zur Filterung)
<?php
include("fileadmin/scripts/includes/connect2db.inc.php");
?>
<?php
print "<table align='left' border='0' cellspacing='0' cellpadding='0'>";
print "<tr><td colspan='6'>";
print "<form action='index.php?id=3' method='POST'>";
print "Studium: <select name='studium' width='150'><option selected='selected'>Alle Studienrichtungen</option>";
print "<option value='WINF'>Wirtschaftsinformatik</option>";
print "<option value='INF'>Informatik</option>";
print "</select>";
print "<br><br>Semester: <select name='semester' width='150'><option value='Alle Semester'>Alle Semester</option>";
print "<option value='WS 03/04'>Wintersemester</option>";
print "<option value='SS 04'>Sommersemester</option>";
print "</select>";
print "<br><br>Typ: <select name='typ' width='150'><option selected='selected'>Alle Lehrveranstaltungstypen</option>";
print "<option value='VO'>VO</option>";
print "<option value='VU'>VU</option>";
print "<option value='UE'>UE</option>";
print "<option value='LU'>LU</option>";
print "<option value='PR'>PR</option>";
print "<option value='PS'>PS</option>";
print "<option value='VL'>VL</option>";
print "</select>";
print "<br><br>Empfohlenes Semester: <select name='empfohlenes_semester' width='150'><option selected='selected'>Alle Semester</option>";
print "<option value='1'>1.</option>";
print "<option value='2'>2.</option>";
print "<option value='3'>3.</option>";
print "<option value='4'>4.</option>";
print "<option value='5'>5.</option>";
print "<option value='6'>6.</option>";
print "<option value='7'>7.</option>";
print "<option value='8'>8.</option>";
print "<option value='9'>9.</option>";
print "</select>";
print "<br><br>Forschungsgruppe: <select name='forschungsgruppe' width='150'><option selected='selected'>Alle Forschungsgruppen</option>";
print "<option value='1'>Grp 1</option>";
print "<option value='2'>Grp 2</option>";
print "<option value='3'>Grp 3</option>";
print "<option value='4'>Grp 4</option>";
print "<option value='5'>Grp 5</option>";
print "</select>";
print " <br><br><input type='submit' name='formaction' value='LVA suchen' class='submit'>";
print "</form>";
print "</td></tr>";
if(isset($studium)){
if($studium == "Alle Studienrichtungen"){
$sql_statement = "";
}
else{
$sql_statement = "AND wt_lva.details ='".$studium."'";
}
if($semester == "Alle Semester"){
}
else{
$sql_statement .= "AND wt_lva.semester ='".$semester."'";
}
if($typ == "Alle Lehrveranstaltungstypen"){
}
else{
$sql_statement .= "AND wt_lva.typ ='".$typ."'";
}
if($empfohlenes_semester == "Alle Semester"){
}
else{
$sql_statement .= "AND wt_lva.semester_empfehlung ='".$empfohlenes_semester."'";
}
if($forschungsgruppe == "Alle Forschungsgruppen"){
}
else{
$sql_statement .= "AND wt_lva.forschungsgruppe ='".$forschungsgruppe."'";
}
$checkrow = getLVA($sql_statement);
print "<td align='left'>Nr.:</td><td align='left'>LVA Nr.:</td><td>Bezeichnung</td><td align='left'>Typ</td><td align='left'>Stunden</td><td align='left'>Leitung</td>";
print "</tr>";
print "<tr><td colspan='6'><hr width='100%' size='1'></td><tr>";
$i = 1;
while($row = mysql_fetch_array($checkrow)){
print "<tr>";
print "<td align='left'>".$i."</td><td align='left'>".$row['nr']."</td><td><a href='index.php?id='>".$row['bezeichnung']."</a></td><td align='left'>".$row['typ']."</td><td align='center'>".$row['wochenstunden']."</td><td align='left'><a href='index.php?id='>".$row['vorname']." ".$row['nachname']."</a></td>";
print "</tr>";
$i++;
}
}
print "</table>";
?>
die Datei 2 ist völlig ident über die php extension in typo3 integriert.
$conn = @mysql_connect($server, $user) or die
was sucht denn das @ zeichen vor dem mysql_connect?
und fehlt da nicht was.. *passwort*?
wenne das @ zeichen ma wegmachen würdest, bekommste auch ne fehlermeldung..
wie gesagt.
der code funktioniert außerhalb von typo3.
wenn ich den code von vorhin in 2 dateien packe.
nämlich (connect2db.inc.php)
und (suche_lva.php)
und suche_lva.php direkt im browser aufrufe
http://localhost/dummy3.2.6/fileadmin/scripts/suche_lva.php
dann funktioniert das script einwandfrei.
sobald ich den kompletten code in typo3 reinkopiere wird nur mehr das auswahlformular angezeigt und keine ergebnisse ausgegeben.
das script greift auf eine externe mysql Datenbank und nicht auf die typo3 DB zu !!!
hans_k schrieb
sobald ich den kompletten code in typo3 reinkopiere wird nur mehr das auswahlformular angezeigt und keine ergebnisse ausgegeben.
jo da is ja das passwort was fehlt!
das script greift auf eine externe mysql Datenbank und nicht auf die typo3 DB zu !!!
moment!
typo3 is doch mysql!!!! 😉
cu
thorsten
hans_k schriebwie gesagt.
der code funktioniert außerhalb von typo3.
wenn ich den code von vorhin in 2 dateien packe.
nämlich (connect2db.inc.php)
und (suche_lva.php)
und suche_lva.php direkt im browser aufrufe
http://localhost/dummy3.2.6/fileadmin/scripts/suche_lva.php
dann funktioniert das script einwandfrei.
sobald ich den kompletten code in typo3 reinkopiere wird nur mehr das auswahlformular angezeigt und keine ergebnisse ausgegeben.
das script greift auf eine externe mysql Datenbank und nicht auf die typo3 DB zu !!!
Ich wusste gar nicht das es ne type3db gibt !!
Die hätte ich auch gerne....
Ist die von IBM ?
Immer Besser Manuell ?
Nenene
Dosul
wenn für die DB kein passwort definiert wurde dann brauche ich auch keines um mich zu connecten.
mit Typo3 DB is natürlich die für Typo3 erstellte mysql db gemeint.
hans_k schriebwenn für die DB kein passwort definiert wurde dann brauche ich auch keines um mich zu connecten.
mit Typo3 DB is natürlich die für Typo3 erstellte mysql db gemeint.
kein passwort..?
haste mal überprüft ob deine externe datenbank überhaupt noch existiert? vieleicht liegts daran.. *löl*
ist zwar ne sehr heisse schiene die du da färst aber egal .. *g*
so wie ich es jetzt verstanden habe bekommste das html gerüst aber kein ergebnis..
versuchs ma mit dieser function.. vileicht hilft sie dir weiter.. und lass dir bitte die query ausgeben..
http://de.php.net/manual/de/function.mysql-error.php
gruss clan
zu testzwecken läuft das ganze nur lokal ohne passwort. im live betrieb wird dann natürlich ein passwort verwendet.
nachdem das skript außerhalb von Typo3 funktioniert dürfte die DB noch existieren.... ;-)
wenn ich zB.: auf den Submit Button drücke, dann wird die seite neu geladen. Ich glaube, dass dabei die Parameter des Formulars verloren gehen und deswegen nichts angezeigt wird....
das script funktioniert auch wenn ich es über einen iframe in typo3 einbette. Allerdings muss man die höhe des iframes vorher definieren, was nicht wirklich gut aussieht.
<iframe src="fileadmin/scripts/suche_lva.php" width="100%" height="2200" frameborder="0">
</iframe>
hans_k schriebwenn ich zB.: auf den Submit Button drücke, dann wird die seite neu geladen. Ich glaube, dass dabei die Parameter des Formulars verloren gehen und deswegen nichts angezeigt wird....
jap, das war auch meine vermutung, deswegen solltest du ja auch die query ausgeben lassen + mysql_error()..
echo $sql_query.mysql_error();
sorry, aber das bringt mir auch keine Fehlermeldung. sql query dürft also in ordnung sein.
hans_k schriebsorry, aber das bringt mir auch keine Fehlermeldung. sql query dürft also in ordnung sein.
dürfte?
haste dir die query etwa nicht ausgeben lassen?
der sucht evtl nämlich nach gar nix..
da die post vars evtl. leer sein können
hans_k schriebsorry, aber das bringt mir auch keine Fehlermeldung. sql query dürft also in ordnung sein.
hallo???? :o
hat dir die query nichts ausgegeben????
wenn du keinen mysql_error () kriegst, ist es ja in ordnung, aber die query sollte schon was ausspucken... #giggle#
wenn nicht dann hast du aber ein problem mit derselbigen 😉
cu
thorsten
ps: jetzt mach mal das was der clan dir gesagt hat! #evil#
Das Problem liegt ganz einfach daran, dass die Parameter welche das Script übergeben will (zB:'studium') zwar an die aufzurufende Seite (index.php?id=3) übergeben werden, aber Typo3 diese nicht so weitergibt.
Wenn man nun im eigenen Script die Variable studium ($_POST['studium']) abfragen will, bekommt man nichts raus, da Typo3 die Post-Variablen anders speichert:
Laut einen anderen Posting (
#15454) kann man die Variable wiefolgt auslesen:
$varible=t3lib_div::GPvar("variable");
Habe es selber noch nicht ausprobiert.
Ist natürlich etwas unpraktisch, da man das bestehende Skript umschreiben muss und es danach nur mehr in Typo3 läuft aber nicht mehr als Standalone.