[gelöst] externe php-scripte im cms-content einbinden

Deutschsprachiger Support für CMS Made Simple
Locked
babulski

[gelöst] externe php-scripte im cms-content einbinden

Post by babulski »

Moin.
Ein Kunde von mir hat in Eigenregie ein script an CMSMS angedockt - seine Funktion: aus einer externen DB wird qua PLZ eine Händlerliste ausgeben.
Das Script funktioniert soweit wunderbar - nur: jetzt möchte der Kunde, dass der Output des Scripts nicht in einer neuen Seite, sondern im Content des CMS erscheint. Macht ja auch Sinn ...

Die PLZ-Abfrage ist im Content per UDT namens {plzabfrage} eingebunden.

Code: Select all

$leitzahl=$params['leitzahl'];
$leit2 = substr("$leitzahl",0,2);
include "kundensuche.php";
Die includierte php schaut folgendermassen aus:

Code: Select all

[....]blablabla[...]

<span class="Stil2">
<form target="_blank" action="kundenliste.php" method="post">
    <span class="Stil2">Postleitzahl</span>     
     <input type="text" size="5" name="leit2" />   
     <input type="image" src="../../../../images/suche.gif" />
</form>
</span>
Es wird also über ein Formular die Kundeliste nach PLZ als 'kundenliste.php' in einem neuen Fenster geöffnet (target="_blank").

Das soll so nicht mehr sein. Okay. Hab ich schnell mal was probiert:

1. Neue Content-Seite erstellt (Seiten-Alias 'kundenliste')
2. Dort per UDT die o.g. 'kundenliste.php' includiert

3. Das Formular (UDT {plzabfrage} wurde folgendermassen abgeändert.

Code: Select all

<form action="index.php/kundenliste" method="post">
Bemerkung: Ich habe SEO-URL's an.

So, das Script 'kundenliste.php' wird jetzt sauber gestartet, der Content (Händerliste nach PLZ-Abfrage) wird auch im Content des CMS angezeigt --

NUR: die PLZ, die man im Formular eingibt, wird (name="leit2" ) wird NICHT an das Script übergeben.

Okay. Nächster Versuch: method="get" statt "post".

Ergebnis: Seite nicht gefunden (URL lautet sinngemäss: http://seite.de/index.php/kundenliste?leit2=12345)

Grummel ...

Muss vielleicht eine eigene 'function' aus der kundenliste.php' bauen, damit die Parameter korrekt übergeben werden?
Kann ich mir eigentlich nicht vorstellen. Aber, ich bin ja auch immer noch kein smarty/php-wizard  ;)

For the Records - hier das inkiminierte Script:

Code: Select all

<?php
function Umlaute($text){
   //DIE UMLAUTE WERDEN KONVERTIERT  /////
   $pattern1="/ä/";
   $replace1="ä";
   $text=preg_replace($pattern1,$replace1, $text);
   $pattern2="/ö/";
   $replace2="ö";
   $text=preg_replace($pattern2,$replace2, $text);
   $pattern3="/ü/";
   $replace3="ü";
   $text=preg_replace($pattern3,$replace3, $text);
   $pattern1a="/Ä/";
   $replace1a="Ä";
   $text=preg_replace($pattern1a,$replace1a, $text);
   $pattern2a="/Ö/";
   $replace2a="Ö";
   $text=preg_replace($pattern2a,$replace2a, $text);
   $pattern3a="/Ü/";
   $replace3a="Ü";
   $text=preg_replace($pattern3a,$replace3a, $text);
   $pattern4="/ß/";
   $replace4="ß";
   $text=preg_replace($pattern4,$replace4, $text);
   return $text;
}


include("/blabla/dbdata.inc.php"); 
   //einbinden der externen DB //

$lang=strlen($leit2);
$anz =  $leit2;
echo "<br />";
if ($lang==0)
  {echo "Sie haben keine Postleitzahl eingegeben. Es wird nun die Postleitzahl 00** gesucht."; 
  $leit2="00000";}
else
{if($lang==1)
  {$leit2=$leit2*10000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  else
  {
  if($lang==2)
  {$leit2=$leit2*1000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  }}; 
 
echo "<br />";
echo "<br/> ";
$limit= 100;
//$leit2=substr($leit2,0,2);//
$sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
$result=mysql_db_query($db, $sql); 
$menge=mysql_num_rows($result);   
if ($menge == 0) 
{	echo "Ihre Suche: ".$leit2." ergab kein Ergebnis. Die Suche wurde entsprechend erweitert.";
  echo "<br />";
  $leit2=substr($leit2,0,2);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  $menge=mysql_num_rows($result);   
  if ($menge == 0)
  {$leit2=substr($leit2,0,1);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  
  $menge=mysql_num_rows($result);}
  while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo "<br />";
      echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";
      }

echo "</br>";}
else {		
	while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";}
      }																									
					?>
Last edited by babulski on Sat Aug 04, 2007 2:36 pm, edited 1 time in total.
cyberman

Re: externe php-scripte im cms-content einbinden

Post by cyberman »

babulski wrote: Aber, ich bin ja auch immer noch kein smarty/php-wizard  ;)
Hmm, bin ebenfalls weit davon entfernt :) - hast du schon mal versucht, das ganze in einen Tag bzw. Plugin zu packen (anstatt benutzerdefinierter Tag)?

