Zum Inhalt springen

php problem

Erstellt am 22. Juli 2004 · 15 Antworten · letzte Antwort am 4. Oktober 2004

Tags: Frage

hans_k ·

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 ?

tomww ·

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

TW ·

hi
poste ma code.......
hm.........wie hast du die connection zur datenbank aufgebaut?

pconnect?????

gib ma code

cu
thorsten

hans_k ·

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 "&nbsp;&nbsp;&nbsp;<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.

clan ·

$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..

hans_k ·

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 !!!

TW ·
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

dosul ·
hans_k schrieb

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 !!!

Ich wusste gar nicht das es ne type3db gibt !!
Die hätte ich auch gerne....
Ist die von IBM ?
Immer Besser Manuell ?

Nenene
Dosul

hans_k ·

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.

clan ·
hans_k schrieb

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.

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

hans_k ·

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>
clan ·
hans_k schrieb

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....

jap, das war auch meine vermutung, deswegen solltest du ja auch die query ausgeben lassen + mysql_error()..

echo $sql_query.mysql_error();
clan ·
hans_k schrieb

sorry, 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

TW ·
hans_k schrieb

sorry, 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#

dan33 ·

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.