String-Variable verkleinern

Hallo,

wie kann ich eine Stringvariable auf einer bestimmten Größe halten so daß sie nicht ins endlose wächst?

Hintergrund:
Ich schreibe jeden Anrufer in einen String. Es sollte dann der älteste Eintrag gelöscht werden.

Gruß
Christian

Wie trennst Du denn die einzelnen Anrufer? Dann wär ne mögliche Lösung vielleicht leichter. :slight_smile:


$stringalt = GetValueString(47301 /*[Unser Zuhause\ISDN\ISDN \Anrufer]*/);
$stringneu = ("
".date("d M 
H:i:s")."
von: ".$callinfo["CallingNumber"]."
".$name."  ".$strasse."  ".$plz." ".$stadt."
für: ".$callinfo["CalledNumber"]."
".$stringalt);
SetValueString(47301 /*[Unser Zuhause\ISDN\ISDN \Anrufer]*/,$stringneu);

Garnicht.

Ich hole mir den alten und schreibe den neuen dazu.:rolleyes:

Puhh… :smiley:
Ich glaub ohne Trennzeichen wird das schwer, zumal der neue String ja auch wieder unterschiedlich lang sein kann wegen unterschiedlicher Nummer…
Bei nem Array oder String mit Trennzeichen könntest Du mit explode, implode und array_splice arbeiten. Aber so fällt mir da erstmal nichts ein… :frowning:

Hallo Christian,

ich lasse mir meine Anrufe auch im Webfront anzeigen. Dazu habe ich eine StringVariable als ~Textbox Profil angelegt. Diese beschreibe ich mit folgender Funktion.


TextboxListe($ID,$string,$menge); // ID der StringVariablen, Text der dazugeschrieben wird, Anzahl der Datenfelder


function TextboxListe($ID,$wert,$menge){
	//Funktion zur Listenerstellung (ID , aktuellerWert , Menge der zu berücksichtigenden Werte)
   $object = IPS_GetObject($ID);
	$buffer = explode("
",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $wert);          				 // neuen Messwert ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       // alten Wert abschneiden
	$string = implode("
",$buffer);
   IPS_SetInfo($ID,$string);  	            			 // im Infobereich der Variablen, das Array ablegen
   SetValue($ID,$string);                 				 // Variable beschreiben
   return ($string);
}

Hallo Attain,

vielen Dank für diesen Vorschlag. Der gefällt mir sehr gut.

Aber ich habe leider noch keine Ahnung wie ich solche Funktionen einbinden kann.
Wenn ich mich nicht irre legt man ein Skript mit allen benötigten Funktionen an und bindet dann die benötigte Funktion mit "TextboxListe($ID,$string,$menge);"im Skript ein.
Aber was muss da bei $menge rein?

Gruß
Christian

Hallo Christian,

um mal bei Deinem Beispiel zu bleiben:
$menge ist die Anzahl der Anrufe die in der Stringvariablen landen sollen.
Dein Script würde für 10 Anrufer wie folgt aussehen:

$menge = 10;
$string = ("
".date("d M 
H:i:s")."
von: ".$callinfo["CallingNumber"]."
".$name."  ".$strasse."  ".$plz." ".$stadt."
für: ".$callinfo["CalledNumber"]."
".$stringalt);
TextboxListe(47301,$string,$menge); 

function TextboxListe($ID,$wert,$menge){
    //Funktion zur Listenerstellung (ID , aktuellerWert , Menge der zu berücksichtigenden Werte)
   $object = IPS_GetObject($ID);
    $buffer = explode("
",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $wert);                           // neuen Messwert ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       // alten Wert abschneiden
    $string = implode("
",$buffer);
   IPS_SetInfo($ID,$string);                               // im Infobereich der Variablen, das Array ablegen
   SetValue($ID,$string);                                  // Variable beschreiben
   return ($string);
}

Gruß

Hallo Attain,

vielen Dank.
Klappt wunderbar.

Aber kannt Du mir noch erklären wie ich diese Funktion „includen“ kann?

Gruß
Christian

Klar doch.

  1. Script anlegen
    z.b. function.ips.php
    darin alle nützlichen function’s unterbringen.

  2. Im script in dem die function gebraucht wird, folgendes eingeben:

include 'function.ips.php';
$menge = 10;
$string = ("
".date("d M 
H:i:s")."
von: ".$callinfo["CallingNumber"]."
".$name."  ".$strasse."  ".$plz." ".$stadt."
für: ".$callinfo["CalledNumber"]."
".$stringalt);
TextboxListe(47301,$string,$menge);  
  1. fertig

Vielen Dank:):slight_smile:

mal das ganze noch als HTML Tabelle. Abgeschrieben bei Horst :wink:

<?
   $string ='<tr align="center"><td>'.date("d.m.Y").'</td>';
   $string.='<td>'.date("H:i").'</td>';
   $string.='<td>'.$callinfo["CallingNumber"].'</td>';
   $string.='<td>'.$name.'</td>';
   $string.='<td>'.$strasse.'</td>';
   $string.='<td>'.$plz.'</td>';
   $string.='<td>'.$stadt.'</td>';
   $string.='<td>'.$callinfo["CalledNumber"].'</td>';

	$menge = 10;
	$ID = 47301 /*[Telefon\Anrufe\Telefonliste]*/;
  	TextboxHTMLListe($ID,$string,$menge);
  	
function TextboxHTMLListe($ID,$wert,$menge){
   $text ='<style type="text/css">table.telefon { width: 100%; border-collapse: true;} table.telefon td { border: 1px solid #444455; } table.telefon th { border: 1px solid #444455; }</style>';
   $text.='<table frame="box" class="telefon">';
   $text.='<tr>';
   $text.='<th>Datum</th>';
   $text.='<th>Uhrzeit</th>';
   $text.='<th>Rufnummer</th>';
   $text.='<th>Name</th>';
   $text.='<th>Strasse</th>';
   $text.='<th>PLZ</th>';
   $text.='<th>Ort</th>';
   $text.='<th>Eigene Nummer</th>';
   $text.='</tr>';

   $object = IPS_GetObject($ID);
	$buffer = explode("</tr>",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $wert);          				 // neue Zeile ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       // alten Wert abschneiden
	$string = implode("</tr>",$buffer);
   IPS_SetInfo($ID,$string);  	            			 // im Infobereich der Variablen, das Array ablegen
   SetValue($ID, $text . $string . "</table>");               // Variable beschreiben
   return ($string);
}


?>

Gruß