Variable nur bei jedem x. Aufruf ausgeben

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Variable nur bei jedem x. Aufruf ausgeben

Beitrag 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
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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>
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
YoOoOoOo
Mitglied
Beiträge: 71
Registriert: 01.05.2006 16:34
Wohnort: YoOoOoOoOo
Kontaktdaten:

Beitrag 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
Zuletzt geändert von YoOoOoOo am 09.07.2006 10:30, insgesamt 1-mal geändert.
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

hast du der Datei auch Schreibrechte verpasst?

KB:Chmod
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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).
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „Coding & Technik“