PS:
babulski wrote: [....]blablabla[...]



    Postleitzahl   
     
   

Dass du dir damit die Validität versaust, weisst du sicherlich ;).

PPS:

Code: Select all

<?php
function Umlaute($text){
   //DIE UMLAUTE WERDEN KONVERTIERT  /////
   $pattern1="/ä/";
   $replace1="ä";
   $text=preg_replace($pattern1,$replace1, $text);
   $pattern2="/ö/";
   $replace2="ö";
   $text=preg_replace($pattern2,$replace2, $text);
   $pattern3="/ü/";
   $replace3="ü";
   $text=preg_replace($pattern3,$replace3, $text);
   $pattern1a="/Ä/";
   $replace1a="Ä";
   $text=preg_replace($pattern1a,$replace1a, $text);
   $pattern2a="/Ö/";
   $replace2a="Ö";
   $text=preg_replace($pattern2a,$replace2a, $text);
   $pattern3a="/Ü/";
   $replace3a="Ü";
   $text=preg_replace($pattern3a,$replace3a, $text);
   $pattern4="/ß/";
   $replace4="ß";
   $text=preg_replace($pattern4,$replace4, $text);
   return $text;
}
Gabs diese Funktion irgend wo im Sonderangebot? Hab ich da was verpasst?

Dafür gibts 'ne php-Funktion htmlentities()

http://phpforum.de/php/php-handbuch/sta ... ities.html
m266

Re: externe php-scripte im cms-content einbinden

Post by m266 »

Versuche mal das. Damit binde ich externen Content in die Seite eine:

Einbinden externer Dateien (php, html) im Textbereich
Zuerst wird die gewünschte Datei auf den Server kopiert. Anschließend ist ein benutzerdefinierter Tag zu erstellen.

Beispiel für einen Tag:

terminliste

include „terminliste.htm“;

Der obige Pfad setzt voraus, dass sich die  Datei terminliste.htm“ im Root des CMS befindet und ist bei Bedarf anzupassen.

Im Textfeld des Editors wird der Tag {terminliste} an der gewünschten Stelle eingefügt. Der Inhalt der Datei erscheint dann beim Aufruf der Seite im Textbereich.


Gruß m266
babulski

Re: externe php-scripte im cms-content einbinden

Post by babulski »

