Zwei Fragen

  • Themenstarter Themenstarter jaylibII
  • Beginndatum Beginndatum
J

jaylibII

Guten Morgen euch allen,

ich bin zwar neu hier aber ich habe schon mal zwie Fragen und hoffe das Ihr mir da helfen könnt, denn ich mit mit meinen Kenntnissen echt am ende.

So hier kommt mal Frage 1

Wie kann ich das machen, wenn ich auf meiner Seite ein BIld habe ( das etwas kleiner ist ) und ich da dann drauf klicke, dass dann ein PopUp auf geht wo das BIld dann in voller größe angezeigt wird. Ich will nicht für jedes Bild ein extra PopUp machen dafür habe ich die Zewit nicht könnte man das nicht mit PHP oder JavaSkript machen?

Hier kommt dann mal meine zweite Frage

Ich habe von einer Anleitung her ein Forum gemacht. Das geht auch so weit alles ohne wenn und aber wenn da nicht noch so ein kleiner Hacken währe. Und zwar: Es gibt eine Seite die heißt topic.php da werden immer die aktuellen Beiträge von einem Tread angezeigt ganz unten ist dann noch ein Forumlar das via Iclude eingebunden wird wo man dann auch auf den Beitrag antworten kann siehe BIild.

Jetzt will das aber gerne wie folgt machen: Unten soll NICHT das Formular sein sondern unten soll dann eben ein Link sein der dann heißt [Antworten] und wenn man da nn drauf klickt dann soll man eben zu einer Seite kommen die heißt: antworten_beitrag.php kann mir da jemand helfen, wie ich das machen muss, denn man muss ja auch eine Tread ID usw.. übergeben ich kenne mich leider in PHP noch net so gut aus.

Hier kommen mal die Codes die in dem Formluar sind das eingebunden wird und wo die Treads stehen:

Hier das Skript wo der tread steht

PHP:
<?php
include("config.php"); // config datei laden.

//echo "<a href=index.php>Zur&uuml;ck zur &uuml;bersicht</a><br><br>";

$threadid = $_GET['threadid']; // threadid aus adressleiste auslesen

$fp = fopen("template_post.html","r");  // teamplate zum lesen(r) &ouml;ffnen
$template = fread($fp,filesize("template_post.html"));  // inhalt der template datei in die teamplate variable laden.

$sql = mysql_query("SELECT * FROM simple_posts  WHERE threadid = '$threadid' ORDER BY postid ASC"); // mysql select befehl

while($row = mysql_fetch_Assoc($sql)) { // l&auml;d bei jedem durchgang(immer die n&auml;chste) eine zeile aus der tabelle in einen array in die variable $row

    $titel = $row['titel'];  // titel besorgen
    $von = $row['von'];  // von besorgen
    $datum = $row['datum']; // datum besorgen
    $post = $row['post']; // post besorgen
    
    $datum = strftime("%d.%m.%Y",$datum); //  datum formatieren
    
    $ausgabe = $template;
    
    $ausgabe = str_replace("{von}",'<a profils.php?user=' . $von . '">' . $von . '</a>',$ausgabe);  // von ins template einsetzen
    $ausgabe = str_replace("{titel}",$titel,$ausgabe);  // titel ins template einsetzen
    $ausgabe = str_replace("{datum}",$datum,$ausgabe); // datum ins template einsetzen
	
    $ausgabe = str_replace("{text}",echo_message($post,false,true),$ausgabe); // den post text ins template einsetzen
	
	$ausgabe = str_replace("{message}",'<a mypost.php?show=write&amp;empfaenger=' . $von . '">Message schreiben</a>',$ausgabe); // den post text ins template einsetzen
    
    echo $ausgabe;
    
};

include "antworten.php";  // antworten formular laden
?>


Das Formluar das eingebunden wird:

PHP:
<?php

include("config.php");  // config datei laden

if(!isset($absenden)) {  // wenn formular noch nicht abgesendet wurde
    echo "<div align=center><form action=topic.php?threadid=$threadid method=post>  
    Titel: <input type=text name=titel><br>
    Eintrag:<br>
    <textarea name=post></textarea><br>
    <input name=absenden value=Abschicken type=submit>
    </form></div>";  // Antworten Formular.

} else {  // wenn formular schon abgesendet wurde:

$von = $_SESSION["benutzername"];
$post = $_POST['post'];  // post eingabe holen
$titel = $_POST['titel'];  // tutel eingabe holen
$threadid  = $_GET['threadid'];  // threadid holen

$datum = time();  // aktuelles datum holen


if($von != "" AND $post != "" AND $threadid != "") {  // übneprüfen ob von und post nicht leer sind
    $sql = mysql_query("INSERT INTO `simple_posts` ( `postid` , `threadid` , `von` , `datum` , `post` , `titel` , `ip` )
                        VALUES (
                        '', '$threadid' , '$von', '$datum', '$post', '$titel', '$ip'
                        )");  // mysql eintragen query befehl
    if($sql) {  // wenn eintragen geklappt
        
    } else {   // wenn eintragen nicht geklappt hat:
        echo "Konnte nicht antowrten. Es ist ein Fehler aufgetreten.";   // fehlermeldung
    };
} else {  // wenn nicht alles ausgefüllt wurde
    echo "Sie müssen alles ausfüllen."; // fehlermeldung
};  
};

?>

So nun hoffe ich mal, dass mir da auch jemand helfen kann. Wünsch euch allen noch einen schönen Tag. Ich bin Online....

Gruß jaylibII
 

Anhänge

  • beitrag.gif
    beitrag.gif
    8,8 KB · Aufrufe: 114
zu Problem 1:
Ist vorwiegend eine JavaScript-Angelegenheit.
PHP:
<script language="javascript">
function popup(theFile, theWidth, theHeight) {
	window.open(theFile, "width="+theWidth+",height="+theHeight+",scrollbars,resizable=yes");
}
</script>
<?
$Bild = "Hallo.jpg";
$Bild_Eigentschaften = GetImageSize ($Bild);
echo '<a href="javascript:popup(\''.$Bild.'\', \''.$Bild_Eigenschaften[0].'\', \''.$Bild_Eigenschaften[1].'\');">Klick</a>';
 
Hallo _voodoo,

hmm was mache ich aber wenn der User dann das JavaSkript Deaktiviert hat, dann kann er nie die BIlder öffnen oder? Kann man da denn auch was mit PHP machen oder wird das dann zu schwer? Wie gesagt habe in PHP noch nicht so viele Erfahrungen.

Gruß jaylibIl
 
Popups können nur durch JavaScript realisiert werden. Es sei denn, du erstellst einen Link mit dem Parameter target="_blank". Dann öffnet sich zwar ein neues Fenster, allerdings hast du keinen Einfluss auf dessen Darstellung.

Kann man da denn auch was mit PHP machen oder wird das dann zu schwer?
PHP wird auf dem Server ausgeführt. Direkt mit PHP wirst du niemals den Browser dazu bringen ein Popup zu öffnen. Nur durch die Rückgabe entsprechenden HTML- oder JavaScript-Codes.

Sven
 
Eigentlich müsste ein direkter Link zu antworten_beitrag.php reichen, du musst halt nur, wie du schon erkannt hast, die threadid mit übergeben.
Code:
<a href="antworten_beitrag.php?threadid=$threadid">Antworten</a>
Dann musst du antworten_beitrag.php noch etwas ergänzen, da die Variable $threadid nicht mehr direkt zur Verfügung steht, weil die Datei nicht mehr in die andere eingebunden wird.
PHP:
$threadid  = $_GET['threadid'];
echo "<div align=center><form action=topic.php?threadid=".$threadid." method=post>  
    Titel: <input type=text name=titel><br>
    Eintrag:<br>
    <textarea name=post></textarea><br>
    <input name=absenden value=Abschicken type=submit>
    </form></div>";  // Antworten Formular.
Wenn das Formular ausgefüllt wurde, soll der User ja auch bestimmt zum Thread weitergeleitet werden. Also musst du entweder einen Link einbinden, oder den User mit
header ("location: topic.php?threadid=".$threadid.""); direkt dort hin leiten.
 
Hallo

danke für deine Hilfe hab das nun mal so gemacht wie du mir das gesagt hast. Aber ann kommt dieses Fehler.

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v148718/community/antworten_thread.php:21) in /www/htdocs/v148718/community/antworten_thread.php on line 231

Hier mal der Code wie ich das geamcht habe:

PHP:
<?php

//include("config.php");  // config datei laden
if(!isset($absenden)) {  // wenn formular noch nicht abgesendet wurde
	$threadid  = $_GET['threadid'];
	echo "<div align=center><form action=topic.php?threadid=".$threadid." method=post>  
    Titel: <input type=text name=titel><br>
    Eintrag:<br>
    <textarea name=post></textarea><br>
    <input name=absenden value=Abschicken type=submit>
    </form></div>";  // Antworten Formular. 
	} else {  // wenn formular schon abgesendet wurde:

$von = $_SESSION["benutzername"];
$post = $_POST['post'];  // post eingabe holen
$titel = $_POST['titel'];  // tutel eingabe holen
$threadid  = $_GET['threadid'];  // threadid holen

$datum = time();  // aktuelles datum holen


if($von != "" AND $post != "" AND $threadid != "") {  // übneprüfen ob von und post nicht leer sind
    $sql = mysql_query("INSERT INTO `simple_posts` ( `postid` , `threadid` , `von` , `datum` , `post` , `titel` , `ip` )
                        VALUES (
                        '', '$threadid' , '$von', '$datum', '$post', '$titel', '$ip'
                        )");  // mysql eintragen query befehl
    if($sql) {  // wenn eintragen geklappt
        
    } else {   // wenn eintragen nicht geklappt hat:
        echo "Konnte nicht antowrten. Es ist ein Fehler aufgetreten.";   // fehlermeldung
    };
} else {  // wenn nicht alles ausgefüllt wurde
    echo "Sie müssen alles ausfüllen."; // fehlermeldung
};  
};
header ("location: topic.php?threadid=".$threadid."");
?>
 
Vor Benutzung der [phpf]header[/phpf]-Funktion darf keine Ausgabe an den Browser erfolgen. Mehr Informationen dazu findest du, wenn du dem zuvor geposteten Link folgst oder dir eines der 181 Suchergebnisse anschaust, die du über die Verwendung der Suchfunktion mit den Schlagworten "headers already sent" erhälst.
 
Hmm nee das klappt so nicht, wenn ich die Seite antworten_thread.php aufrufen dann steht oben in der Adressleiste:

http://www.Xyz.de/antworten_thread?threadid= 1

und das ist ja falsch oder? Für den Tread ist die ID1 zugewießen und was soll dann das mit 201?

Dann wenn ich dann das ganze Aktualiesiere, dann steht da auch nichts drin....
 
Zurück