Seite 1 von 1

Variable nur bei jedem x. Aufruf ausgeben

Verfasst: 08.07.2006 11:40
von YoOoOoOo
Wie kann ich es schaffen, dass eine bestimmte Variable nur bei jedem z.B. dritten Aufruf ausgegeben wird?
Sollte ein möglichst kleineres Script sein.

Und gleich noch eine Frage. Bei der Signatur funktioniert das ja auch, wenn man mit ENTER einen Zeilenumbruch macht, dass es dann genau wie <br /> wirkt. Nun wollte ich dies mit einem anderen Textfeld auch machen.
Mit <textarea>text</textarea> funktioniert dies nun auch wunderbar, dann speicher ich den text in der datenbank, funktioniert immer noch mit zeilenumbruch, doch wenn ich den text ohne das <textarea></textarea> hinschreibe, funktioniert es nicht und die zeilenumbrüche werden nicht beachtet. weiss jemand, wie ich das hinkriege? oder weiss jemand, wie ihc den inhalt einer textarea zentrieren kann?
'" . str_replace('<br />', "\n", $variable ) . "'

Yo

Verfasst: 08.07.2006 14:23
von S2B
Ähm, am Besten wäre es glaube ich, wenn du in Zukunft pro Frage ein Thema aufmachen würdest, vor allem dann, wenn die Fragen gar nichts miteinander zu tun haben. :wink: Naja, egal...

Um eine Variable nur jedes x-te Mal ausgeben zu lassen, musst du die Aufrufe irgendwo speichern, sei es in einer Datenbank oder in einer Datei.
z.B.:

Code: Alles auswählen

$dateiname = 'deine_datei.php';
$aufrufe = 1;

// Aufrufe auslesen
include($dateiname);

if ($aufrufe >= 3)
{
  // Variable ausgeben lassen
  echo $deine_variable;
  $aufrufe = 1;
}
else
{
  $aufrufe++;
}

//
// Aufrufe in die Datei schreiben
//
if (!is_writeable($dateiname))
{
  die('Die Datei ist nicht schreibbar.');
}

if (!$file = fopen($dateiname, 'w'))
{
  die('Die Datei konnte nicht geöffnet werden.');
}

if (!fwrite($file, '<?php $aufrufe = ' . $aufrufe . '; ?>'))
{
  die('Es konnte nicht in die Datei geschrieben werden.');
}

fclose($file);
Um in einem Text alle Zeilenumbrüche in <br /> umzuwandeln, kannst du entweder die von dir gepostete Möglichkeit (str_replace()) oder eine schon in PHP integrierte Funktion (nl2br()) verwenden.

Um den Text in einem Textfeld zu zentrieren, musst du die CSS-Eigenschaft text-align des Textfelds auf center stellen:

Code: Alles auswählen

<textarea style="text-align: center"></textarea>

Verfasst: 09.07.2006 10:10
von YoOoOoOo
Danke, es funktioniert.
Aber leider noch nicht alles. Mit dem Zeilenumbruch hab ich noch ein Problem. Es wird richtig in die Datenbank gespeichert mit folgendem Befehl:

Code: Alles auswählen

	$sql = "UPDATE " . GROUPS_TABLE . " 
		SET group_passwort = '" . str_replace("\'", "''", $group_passwort) . "',
                    group_name = '" . str_replace("\'", "''", $group_name_db) . "',
                    group_kurz = '" . str_replace("\'", "''", $group_kurz_db) . "',
                    group_description = '" . str_replace('<br />', "\n", $group_desc_db) . "'
		WHERE group_id = $group_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain user and group information', '', __LINE__, __FILE__, $sql);
	}
Die Zeilenumbrüche sind in der Datenbank erkennbar. Wenn ich diese Daten dann wieder aus der Datenbank hole, sind sie IN EINER TEXTAREA ebenfalls vorhanden! Aber wenn ich die Variable ausgebe, ohne sie in einer TEXTAREA anzuzeigen, sind die Zeilenumbrüche nicht vorhanden. Vielleicht liegs an dieser Array?:

Code: Alles auswählen

		$group_info = array (
			'group_name' => '',
			'group_passwort' => '',
			'group_kurz' => '',
			'group_description' => '',
			'group_moderator' => '',
			'group_type' => GROUP_OPEN);
Yo

Verfasst: 09.07.2006 10:11
von kratzer54847
hast du der Datei auch Schreibrechte verpasst?

KB:Chmod

Verfasst: 09.07.2006 12:08
von S2B
@YoOoOoOo:
Ich würde den Zeilenumbruch erst direkt vor der Ausgabe umwandeln. Dann kannst du dir nämlich aussuchen, ob du ihn brauchst oder nicht. Abgesehen davon stehen dann auch "normale" Texte in der Datenbank, die bei Bedarf auch leichter von einer anderen Software verarbeitet werden könnten. :wink:
Ich würde dir aber empfehlen, deine Gruppenbeschreibung wie auch die anderen 3 Werte zu escapen, um SQL Injection vorzubeugen (Securing MODs).