cyberman wrote:
Hmm, bin ebenfalls weit davon entfernt :) - hast du schon mal versucht, das ganze in einen Tag bzw. Plugin zu packen (anstatt benutzerdefinierter Tag)?
Wenn du mir sagst, wie ich eine eigene 'function' (plug-in) erstelle, kann ich dir darauf antworten ... :D

Code: Select all

[color=red]<span class="Stil2">[/color]
<[color=green]form [/color]target="_blank" action="kundenliste.php" method="post">
    <span class="Stil2">Postleitzahl</span>     
     <input type="text" size="5" name="leit2" />   
     <input type="image" src="../../../../images/suche.gif" />
</form>
[color=red]</span>[/color]
cyberman wrote:Dass du dir damit die Validität versaust, weisst du sicherlich ;).
Dieser Code ist  nicht von mir. Der wird lecker validiert, wenn ich das alles überarbeite. Dan kriegen die SPANS noch 'title' ...

Code: Select all

<?php
function Umlaute($text){
   //DIE UMLAUTE WERDEN KONVERTIERT  /////
   $pattern1="/ä/";
   $replace1="ä";
   $text=preg_replace($pattern1,$replace1, $text);
   $pattern2="/ö/";
   $replace2="ö";
   $text=preg_replace($pattern2,$replace2, $text);
   $pattern3="/ü/";
   $replace3="ü";
   $text=preg_replace($pattern3,$replace3, $text);
   $pattern1a="/Ä/";
   $replace1a="Ä";
   $text=preg_replace($pattern1a,$replace1a, $text);
   $pattern2a="/Ö/";
   $replace2a="Ö";
   $text=preg_replace($pattern2a,$replace2a, $text);
   $pattern3a="/Ü/";
   $replace3a="Ü";
   $text=preg_replace($pattern3a,$replace3a, $text);
   $pattern4="/ß/";
   $replace4="ß";
   $text=preg_replace($pattern4,$replace4, $text);
   return $text;
}
cyberman wrote: Gabs diese Funktion irgend wo im Sonderangebot? Hab ich da was verpasst?

Dafür gibts 'ne php-Funktion htmlentities()

http://phpforum.de/php/php-handbuch/sta ... ities.html
Richtig. Das weiss mein Kunde aber nicht ...
babulski

Re: externe php-scripte im cms-content einbinden

Post by babulski »

m266 wrote: Versuche mal das. Damit binde ich externen Content in die Seite eine:

Einbinden externer Dateien (php, html) im Textbereich
Zuerst wird die gewünschte Datei auf den Server kopiert. Anschließend ist ein benutzerdefinierter Tag zu erstellen.

Beispiel für einen Tag:

terminliste

include „terminliste.htm“;

Der obige Pfad setzt voraus, dass sich die  Datei terminliste.htm“ im Root des CMS befindet und ist bei Bedarf anzupassen.

Im Textfeld des Editors wird der Tag {terminliste} an der gewünschten Stelle eingefügt. Der Inhalt der Datei erscheint dann beim Aufruf der Seite im Textbereich.


Gruß m266
Hallo m266.
Das werde ich nachher mal ausprobieren -- obwohl ich auf Anhieb keinen wesentlichen Unterschied zu meinem o.g. Ansatz entdecke.

Statt einer .php wird eine .html includiert ...
Ist das die Lösung, um Parameter (leit2) an das script zu übergeben???
m266

Re: externe php-scripte im cms-content einbinden

Post by m266 »

Es kann natürlich "datei.htm" oder "datei.php" lauten.

m266
cyberman

Re: externe php-scripte im cms-content einbinden

Post by cyberman »

babulski wrote: Wenn du mir sagst, wie ich eine eigene 'function' (plug-in) erstelle,
Du erstellst eine Datei mit dem Namen function.kundenliste.php mit folgendem Inhalt

Code: Select all

<?php

