anpera.net
https://anpera.homeip.net/phpbb3/

PHP-problem
https://anpera.homeip.net/phpbb3/viewtopic.php?f=11&t=4421
Seite 1 von 2

Autor:  The_Muh [ Sa 22 Mär, 2008 02:02 ]
Betreff des Beitrags:  PHP-problem

Huhu
Ich bastel grade an einer Homepage und soweit klappt auch alles ganz gut
mein einziges Problem:
Ich habe mehrere "Skins" erstellt. Ich habs auch schon geschafft das so zu bauen das man das auswählen kann... allerdings muss man das auf jeder einzelnen Seite tun.
Kann mir jeman verraten wie ich die Variablen "global" zur verfügung stelle? Oder zumindest übergeben kann (ohne die URL zu benutzen!!!!!)

thx
mfg
The_Muh

Autor:  Nightborn [ Sa 22 Mär, 2008 02:07 ]
Betreff des Beitrags:  Re: PHP-problem

machs wie in 1.x.x

tus in ein Cookie =)

Autor:  MySql [ Sa 22 Mär, 2008 13:43 ]
Betreff des Beitrags:  Re: PHP-problem

Na^^ Ist ja nicht nur in der 1.x.x so^^ 0.9.7+jt - $_COOKIE['template'] ;)

Autor:  The_Muh [ Sa 22 Mär, 2008 14:25 ]
Betreff des Beitrags:  Re: PHP-problem

Wie lese ich die cookies aus? und wie schreib ich was rein!?!?!

Autor:  Harthas [ Sa 22 Mär, 2008 14:31 ]
Betreff des Beitrags:  Re: PHP-problem

http://de.php.net/setcookie <--Dieser Link wird dir dabei helfen, das Cookie zu setzen.
Mit der superglobalen $_COOKIE['cookiename'] kannst du dann auf den Wert zugreifen.


Mit freundlichen Grüssen,
Harthas

Autor:  The_Muh [ So 23 Mär, 2008 01:16 ]
Betreff des Beitrags:  Re: PHP-problem

ich habs mittlerweile geschafft die buttons so zu setzen das die variable richtig gesetzt wird
aber ich versteh das mit den cookies nicht ganz...
kann mir das einer mal so erklären das ich als "normal"-nutzer das verstehe?

Autor:  MySql [ So 23 Mär, 2008 01:26 ]
Betreff des Beitrags:  Re: PHP-problem

Nim das Templatesystem aus LotGD...

Autor:  Eliwood [ So 23 Mär, 2008 09:38 ]
Betreff des Beitrags:  Re: PHP-problem

Cookies sind kleine Datenkekse, die auf dem Computer des Benutzers gespeichert werden. So ist es dir Möglich, Benutzer "wiederzuerkennen" - und zwar solange, wie das Cookie auf dem Computer bleibt. Natürlich kann das Cookie von Benutzer gelöscht, verändert, und selbst erstellt werden; das heisst, vertrauliche Daten gehören da nicht hinein. Soweit klar?

Du kannst nun also, wie Harthas gesagt hat, den Wert für das Template in so einem Cookie speichern (Mit der Funktion setcookie(), die er bereits erwähnt hat). Wenn du dem Cookie den Namen "template" gibst, kannst du überall in den Scripten auf den Wert zugreifen - und zwar mit folgender Methode:

$this->bbcode_second_pass_code('', '$template = $_COOKIE['template'];')

Allerdings bitte ich dich bereits hier - speichere niemals den ganzen Dateinamen im Cookie ab, sondern zum Beispiel nur ein Zahlencode, der zur Datei führt. Komplette Dateinamen könnten ein Sicherheitsrisiko darstellen, wenn du die nicht entsprechend verarbeitest.

Autor:  The_Muh [ So 23 Mär, 2008 15:31 ]
Betreff des Beitrags:  Re: PHP-problem

also
ich hab 3 buttons in die Homepage eingebaut.
Klickt man auf einen der Buttons, ändert sich das Layout (also andere grafiken).
Aber wie mach ich das so, die geänderte variable ($skin) in den cookie kommt?

code:
$this->bbcode_second_pass_code('', 'if ($skin != blue){
echo'<tr><td width="219">
<form action="index.php" method="post">
<input type="hidden" name="myskin" value="blue">
<input type="image" src="img/',$skin,'/blue.png">
</form>
</td></tr> ';
}
if ($skin != grey){
echo'<tr><td width="219">
<form action="index.php" method="post">
<input type="hidden" name="myskin" value="grey">
<input type="image" src="img/',$skin,'/grey.png">
</form>
</td></tr>';
}
if ($skin != green){
echo'<tr><td width="219">
<form action="index.php" method="post">
<input type="hidden" name="myskin" value="green">
<input type="image" src="img/',$skin,'/green.png">
</form>
</td></tr>';
}')

(ja ich weiß, das ist nicht ganz ideal, aber was solls....)

Autor:  Harthas [ So 23 Mär, 2008 17:50 ]
Betreff des Beitrags:  Re: PHP-problem

if ( !empty( $_POST['myskin'] ) ) {
setcookie( 'template' , $_POST['myskin'] , strtotime( date('c').' +45 days' ) );
}

Sowas in der Art könntest du dann verwenden.

Autor:  The_Muh [ So 23 Mär, 2008 18:46 ]
Betreff des Beitrags:  Re: PHP-problem

danke!
es funzt
allerdings gehts nicht immer sofort, sondern manchmal muss man nochmal aktualiesieren
ansonsten: perfekt

