Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=3)
-- Fragen zum WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=4)
--- SUCHE "Gästebuch" fürs HM-Portal (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=3155)


Geschrieben von Hangasilly am 07.07.2020 um 13:09:

  SUCHE "Gästebuch" fürs HM-Portal

Hey zusammen,

ich such mich schon ne weile dumm und dusselig...
Ich meine mich nämlich zu erinnern, dass ich mal auf irgend einem HM-Portal sowas ähnliches wie ... ich weiß grad nciht, wie ichs anders beschreiben soll... ein Gästebuch gesehen habe...

Es geht drum, dass man in ner SEITEN-Box (also die schmalen an der Seite als da im Original z.B. Suche, Kalender, Swatch etc sind) eine Gästebuchbox hat (oder sowas Ähnliches).
Es gibt hier jedenfalls 2 Input-Zeilen ala Name & Nachricht. Darunter eine Smylieauswahl und darunter wird eine bestimmte Anzahl (wahrscheinlich im Hack definierbar) der Nachrichten Angezeigt. -- Quasi ie ein Gästebuch.

Da ich nirgendswo sowas in der Wart zu finden weiß, wollt ich mal freundlich fragen, ob jemand von euch irgendwo so etwas rumliegen hat, bevor ich selber Probiere, mir dementsprechend sowas zu scripten...

Falls es sowas echt noch nciht geben sollte, werd ich mal schauen, was ich da selbst schreiben kann - aber wie gesagt, wollte voher mal Fragen ob wer von euch sowas kennt oder besten Falls noch irgendwo rumfliegen hat und mir ggf. geben möchte :)



Geschrieben von haumi am 09.07.2020 um 07:52:

 

Ich habe dir mal etwas in den Briefkasten gelegt.

LG
haumi



Geschrieben von Hangasilly am 13.07.2020 um 08:35:

 

Sehr gut, danke!

Werds mir nacher @ home mal ansehen^^

edit:/

hmm ne, ich hatte das leicht anders angedacht... hab derweil allerdings auch mal meinen eigenen Versuch gestartet, siehtz nun auch schon garnicht so schlecht aus...

einzige Problem, was ich habe ist, dass mir das ganze nur 1 Eintrag aus der DB ausliest... eigentlich möch ich aber die letzten 5...

derzeit sieht es jedenfalls so aus:

ich hab 5 DB einträge, mein script was sie auslesen soll ist jenes:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//Einträge auslesen
$anzg = "SELECT * FROM `bb".$n."_hm_guestbook` ";
$anz = mysql_query($anzg);
	while($ds = mysql_fetch_assoc($anz)){
		$name1 = $ds[name];
		$mess = $ds[message];
		$time = $ds[time];
		$stamp = date("d-m-Y \u\m H:i:s", $time);

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



TPL hm_ownbox_guestbook_bit:
code:
1:
2:
3:
4:
5:
6:
7:
8:
<table cellspacing="1" cellpadding="4" border="0" width="95%" align="center" class="tableinborder">
<tr class="tabletitle">
 <td colspan="2" align="center"><span class="smallfont"><b>Die Einträge</b></span></td></tr>
<tr class="tablea">
 <td width="30%" valign="top" align="left"><span class="smallfont"><b>$name1</b> schrieb<br>am $stamp</span></td>
 <td valign="center" align="center"><span class="smallfont">$mess</span></td>
</tr>
</table>



unt TPL hm_ownbox_guestbook:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<tr>
<td class="tablea" width="100%" colspan="10" align="center"><span class="acps">
<br>
<form method="POST" action="hmportal.php">
<input type="hidden" name="action" value="gb">
<if($wbbuserdata['userid'])><then> 
 <label for="name">Name:</label> $gb_name<input type="hidden" name="gb_name" value="$gb_name"><br><br></then>
 <else><br><input type="text" id="fname" name="gb_name" value="Name"><br><br></else></if>
  <label for="message">Deine Nachricht:</label><br>
  <input type="text" id="message" name="gb_message" value="Nachricht"><br><br>
  <input type="submit" value="Eintragen" action="gb">
</form>
<br>

$hm_ownbox_guestbook_bit

<br>
</span></td></tr>



blöderweise hab ich nun den Effekt, dass mir nur 1 Eintrag ausgegeben wird in der Portalbox...
habs auch schon mit mysql_fetch_object anstatt mysql_fetch_assoc probiert, änert aber nix... kriege nur immer den letzten eintrag :(



Geschrieben von haumi am 14.07.2020 um 15:03:

 

Dein Script dürfte eigentlich nur den letzten Eintrag anzeigen
da du ja auch nur ein Template aufrufst.
So wird die Schleife durchlaufen und bei jedem Eintrag wird das Template erneut angezeigt bis der letzte Eintrag erfasst wird, die Schleife wird beendet und der letzte Templateaufruf mit dem letzten Eintrag bleibt stehen.

Versuche mal (außerhalb der Schleife) das Template $hm_ownbox_guestbook aufzurufen und darin denn in der Schleife das Template $hm_ownbox_guestbook_bit.


eval("\$hm_ownbox_guestbook_bit = "".$tpl->get("hm_ownbox_guestbook_bit")."";");
}
eval("\$tpl->output(\"".$tpl->get("hm_ownbox_guestbook")."\");");


schau mal.

LG
haumi



Geschrieben von Hangasilly am 16.07.2020 um 18:17:

 

hmmm.... nachvollziehbarer Gedanke, aber mit output im hm_ownbox_guestbook oder mysqli ändert sich leider auch nichts...

liegt das vllt daran, dass das keine eigene *.php ist sondern in die hmportal.php intregriert steht?
Hier übrigens mal der gesamte code zum vergleichen:
code:
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:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
//###############################################################################
//##########################HM_Gästebuch by Hangasilly###########################
//###############################################################################

//##################################ALLGEMEINES##################################
//User-ID
$user_id = $wbbuserdata['userid'];
//UserName oder Name eingeben
if($user_id != 0){
	$gb_name = $wbbuserdata['username'];
}
if($user_id == 0){
if (isset($_GET["gb_name"])) {
    $gb_name = $_GET["gb_name"];
}
}
//Nachricht
if (isset($_GET["gb_message"])) {
    $gb_message = $_GET["gb_message"];
}

//##################################EINTRAG##################################
if(isset($_POST['action']) == "gb") {
		$message = $gb_message;
		$username = $gb_name;
		$zeit = time();
//Insert
		$new_gb = "INSERT INTO `bb".$n."_hm_guestbook` VALUES ('', '$username','$message','$zeit')";
		$new_gb_in = mysql_query($new_gb);
}	

//##################################OUTPUT##################################
//Einträge auslesen
$anzg = "SELECT * FROM `bb".$n."_hm_guestbook` ";
$anz = mysql_query($anzg);
	while($ds = mysql_fetch_assoc($anz)){
		$name1 = $ds[name];
		$mess = $ds[message];
		$time = $ds[time];
		$stamp = date("d-m-Y \u\m H:i:s", $time);

	eval("\$hm_ownbox_guestbook_bit = "".$tpl->get("hm_ownbox_guestbook_bit")."";"); 
}
eval("\$tpl->output("".$tpl->get("hm_ownbox_guestbook")."");");
//###############################################################################
//##########################HM_Gästebuch by Hangasilly###########################
//####################################ENDE#######################################




Geschrieben von haumi am 16.07.2020 um 19:07:

 

Ich baue mir das morgen mal in mein Testboard ein und schau mir das mal an.
Du hat als Software php7?



Geschrieben von Hangasilly am 17.07.2020 um 10:30:

 

Nee, das Forum läuft noch unter php5...

Muss die msl alle nach 7 umstellen iwann, aber da muss ich erstmsl aussortieren, welche noch aktuell in benutzung sind und welche nicht...

Das, was ich da im code gepostet hab liegt bei mir in der hmportal.php
Naja und dann hab ich noch die 2 TPLs halt und einen DB-table... Mehr is an dem "Hack" nich dran bei mir nun...



Geschrieben von haumi am 18.07.2020 um 14:24:

 

Es hat sich bei mir etwas verzögert da ich mit mehreren Datenbanken arbeite und dabei die falsche erwischt hatte.
Nun wird alles angezeigt nur nicht im Portal da bin ich sicher auch noch auf einem falschen Dampfer.

Ich melde mich.

LG
haumi



Geschrieben von haumi am 19.07.2020 um 13:15:

 

So sieht es jetzt bei mir aus:

der zugehörige Code der box_gaestebuch.php sieht wie folgt aus.
Schau mal ob es auch bei dir klappt.

code:
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:
33:
34:
35:
36:
37:
38:
39:
40:
41:
<?php
//if(!(@hmp_check())) exit();
//
// HM - Portalbox Gästebuch V 2.5
// Boxid = 99 <- wurde vom setup so angelegt
//
eval("print("".$hm_boxhead_tpl."");");


$gb_bit="";


      $freischalt = 0;
$stmt = $dbi->prepare("SELECT COUNT(*) FROM bb".$n."_gaestebuch WHERE freischalt=?");
$stmt->bind_param("i" ,$freischalt);
$stmt->execute();
$stmt->bind_result($count);
$stmt->store_result();      // Liefert das Ergebnis zum Browser
$anzahl = $stmt->num_rows;   //wo es denn abgefragt werden kann

  if(!$anzahl) {
   $gb_bit = "<tr class="tablea"><td align="center"><span class="normalfont"><b>Es sind noch keine Einträge vorhanden</b></span></td></tr>";
  }else{
$freischalt = 0;
$stmt = $dbi->prepare("SELECT id,datum,name FROM bb1_gaestebuch WHERE freischalt=?");
$stmt->bind_param("i" ,$freischalt);
$stmt->execute();
$stmt->bind_result($id, $datum, $name);

     while($stmt->fetch()) {
        $name = htmlconverter($name);
        $date = formatdate($wbbuserdata['dateformat'],$datum,1);
        $time = formatdate($wbbuserdata['timeformat'],$datum);
       eval ("\$gb_bit .= "".$tpl->get("hm_box_gaestebuch_bit")."";");
      }
  }

eval("print("".$tpl->get("hm_box_gaestebuch")."");");

eval("print("".$hm_boxtail_tpl."");");
?>





LG
haumi



Geschrieben von Hangasilly am 19.07.2020 um 22:25:

 

Hey haumi,

erstmal Danke für die Mühe!
Aber leider bringt mir das so ja nix... Ich will ja kein eigenes GB als Solches, ich will das GB direkt in die Box legen... Darum ja auch in der hmportal.php der code^^

Die box soll dann die letzten 5 Einträge wiedergeben und gut...

Ich überlege zwar noch, alle Einträge in einer separaten Seite auszugeben und das zu verlinken, aber das wäre der nächste Schritt - erstmal müssen die letzten 5 Einträge in der Portalbox auftauchen...



Geschrieben von haumi am 20.07.2020 um 06:51:

 

Soll es so aussehen?


Das php-Script dazu:
code:
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:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
<?php
//if(!(@hmp_check())) exit();
//
// HM - Portalbox Gästebuch V 2.5
// Boxid = 99 <- wurde vom setup so angelegt
//
eval("print("".$hm_boxhead_tpl."");");


$gb_bit="";


      $freischalt = 0; // Variable festlegen
$stmt = $dbi->prepare("SELECT COUNT(*) FROM bb".$n."_gaestebuch WHERE freischalt=?");  // SQL-Befehl vorbereiten
$stmt->bind_param("i" ,$freischalt);  // Variable  einbinden
$stmt->execute();    //   Datenbankabfrage ausführen
$stmt->bind_result($count); //Ergebnisvariable festlegen
$stmt->store_result();      // Liefert das Ergebnis zum Browser
$anzahl = $stmt->num_rows;   //wo es denn abgefragt werden kann

  if(!$anzahl) {   // Abfrage wenn kein Eintrag vorhanden ist, dann gib folgende Zeile aus
   $gb_bit = "<tr class="tablea"><td align="center"><span class="normalfont"><b>Es sind noch keine Einträge vorhanden</b></span></td></tr>";
  }else{  // sind Einträge vorhanden
$freischalt = 0; // Variable festlegen
$stmt = $dbi->prepare("SELECT id,datum,name,inhalt FROM bb1_gaestebuchten WHERE freischalt=?");   // SQL-Befehl vorbereiten
$stmt->bind_param("i" ,$freischalt);  // Variable  einbinden
$stmt->execute();   //   Datenbankabfrage ausführen
$stmt->bind_result($id, $datum, $name, $inhalt );   //Ergebnisvariablen festlegen

     while($stmt->fetch()) {  //Durchlaufe einer Schleife solange Datensätze vorhanden sind
        $mess = $inhalt;  // Tabellenfeldinhalt einer Variablen zuweisen
        $name1 = htmlconverter($name);    // Tabellenfeldinhalt einer Variablen zuweisen
        $date = formatdate($wbbuserdata['dateformat'],$datum,1);  //Datum aufbereiten und einer Variablen zuweisen
        $time = formatdate($wbbuserdata['timeformat'],$datum);   // Uhrzeit aufbereiten und einer Variablen zuweisen
        $stamp = $date ."  um  ".$time;// Datum und Uhrzeit in einer Variablen zusammenfassen
       eval ("\$gb_bit .= "".$tpl->get("hm_box_gaestebuch_bit")."";"); // Template hm_box_gaestebuch_bit innerhalb der Schleife aufrufen
      }
  }

eval("print("".$tpl->get("hm_box_gaestebuch")."");"); // Template hm_box_gaestebuch außerhalb der Schleife aufrufen

eval("print("".$hm_boxtail_tpl."");");
?>




das template hm_box_gaestebuch
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<tr>
<td class="tablea" width="100%" colspan="10" align="center"><span class="acps">
<br>
<form method="POST" action="hmportal.php">
<input type="hidden" name="action" value="gb">
<if($wbbuserdata['userid'])><then> 
 <label for="name">Name:</label> $gb_name<input type="hidden" name="gb_name" value="$gb_name"><br><br></then>
 <else><br><input type="text" id="fname" name="gb_name" value="Name"><br><br></else></if>
  <label for="message">Deine Nachricht:</label><br>
  <input type="text" id="message" name="gb_message" value="Nachricht"><br><br>
  <input type="submit" value="Eintragen" action="gb">
</form>
<br>

$gb_bit

<br>
</span></td></tr>




das template hm_box_gaestebuch_bit
code:
1:
2:
3:
4:
5:
6:
7:
8:
<table cellspacing="1" cellpadding="4" border="0" width="95%" align="center" class="tableinborder">
<tr class="tabletitle">
 <td colspan="2" align="center"><span class="smallfont"><b>Die Einträge</b></span></td></tr>
<tr class="tablea">
 <td width="30%" valign="top" align="left"><span class="smallfont"><b>$name1</b> schrieb<br>am $stamp</span></td>
 <td valign="center" align="center"><span class="smallfont">$mess</span></td>
</tr>
</table>




"Die Einträge" muss noch als EINE Überschrift dargestellt werden.
Mach ich später falls du es nicht schon hast.

LG
haumi



Geschrieben von haumi am 20.07.2020 um 07:01:

 



template hm_box_gaestebuch_bit
code:
1:
2:
3:
4:
5:
6:
<table cellspacing="1" cellpadding="4" border="0" width="100%" align="center" class="tableinborder">

<tr class="tablea"> <td width="30%" valign="top" align="left"><span class="smallfont"><b>$name1</b> schrieb<br>am $stamp</span></td>
 <td valign="center" align="center"><span class="smallfont">$mess</span></td>
</tr>
</table>


template hm_box_gaestebuch
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
<td class="tablea" width="100%" colspan="10" align="center"><span class="acps">
<br>
<form method="POST" action="hmportal.php">
<input type="hidden" name="action" value="gb">
<if($wbbuserdata['userid'])><then> 
 <label for="name">Name:</label> $gb_name<input type="hidden" name="gb_name" value="$gb_name"><br><br></then>
 <else><br><input type="text" id="fname" name="gb_name" value="Name"><br><br></else></if>
  <label for="message">Deine Nachricht:</label><br>
  <input type="text" id="message" name="gb_message" value="Nachricht"><br><br>
  <input type="submit" value="Eintragen" action="gb">
</form>
<br>

<tr class="tabletitle">
 <td align="center"><span class="smallfont"><b>Die Einträge</b></span></td><tr>
$gb_bit

<br>
</span></td></tr>




Geschrieben von Hangasilly am 20.07.2020 um 10:38:

 

HEy, ok.. deine TPLs werfen mir das gleiche raus wie meine... dann liegts wohl doch an der PHP - wie machsten da den Auszug us der DB für die Anzeige der Einträge?!?



Geschrieben von haumi am 20.07.2020 um 13:22:

 

Schau mal hier

Eine kleine Anleitung:

code:
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:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
<?php

############  Verbindung zur Datenbank ############

$db = new db($sqlhost, $sqluser, $sqlpassword, $sqldb, $phpversion);
$dbi = new mysqli($sqlhost, $sqluser, $sqlpassword, $sqldb, $phpversion);

if($dbi->set_charset("utf8")) {
echo "Fehler beim Laden von UTF8:  " . $dbi->error;
}

##########  INSERT INTO  #################
$stmt = $dbi->prepare("INSERT INTO bb1_burg (fragen, stufe, frage) VALUES (?,?,?)");
$stmt->bind_param("sis", $fragen ,$stufe, $frage);
$stmt->execute();

##########  SELECT  #################
 $stmt = $dbi->prepare("SELECT id_fragen , desc_frage FROM burg ORDER BY id_fragen DESC LIMIT 1");
$stmt->execute();
$stmt->bind_result($id_fragen , $desc_frage );
$stmt->fetch();
                    while($stmt->fetch()) {
$id_fragen = ($id_fragen + 1);
        $stmt->store_result();      // Liefert das Ergebnis zum Browser
        $treffer = $stmt->num_rows;   //wo es denn abgefragt werden kann

######## Anzahl der Datensätze einer Tabelle ############
    $stmt = $dbi->prepare("SELECT count(*) AS anzahl FROM bb".$n."_users");
$stmt->execute();
$stmt->bind_result( $anzahl );
$stmt->fetch();


##########  UPDATE  #################
$stmt = $dbi->prepare("UPDATE burg SET desc_frage = ? , desc_answer= ? WHERE id_fragen= ?");
$stmt->bind_param("ssi", $desc_frage, $desc_answer, $id_fragen);
$stmt->execute();

##########  DELETE  #################
$stmt = $dbi->prepare("DELETE burg SET desc_frage = ? , desc_answer= ? WHERE id_fragen= ?");
$stmt->bind_param("ssi", $desc_frage, $desc_answer, $id_fragen);
$stmt->execute();


?>



LG
haumi



Geschrieben von Hangasilly am 23.07.2020 um 02:20:

 

Hey,

also hab das nun mal so in meinen kontext probiert einzubauen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
$dbi = new mysqli($sqlhost, $sqluser, $sqlpassword, $sqldb, $phpversion);

$stmt = $dbi->prepare("SELECT id , name , message , time  FROM `bb".$n."_hm_guestbook` ORDER BY time DESC ");
$stmt->execute();
$stmt->bind_result($id_mess ,$name1 , $mess ,$time );
$stmt->fetch();
                    while($stmt->fetch()) {
$id_mess = ($id_mess + 1);
        $stmt->store_result($name1 , $mess , $time);      // Liefert das Ergebnis zum Browser
		$stamp = date("d-m-Y \u\m H:i:s", $time);
		eval("\$hm_ownbox_guestbook_bit = "".$tpl->get("hm_ownbox_guestbook_bit")."";"); 
					}



...leider passt ihm da dann aber das
code:
1:
$stmt->execute()


nicht... die Abfrage funktioniert noch, sobald ich das execute aber mit 'einkommentiere', krieg ich kein Portal mehr angezeigt....



Geschrieben von haumi am 23.07.2020 um 07:20:

 

Kannst du mir mal die neuen FTP-Zugangsdaten geben und den Link zum Board?

Dann kann ich da mal schauen.

LG
haumi



Geschrieben von Hangasilly am 24.07.2020 um 18:37:

 

Hast PN^^ ;)



Geschrieben von Hangasilly am 05.08.2020 um 00:05:

 

OK, habs nun hinbekommen :D

Bei Anfragen, geb ich den Code gerne weiter ;)

In diesem Sinne aber auch besten Dank für die Hilfe^^


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH