Von Profil zu Listenerstellungshack

Schrimm
Nimm nochmal den "php"-Code von oben, ich glaube, dass da ein Fehler war. Freude
Raylan
Welchen nun genau? verwirrt den?->

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
if($action=="character_edit") {
 $result $db->query_first("SELECT birthday FROM bb".$n."_characters WHERE userid='$wbbuserdata[userid]'");
 if(isset($_POST['send'])) {
  if(isset($_POST['cr_day'])) $cr_day trim($_POST['cr_day']);
  if(isset($_POST['cr_month'])) $cr_month trim($_POST['cr_month']);
  if(isset($_POST['cr_year'])) $cr_year trim($_POST['cr_year']);

  if($cr_day && $cr_month$birthday=ifelse(strlen($cr_year)==4,$cr_year,ifelse(strlen($cr_year)==2,"19$cr_year","0000"))."-".ifelse($cr_month<10,"0$cr_month",$cr_month)."-".ifelse($cr_day<10,"0$cr_day",$cr_day);
  else $birthday "0000-00-00";

  if($result$db->query("UPDATE bb".$n."_characters SET birthday='".addslashes(htmlspecialchars_old($birthday))."' WHERE userid = '$wbbuserdata[userid]'");
  else $db->query("INSERT INTO bb".$n."_characters (userid,birthday) VALUES ('".intval($wbbuserdata[userid])."','".addslashes(htmlspecialchars_old($birthday))."')");

  header("Location: usercp.php?action=character_edit&sid=$session[hash]");
  exit();
 }
 else {
  $birthday=explode("-",$result['birthday']);
  $cr_day $birthday[2];
  $cr_month $birthday[1];
  $cr_year ifelse($birthday[0],$birthday[0],"");
 }

 for($i=1;$i<=31;$i++) $day_options.=makeoption($i,$i,$cr_day);
 for($i=1;$i<=12;$i++) $month_options.=makeoption($i,getmonth($i),$cr_month);

 eval("\$tpl->output(\"".$tpl->get("usercp_character_edit")."\");");
}
Schrimm
Genau den. Augenzwinkern
Raylan
Okay, passt alles wirklich suuuuuuper <3 Irre

soooo :3 jetzt wäre es schön, wenn eben an der Stelle in der temp das Alter des 'Charas' ausgespuckt werden könnte im Bezug auf ein voreingestelltes Jahr :3

ooooh gott ich bin dir so voll dankbar dass du dir hierfür so viel Zeit nimmst Ehren Blume
Schrimm
Dazu musst du nur eine "Differenz" bilden.

Die schnellste Variante wäre das ganze Datum in einen Timestamp umzuwandeln.

Also mittels "mktime()".

Sollte so aussehen:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
if($action=="character_edit") {
 $result $db->query_first("SELECT birthday FROM bb".$n."_characters WHERE userid='$wbbuserdata[userid]'");
 if(isset($_POST['send'])) {
  if(isset($_POST['cr_day'])) $cr_day trim($_POST['cr_day']);
  if(isset($_POST['cr_month'])) $cr_month trim($_POST['cr_month']);
  if(isset($_POST['cr_year'])) $cr_year trim($_POST['cr_year']);

  if($cr_day && $cr_month$birthday=ifelse(strlen($cr_year)==4,$cr_year,ifelse(strlen($cr_year)==2,"19$cr_year","0000"))."-".ifelse($cr_month<10,"0$cr_month",$cr_month)."-".ifelse($cr_day<10,"0$cr_day",$cr_day);
  else $birthday "0000-00-00";

  if($result$db->query("UPDATE bb".$n."_characters SET birthday='".addslashes(htmlspecialchars_old($birthday))."' WHERE userid = '$wbbuserdata[userid]'");
  else $db->query("INSERT INTO bb".$n."_characters (userid,birthday) VALUES ('".intval($wbbuserdata[userid])."','".addslashes(htmlspecialchars_old($birthday))."')");

  header("Location: usercp.php?action=character_edit&sid=$session[hash]");
  exit();
 }
 else {
  $birthday=explode("-",$result['birthday']);
  $cr_day $birthday[2];
  $cr_month $birthday[1];
  $cr_year ifelse($birthday[0],$birthday[0],"");

  $currentdate mktime(0,0,0,date('m'),date('j'),date('Y'));
  $birthdaydate mktime(0,0,0,$birthday[1],$birthday[2],$birthday[0]);
  $age intval(($currentdate-$birthdaydate)/(3600*24*365));
 }

 for($i=1;$i<=31;$i++) $day_options.=makeoption($i,$i,$cr_day);
 for($i=1;$i<=12;$i++) $month_options.=makeoption($i,getmonth($i),$cr_month);

 eval("\$tpl->output(\"".$tpl->get("usercp_character_edit")."\");");
}

Mit "$age" im Template wird das Alter angezeigt.
Raylan
statt dem m, j und Y natürlich das spieledatum eingeben nicht?

und einfügen muss ich das im php vermutlich hier:

php:
1:
2:
3:
4:
5:
6:
else {
  $birthday=explode("-",$result['birthday']);
  $cr_day $birthday[2];
  $cr_month $birthday[1];
  $cr_year ifelse($birthday[0],$birthday[0],"");
 }


also dass es dann final so aussieht:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
else {
$birthday=explode("-",$result['birthday']);
$cr_day $birthday[2];
$cr_month $birthday[1];
$cr_year ifelse($birthday[0],$birthday[0],"");
$currentdate mktime(0,0,0,date('m'),date('j'),date('Y'));
$birthdaydate mktime(0,0,0,$birthday[1],$birthday[2],$birthday[0]);
$age intval(($currentdate-$birthdaydate)/(3600*24*365));
}


oder?

#Edit ich war dir zu schnell XDDD
Schrimm
Hallo,

Ich hab oben schon die "Vollversion" gepostet.

Was das "m", "j" und "Y" betrifft:
Wenn das Spieledatum sich vom "normalen Datum" unterscheidet, dann musst du es ersetzen.
Um die "Gleichheit" der Daten zu garantieren, aber mit führenden Nullen.

In dieser Form:
php:
1:
$currentdate mktime(0,0,0,Monat,Tag,Jahr);

Monat 1 - 9 so eintragen: 01,02,03,04...
Tag 1 - 9 so eintragen: 01,02,03,04...

Ich würde aber eine Umrechnung durchführen.
Beispiel:
Unterschied von "Heute" zum "Spieledatum" 4 Tage und 5 Jahre.
php:
1:
$currentdate mktime(0,0,0,date('m'),date('j'),date('Y')) - ((3600*24*365*5) + (3600*24*4));


edit:
Außer dein "Spieledatum" ist nicht "dynamisch" oder hat einen anderen Zeitablauf, als es in Wirklichkeit ist.
Raylan
hmmmm :/ ich hab das nu so eingefügt und bekomme ne fehlermeldung?

Zitat:
Parse error: syntax error, unexpected '/', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/cwcity/hosting/u/m/umbrasolem/htdocs/wbblite/usercp.php(43) : eval()'d code on line 42


php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
if($action=="character_edit") {
 $result $db->query_first("SELECT birthday FROM bb".$n."_characters WHERE userid='$wbbuserdata[userid]'");
 if(isset($_POST['send'])) {
  if(isset($_POST['cr_day'])) $cr_day trim($_POST['cr_day']);
  if(isset($_POST['cr_month'])) $cr_month trim($_POST['cr_month']);
  if(isset($_POST['cr_year'])) $cr_year trim($_POST['cr_year']);

  if($cr_day && $cr_month$birthday=ifelse(strlen($cr_year)==4,$cr_year,ifelse(strlen($cr_year)==2,"19$cr_year","0000"))."-".ifelse($cr_month<10,"0$cr_month",$cr_month)."-".ifelse($cr_day<10,"0$cr_day",$cr_day);
  else $birthday "0000-00-00";

  if($result$db->query("UPDATE bb".$n."_characters SET birthday='".addslashes(htmlspecialchars_old($birthday))."' WHERE userid = '$wbbuserdata[userid]'");
  else $db->query("INSERT INTO bb".$n."_characters (userid,birthday) VALUES ('".intval($wbbuserdata[userid])."','".addslashes(htmlspecialchars_old($birthday))."')");

  header("Location: usercp.php?action=character_edit&sid=$session[hash]");
  exit();
 }
 else {
  $birthday=explode("-",$result['birthday']);
  $cr_day $birthday[2];
  $cr_month $birthday[1];
  $cr_year ifelse($birthday[0],$birthday[0],"");

  $currentdate mktime(0,0,0,08,15,2025);
  $birthdaydate mktime(0,0,0,$birthday[1],$birthday[2],$birthday[0]);
  $age intval(($currentdate-$birthdaydate)/(3600*24*365));
 }

 for($i=1;$i<=31;$i++) $day_options.=makeoption($i,$i,$cr_day);
 for($i=1;$i<=12;$i++) $month_options.=makeoption($i,getmonth($i),$cr_month);

 eval("\$tpl->output(\"".$tpl->get("usercp_character_edit")."\");");
}
Schrimm
Wie sieht dazu dein Template aus?
Raylan
Hab sie dir einfach mal angehängt Augenzwinkern
Schrimm
php:
1:
<td colspan="3">$wbbuserdata[usernameist [i]$age[/iJahre alt.</td>

Du arbeitest in "HTML", da gibt es keinen "bbcode".
Bitte Folgendes verwenden:
php:
1:
<td colspan="3">$wbbuserdata[usernameist <i>$age</iJahre alt.</td>
Raylan
auweia Peinlich auweia
Ich volltrottel Peinlich haha xD jaja vor lauter buchstaben und sonderzeichen^^ hab ich halt einfach mal schön die falschen klammern benützt sry XD

Edit: Klappt alles absolut super großes Grinsen


&& jetzt würde ich ja das ganze noch gerne in eine extra liste verpacken.... wo ich für die user nach Monaten/Jahren geordnet die Geburtsdaten eintragen lassen kann :3
Schrimm
Dazu müsstest du genau beschreiben, wie dies aussehen soll bzw. funktionieren soll, damit man da auch "vernünftig" arbeiten kann. fröhlich
Raylan
Okay großes Grinsen

Ich will im grunde so eine liste erstellen:
http://pentangle.bplaced.net/wbblite/thread.php?threadid=28

nur einfach automatisch mit den eingegebenen Daten :3
Schrimm
Wieder "ganz" einfach, nur benötigen wir dazu nun eine eigene "php"-Datei samt Templates.

Das wäre die Grundstruktur:
php:
1:
2:
3:
4:
5:
6:
7:
<?php
$filename="characters.php";

require("./global.php");

eval("\$tpl->output(\"".$tpl->get("characters")."\");");
?>

Somit brauchst du eine "characters.tpl", die deinen Aufbau der Seite beschreibt.

Weiter gehts mit dem Auslesen der Daten:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?php
$filename="characters.php";

require("./global.php");

$charactersbit='';
$result $db->query("SELECT birthday FROM bb".$n."_characters ORDER BY birthday ASC");
while($characters $db->fetch_array($result)) {
 $birthday=explode("-",$characters['birthday']);
 $currentdate mktime(0,0,0,08,15,2025);
 $birthdaydate mktime(0,0,0,$birthday[1],$birthday[2],$birthday[0]);
 $age intval(($currentdate-$birthdaydate)/(3600*24*365));

 eval ("\$charactersbit .= \" ".$tpl->get("characters_charactersbit")."\";");
}

eval("\$tpl->output(\"".$tpl->get("characters")."\");");
?>

Diese benötigt nun eine "characters_charactersbit.tpl", die den Aufbau des Datensatzes(Der Charaktere) beschreibt, der in die Seite eingefügt wird.

Wichtig ist, dass du die Variable "$charactersbit" auch in deiner "characters.tpl" hast.
Raylan
Okay.... gehen wir ganz langsam vor smile dieser aufbau macht sinn. allerdings muss ich ja dann den aufbau der daten so wie ich sie haben will shcon in meiner charactersbit.tpl festlegen?

und da liegt mein problem, was genau leg ich nun fest..... :/ also die variablen ich will ja erst das datum, dann den Namen und das so geordnet :3
Schrimm
Ganz normales "HTML".
Das kannst du machen wie du lustig bist.

Bisher stehen dir im Grunde "4 Variablen" zur Verfügung, wenn du obige "php"-Datei hast.

1. $birthday[0] - Das Geburtsjahr
2. $birthday[1] - Der Geburtsmonat
3. $birthday[2] - Der Geburtstag
4. $age - Das Alter

Die Sortierung übernimmt bereits die "php"-Datei. Augenzwinkern
Raylan
aber ich kann die nun nicht so sortieren wie in dem beispiel dass ich dir gezeigt habe, also grundsätzlich nach monaten und mit dem Charanamen dazu?
Schrimm
Sind sie doch schon.
Das hat die "php"-Datei übernommen. Augenzwinkern

edit(Beispiel):
characters.tpl:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
{!DOCTYPE}
<html>
<head>
<title>$master_board_name Charaktere</title>
$headinclude
</head>

<body id="bg">
 $header
 <tr bgcolor="{tablecolora}" id="tablea">
  <td><table cellpadding=0 cellspacing=0 border=0 width="100%">
   <tr>
    <td><smallfont><b><a href="index.php?sid=$session[hash]">$master_board_name</a» Charaktere</b></font></td>
    <td align="right"><smallfont><b>$usercbar</b></font></td>
   </tr>
  </table></td>
 </tr>
</table><br>
<table cellpadding=4 cellspacing=1 border=0 width="{tableinwidth}" bgcolor="{tableinbordercolor}">
 <tr bgcolor="{tabletitlecolor}" id="tabletitle" align="center">
  <td><smallfont color="{fontcolorsecond}"><b>Geburtsdatum</b></font></td>
  <td><smallfont color="{fontcolorsecond}"><b>Alter</b></font></td>
  <td><smallfont color="{fontcolorsecond}"><b>Name</b></font></td>
 </tr>
 $charactersbit
</table>
$footer
</body>
</html>


characters_charactersbit.tpl:
php:
1:
2:
3:
4:
5:
<tr align="center">
 <td bgcolor="{tablecolora}" id="tablea" nowrap align="left"><normalfont><b>$birthday[2].$birthday[1].$birthday[0]</b></font></td>
 <td bgcolor="{tablecolorb}" id="tableb">$age</td>
 <td bgcolor="{tablecolora}" id="tablea"></td>
</tr>
Raylan
Entschuldige XD ich bin nu einfach verwirrt. ich muss doch nun in den Templates festlegen was angezeigt wird, nicht?

ich will das so haben:
Datum | User | Alter

$birthday[2].$birthday[1].$birthday[0] | ??? | $age

Aber jetzt hab ich das ja noch lange nicht in so einer schönen Tabelle?^^° *steht vermutlich gerade vollends auf dem schlauch^^*