code
$this->bbcode_second_pass_code('', 'if ( !empty( $_POST['myskin'] ) ) {
setcookie( 'template' , $_POST['myskin'] , strtotime( date('c').' +45 days' ) );
}
$skin = $_COOKIE['template'];')
der rest ist HTML code, oder das was oben zu sehen is

Autor:  MySql [ So 23 Mär, 2008 19:21 ]
Betreff des Beitrags:  Re: PHP-problem

PHP4:

date('r')

PHP5 >:

date('c')

....Was für ne Version hassen du? [/ot]

Autor:  The_Muh [ So 23 Mär, 2008 19:56 ]
Betreff des Beitrags:  Re: PHP-problem

PHP 5
ganz einfach

Autor:  Harthas [ So 23 Mär, 2008 23:22 ]
Betreff des Beitrags:  Re: PHP-problem

Das liegt daran, dass zuerst das Template bestimmt wird, und erst danach das Cookie geändert wird. Ist ja eigentlich nicht weiter tragisch, oder? (Soweit ich weiss, ist es auch bei den meisten Forensystemen so).

Autor:  Auric [ So 23 Mär, 2008 23:46 ]
Betreff des Beitrags:  Re: PHP-problem

mach doch danach einfach einen redirect auf die selbe seite, dann geht das aktualisieren automatisch von der hand

Autor:  The_Muh [ Di 08 Apr, 2008 16:38 ]
Betreff des Beitrags:  Re: PHP-problem

hab ein neues... naja 'problem' und will deshalb keinen neuen thread aufmachen.
also ich hab mögliche werte in einer spalte innerhalb der accountstable.
nun will ich zählen wie oft was vorkommt... so sieht mein bisheriger code aus
$this->bbcode_second_pass_code('', ' $sql = "SELECT count(job) AS a FROM accounts where job ='Landwirt'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
output($row['a']." Landwirte`n");

$sql = "SELECT count(job) AS b FROM accounts where job ='Holzfäller'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
output($row['b']." Holzfäller`n");

$sql = "SELECT count(job) AS c FROM accounts where job ='Holzfäller'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
output($row['c']." Steinmetze`n");')

ich wollte das jetz aber möglichst in eine SQL abfrage stecken und dann ausgeben.. so wie es jetz ist find ich das einfach zu "Unhandlich"

Autor:  MySql [ Di 08 Apr, 2008 18:06 ]
Betreff des Beitrags:  Re: PHP-problem

1. Die dritte SQL Abfrage ist falsch.
2. Gehört das in den Moddern Forum und Technischen Support.
3. Hier:

Löse es mit einer While schleife.

$this->bbcode_second_pass_code('', '$select = db_query('SELECT * FROM accounts WHERE job = "Landwirt"');
if (db_num_rows($select) == 0)
{
output('Es gibt keine Landwirte.');
}
else {
$landwirt++;
}
output('Es gibt '.$landwirt.' Landwirte.');')

..

Autor:  The_Muh [ Di 08 Apr, 2008 18:08 ]
Betreff des Beitrags:  Re: PHP-problem

1. hab ich wol übersehen
2. kanns jemand verschieben? (sry)
3. danke

Autor:  MySql [ Di 08 Apr, 2008 18:12 ]
Betreff des Beitrags:  Re: PHP-problem

Ahh sorry *g
Hab die Whileschleife vergessen :x

$this->bbcode_second_pass_code('', '$select = db_query('SELECT * FROM accounts WHERE job = "Landwirt"');
if (db_num_rows($select) == 0)
{
output('Es gibt keine Landwirte.');
}
else {
while (db_fetch_assoc($select)) {
$landwirt++;
}
}
output('Es gibt '.$landwirt.' Landwirte.');')

Sorry war noch ein Fehler drin... Jetzt geht es aber.

Autor:  Nightborn [ Di 08 Apr, 2008 18:33 ]
Betreff des Beitrags:  Re: PHP-problem

:(

Ich bin auch von München nach Augsburg gekommen. Aber zuerst bin ich nach Prag, dann nach Moskau, und dann nach Berlin, dann nach Zürich, von da aus nach Augsburg...


au au au

Mysql, bitte, ein wenig auf "Schnellster Weg" oder "Wenigste Laufzeit" achten.

Bei solchen Abfragen wundert es nicht, wenn irgendwann Webspace am Ende ist.

Zitat:
$select = db_query('SELECT * FROM accounts WHERE job = "Landwirt"');
if (db_num_rows($select) == 0)
{
output('Es gibt keine Landwirte.');
}
else {
while (db_fetch_assoc($select)) {
$landwirt++;
}
}
output('Es gibt '.$landwirt.' Landwirte.');


möchtest Du eine schnellere, kleinere, bessere Lösung, eine wo Du nicht DIE GESAMTE ACCOUNTSTABELLE EXKLUSIVE ALLER NICHT-LANDWIRTE im Kasten hast?

hier:

$this->bbcode_second_pass_code('', '$sql="SELECT count(acctid) AS counter FROM accounts WHERE job = 'Landwirt' GROUP BY job; //wir schachteln ungern, man solls noch lesen können
$result=db_query($sql); //Abfrage
$row=db_fetch_assoc($sql); //es gibt immer einen row, und wenn der counter ==0 ist
output("Es gibt %s Landwirte",$row['counter']);

')

War doch garnicht so schwer, oder? Ein bissi was aus deinem Namen, denn Mysql kann viel mehr als einfach eine where bedingung.

Lies bitte mal:
http://dev.mysql.com/doc/refman/5.0/en/select.html

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/