function smarty_cms_kundenliste($params, &$smarty) {

    global $gCms;
		
	if($_SERVER['REQUEST_METHOD']=='POST'){
		
include("/blabla/dbdata.inc.php"); 
   //einbinden der externen DB //

$lang=strlen($leit2);
$anz =  $leit2;
echo "<br />";
if ($lang==0)
  {echo "Sie haben keine Postleitzahl eingegeben. Es wird nun die Postleitzahl 00** gesucht."; 
  $leit2="00000";}
else
{if($lang==1)
  {$leit2=$leit2*10000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  else
  {
  if($lang==2)
  {$leit2=$leit2*1000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  }}; 
 
echo "<br />";
echo "<br/> ";
$limit= 100;
//$leit2=substr($leit2,0,2);//
$sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
$result=mysql_db_query($db, $sql); 
$menge=mysql_num_rows($result);   
if ($menge == 0) 
{	echo "Ihre Suche: ".$leit2." ergab kein Ergebnis. Die Suche wurde entsprechend erweitert.";
  echo "<br />";
  $leit2=substr($leit2,0,2);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  $menge=mysql_num_rows($result);   
  if ($menge == 0)
  {$leit2=substr($leit2,0,1);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  
  $menge=mysql_num_rows($result);}
  while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo "<br />";
      echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";
      }

echo "</br>";}
else {		
	while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";}
      }																									

else
{
$leitzahl=$params['leitzahl'];
$leit2 = substr("$leitzahl",0,2);		
?>

<div class="Stil2">
<form target="_blank" action="kundenliste.php" method="post">
    <span class="Stil2">Postleitzahl</span>     
     <input type="text" size="5" name="leit2" />   
     <input type="image" src="../../../../images/suche.gif" />
</form>
</div>

<?php
}

?>
und kopierst diese ins Verzeichnis /plugins. Dann kannst du dir die ganzen Schnipsel sparen und das Script auch mit {kundenliste} aufrufen.

Ist allerdings ungetestet - ich hoffe, ich hab alles richtig reingepackt (hab gerade keinen Serverzugang in der Nähe).
Dan kriegen die SPANS noch 'title' ...
Das ändert trotzdem nix an der Sache - ein innerhalb eines wird nie valid werden ;).
Last edited by cyberman on Thu Jun 21, 2007 9:43 am, edited 1 time in total.
babulski

Re: externe php-scripte im cms-content einbinden

Post by babulski »

cyberman wrote: Du erstellst eine Datei mit dem Namen function.kundenliste.php mit folgendem Inhalt

Code: Select all

<?php

function smarty_cms_kundenliste($params, &$smarty) {

    global $gCms;
		
	if($_SERVER['REQUEST_METHOD']=='POST'){
		
include("/blabla/dbdata.inc.php"); 
   //einbinden der externen DB //

<snip>....

und kopierst diese ins Verzeichnis /plugins. Dann kannst du dir die ganzen Schnipsel sparen und das Script auch mit {kundenliste} aufrufen.

Dan kriegen die SPANS noch 'title' ...
Das ändert trotzdem nix an der Sache - ein innerhalb eines wird nie valid werden ;).
Ist schon klar, Cy - es war als Witz gemeint. Kam offenbar nicht an  :D

Danke für deine Instruktionen. Werde es gleich mal ausprobieren und sehen, was passiert.

Ach, wie ich gerade sehe: was mache ich denn mit . Das ist doch dann irgendwie rekursiv, oder?
cyberman

Re: externe php-scripte im cms-content einbinden

Post by cyberman »

Naja, ich steh heut ein bißchen auf der Leitung - die Nacht war wieder mal zu kurz 8).

Hatte schon im Gefühl, dass ich was vergessen habe - ok, hier die neue Version

Code: Select all

<?php

function smarty_cms_kundenliste($params, &$smarty) {

    global $gCms;
		
	if($_SERVER['REQUEST_METHOD']=='POST'){
		
include("/blabla/dbdata.inc.php"); 
   //einbinden der externen DB //

$lang=strlen($leit2);
$anz =  $leit2;
echo "<br />";
if ($lang==0)
  {echo "Sie haben keine Postleitzahl eingegeben. Es wird nun die Postleitzahl 00** gesucht."; 
  $leit2="00000";}
else
{if($lang==1)
  {$leit2=$leit2*10000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  else
  {
  if($lang==2)
  {$leit2=$leit2*1000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  }}; 
 
echo "<br />";
echo "<br/> ";
$limit= 100;
//$leit2=substr($leit2,0,2);//
$sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
$result=mysql_db_query($db, $sql); 
$menge=mysql_num_rows($result);   
if ($menge == 0) 
{	echo "Ihre Suche: ".$leit2." ergab kein Ergebnis. Die Suche wurde entsprechend erweitert.";
  echo "<br />";
  $leit2=substr($leit2,0,2);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  $menge=mysql_num_rows($result);   
  if ($menge == 0)
  {$leit2=substr($leit2,0,1);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  
  $menge=mysql_num_rows($result);}
  while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo "<br />";
      echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";
      }

echo "</br>";}
else {		
	while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";}
      }																									

else
{

    if (isset($_SERVER['REQUEST_URI'])) 
    {
	$action = $_SERVER['REQUEST_URI'];
    }
    else
    {
	$action = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
	if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') 
	{
	    $action .= '?'.$_SERVER['QUERY_STRING'];
	}
    }

$leitzahl=$params['leitzahl'];
$leit2 = substr("$leitzahl",0,2);		
?>

<div class="Stil2">
<form action="<?php echo $action ?>" method="post">
    <span class="Stil2">Postleitzahl</span>     
     <input type="text" size="5" name="leit2" />   
     <input type="image" src="../../../../images/suche.gif" />
</form>
</div>

<?php
}

?>
Damit sollte sich die Seite jetzt selbst aufrufen ...
babulski

Re: externe php-scripte im cms-content einbinden

Post by babulski »

Vielen Dank für deine Mühe, Cy.

Ich habe es gerade mal ausprobiert: ich bekomme einen Fehler.

Parse error: parse error in /.../plugins/function.kundenliste.php on line 171

Warning: Smarty error: [in preview:cmspreview1KB7F4 line 835]: syntax error: plugin function smarty_function_kundenliste() not found in /...l/plugins//function.kundenliste.php (Smarty_Compiler.class.php, line 795) in /.../lib/smarty/Smarty.class.php on line 1095


In Zeile 171 beginnt bei mir folgender Block:

Code: Select all

else
{

    if (isset($_SERVER['REQUEST_URI'])) 
    {
	$action = $_SERVER['REQUEST_URI'];
    }
    else
    {
	$action = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
	if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') 
	{
	    $action .= '?'.$_SERVER['QUERY_STRING'];
	}
    }
Bahnhof. Endklammer vergessen?
wuschel

Re: externe php-scripte im cms-content einbinden

Post by wuschel »

Faktisch hast du ein

else

else

ohne überhaupt ein if zu haben - kann jedenfalls nichts sehen.

Das wird überhaupt nicht funktionieren.
babulski

Re: externe php-scripte im cms-content einbinden

Post by babulski »

Liebe Leute, ich bin für eure Hilfe wirklich dankbar ...

aber: ich denke, der o.g. Weg über eine eigene function ist doch sehr, sehr kompliziert - sprich: eine Sackgasse.

@Cyberman: müsste es nicht auch korrekterweise "function smarty_cms_function_kundliste ()" heissen? So werden jedenfalls alle anderen funcs eingeleitet.

Ich glaube, ich war von Anfang an auf einem guten Weg (einbinden per UDT).
Das einzige Problem, was dabei existierte: der eingegebene Wert (plz) im Formular (leit2) wird nicht übergeben.

Dieses kleine Problem sollte doch simpel zu handlen sein, oder?

Vielleicht irgendwas mit dem HEADER REQUEST?

Ich bin für alles offen. Und dankbar natürlich auch  :)
wuschel

Re: externe php-scripte im cms-content einbinden

Post by wuschel »

Nur keine Hektik  da wurden bei if nur bei { vergessen oder versehentlich gelöscht , musst mal vergleichen.
Und Forumlardaten  einer Variablen zuordnen und diese in anderen Teilen als global nutzen, das müsste auch gehen.
babulski

Re: externe php-scripte im cms-content einbinden

Post by babulski »

Hey, hey! Es funktioniert!
Der Fehler lag nicht bei euch, oder euren scripten --
im inkriminierten Script war der Fehler, eine Variable wurde nicht korrekt zugewiesen  >:(

Ich habe jetzt alles wie angedroht als UDT gelöst.
Es hört auf den schlichten Namen {dealer_list} und beinhaltet folgenden code:

Code: Select all

include haendlersuche.php;
Obiges Script hat folgenden Inhalt:

Code: Select all

<?php
if (isset($_SERVER['REQUEST_URI']))          // DANKE, CYBERMAN //
    {
	$action = $_SERVER['REQUEST_URI'];
    }
    else
    {
	$action = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
	if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') 
	{
	    $action .= '?'.$_SERVER['QUERY_STRING'];
	}
    };
?>
Bitte nutzen Sie diese Suchmaschine, um einen Händler in Ihrer Nähe zu finden. <br />
Hierzu geben Sie bitte mindestens die ersten zwei Stellen der Postleitzahl ein, um ein sinnvolles Suchergebnis zu erhalten.  <br />
Das Suchergebnis wird dann erfolgreich, wenn sich Ihre Anfrage auf einen konkreten Postleitzahlenbereich bezieht.<br />
<br />
<div class="Stil2">
<form action="<?php echo $action ?>" method="post">
    <span class="Stil2">Postleitzahl</span>     
     <input type="text" size="5" name="leit2" />   
     <input type="image" src="../../../../images/suche.gif" />
</form>
</div><?php
if($_SERVER['REQUEST_METHOD']=='POST') {            // ---DANKE CYBERMANN! //

   
   function Umlaute($text){                     // ---HABE ICH MAL SO GELASSEN ;-)  //
   $pattern1="/ä/";
   $replace1="ä";
   $text=preg_replace($pattern1,$replace1, $text);
   $pattern2="/ö/";
   $replace2="ö";
   $text=preg_replace($pattern2,$replace2, $text);
   $pattern3="/ü/";
   $replace3="ü";
   $text=preg_replace($pattern3,$replace3, $text);
   $pattern1a="/Ä/";
   $replace1a="Ä";
   $text=preg_replace($pattern1a,$replace1a, $text);
   $pattern2a="/Ö/";
   $replace2a="Ö";
   $text=preg_replace($pattern2a,$replace2a, $text);
   $pattern3a="/Ü/";
   $replace3a="Ü";
   $text=preg_replace($pattern3a,$replace3a, $text);
   $pattern4="/ß/";
   $replace4="ß";
   $text=preg_replace($pattern4,$replace4, $text);
   return $text;
}


include(".../inc/dbdata.inc.php");

   //einbinden der externen DB //


$lang=strlen($_POST['leit2']);
$leit2 =  $_POST['leit2'];          // <-- HIER LAG DER FEHLER, war vorher "$anz= ...."  //
echo "<br />";

if ($lang==0)
  {echo "Sie haben keine Postleitzahl eingegeben. Es wird nun die Postleitzahl 00** gesucht."; 
  $leit2="00000";}
else
{if($lang==1)
  {$leit2=($_POST['leit2'])*10000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  else
  {
  if($lang==2)
  {$leit2=($_POST['leit2'])*1000; echo "Die von Ihnen gesuchte  Postleitzahl hat nur ".$lang." Stelle und wurde als ".$leit2." interpretiert";}
  }};
 
echo "<br />";
echo "<br/> ";
$limit= 100;
//$leit2=substr($leit2,0,2);//
$sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
$result=mysql_db_query($db, $sql); 
$menge=mysql_num_rows($result);   
if ($menge == 0) 
{	echo "Ihre Suche: ".$leit2." ergab kein Ergebnis. Die Suche wurde entsprechend erweitert.";
  echo "<br />";
  $leit2=substr($leit2,0,2);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  $menge=mysql_num_rows($result); 
  if ($menge ==0) {
  $leit2=substr($leit2,0,1);
  $limit=5;
  $sql="select * from ".$table." WHERE Marke='on' AND webfreigabe='on' AND plz LIKE '".$leit2."%' ORDER BY plz,name ASC LIMIT $limit" ;
  $result=mysql_db_query($db, $sql); 
  
  $menge=mysql_num_rows($result);}
  while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo "<br />";
      echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";
      }

echo "</br>";}
else {		
	while ($row  =  mysql_fetch_array($result,MYSQL_ASSOC)) {
			echo "<table width='550' border='0' cellspacing='0' cellpadding='0'>";
			echo"	<tr>";

      echo"	<td bgcolor='E1E1E1' colspan='2' style='padding:5px'><b>".umlaute($row["firma"])."</b></td>";
			echo"	</tr>";
			//echo"	<tr>";	 
			//echo"	<td colspan='2'>";
    	//echo"	</td>";						
      //echo"	</tr>";
      echo"	<tr>";		
      echo"	<td bgcolor='white' valign='bottom' style='padding:5px' width='250'>";
                         echo umlaute($row["strasse"]);
			echo"	<br>";
			echo $row["plz"] ." ";
			echo umlaute ($row["ort"]);
			echo"	<br>Telefon ";
			echo $row["telefon"];
			echo"	<br>Fax ";
			echo $row["telefax"];
			echo"	<br>";
			echo "<a href='mailto:".$row["email"]."'>".$row["email"]."</a>";					
			echo"	</td>";
			echo"	<td bgcolor='A5A5A3' valign='bottom' style='padding:5px'> Probefahrt <b>";
			echo $row["prob"];					
			echo"	</b> <br>Finanzierung <b>";								
			echo $row["finanz"];				
			echo"	</b><br> Inzahlungnahme <b>";									
			echo $row["inzahl"];														
			echo"	</b></td>";																								
			echo"	</tr>";	
			echo"	<tr>";	
			echo"	<td bgcolor='#A5A5A3' colspan='2'>";
		//echo" ";							
			echo"	</td>";											
			echo"	</tr>";

			echo"	<tr>";
			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='kundendetail.php?id=".$row["id"]."'target=_blank>Details</a></b></td>";
			//echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='javascript:popup(\'kundendetail.php?id=".$row["id"]."\',123,123,142)'>Details</a></b></td>";

			echo"	<td bgcolor='#7E7E7E' style='padding:5px'><b><a href='http://".$row["website"]."' target=_blank>Zur Website</a></b></td>";					
			echo"	</tr>";									
			echo"</table><br> ";}
}
}      								
?>

Danke, Jungs, für euren Support. Ihr habt mir wichtige Tipps geliefert!

PS: In Aktion kann man das übrigens hier erleben . Das Layout wird dann morgen gefinished...
Last edited by babulski on Thu Jun 21, 2007 9:23 pm, edited 1 time in total.
wuschel

Re: externe php-scripte im cms-content einbinden

Post by wuschel »

UDT ist das gleiche wie ein Smarty Plugin, bloss das die CMS dem ganzen einen Smarty - Funktions - Header verpasst, bei Smarty registriert und dann abarbeitet und das jedes mal aufs neue und ist somit logischerweise gemütlicher.
Locked

Return to “German - Deutsch”