php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.06.2009, 18:54  
Benutzer
 
Registriert seit: 25.06.2009
Beiträge: 42
PHP-Kenntnisse:
Anfänger
marcoz befindet sich auf einem aufstrebenden Ast
Standard Kommentarfunktion reload

Hallo,

ich habe jetzt die Kommentarfunktion schon fast fertig, habe nur noch 2 Probleme, und zwar wenn ich einen Kommentar schreibe und auf eintragen klicke muss ich die seite erst wieder neu laden um den kommentar dann unter dem Bild zu sehen.

Da dachte ich mir ich versuche es mit der javascript Methode reload, also habe ich in das html Formular die onclick funktion integriert:

<input type="submit" onclick="javascript:location.reload()" name="formaction" value="Eintragen" />

Jetzt ist es jedoch so das wenn ich nach dem ersten Aufruf der Seite einen Kommentar schreiben möchte ich trotzdem nochmal die Seite aktualisieren muss um den Kommentar zu sehen, jedoch danach beim 2. 3. .... Kommentar wird die seite automatisch neu geladen.

Habt ihr eine Idee wie ich das Problem lösen kann?

Das zweite Problem ist das ich jetzt 2 mal auf ein Thumbnailbild klicken muss damit das Bild unten in Groß angezeigt wird, habt ihr eine Idee an was das liegen kann?

Hier der Code (KommentarFormular.html):

HTML-Code:
<form action="testgalerie2.php" method="post">
    <fieldset>
        <legend>Kommentar hinzufügen</legend>
        <label>Name:<br> <input type="text" name="Autor" /></label><br>
        <label>Text:<br> <textarea name="Inhalt" rows="6" cols="40"></textarea></label><br>
        <label>5+2:<br> <input type="text" name="Antwort"/></label><br><br>
        <input type="submit" onclick="javascript:location.reload()" name="formaction" value="Eintragen" /><br>
    </fieldset>
</form> 
und hier der Code von der Galerie(testgalerie2.php):

PHP-Code:
<html>
<head><title>Testgalerie</title>
<script type="text/javascript">
function change_pic(picture) {
document.bild.src=picture;
}
</script>
</head>
<body>
<?php
  
//-------------------------------------------Datenbankverbindung----------------------------------
  
  
$db = new mysqli('localhost''******''******','*****'); //Datenbank verbindung Aufbauen
  
if (mysqli_connect_errno()) {
    die(
'Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
  }
  
//-------------------------------------------Datenbankverbindung Ende-----------------------------
  //----------------------------------------Verzeichnis öffnen--------------------------------------  
  
$verz=opendir("./gallery/out");//Name des Verzeichnisses angeben, welches geöffnet werden soll
  //----------------------------------------Verzeichnis öffnen--------------------------------------
  //-------------------------------------Variablen Deklaration--------------------------------------
    
$linkl = array ("0");
    
$filename "test.php";
    
$i=1;
    
$showPic = array ("test");
  
//-------------------------------------Variablen Deklaration Ende---------------------------------
  //--------------------------------------Verzeichnis auslesen--------------------------------------
  
  
while ($file readdir ($verz))
  {
    if(
$file != "." && $file != ".." && $file != $filename)
    { 
$result $db->query('SELECT ID FROM Bilder WHERE Bild ="'.$file.'" ');      
      
$ID=$result->fetch_assoc();  //ID zum Bild feststellen
      
array_push($showPic,$file);  //Anzeigebildarray mit Bildern füllen
      
array_push ($linkl,"<td valign='bottom'><a href='testgalerie2.php?id=".$ID['ID']."#' onclick=\"change_pic('./gallery/skate/".$file."')\"><img src='./gallery/out/".$file."' width='100' height='100'></a></td>");

    } 
$i++;//if-Abfrage ende
  
//while Ende
  
$result->close();
  
  
//--------------------------------------Verzeichnis auslesen Ende---------------------------------
  
  
$anzahl count($linkl); // Es wird gezählt wieviele Elemente im Array sind
  
sort ($linkl);  // Array wird alphabetisch sortiert
  
  //--------------------------------------Thumbnails anzeigen---------------------------------------
  // In dieser for-Schleife werden alle
  // Arrayelemente ausgegeben
  // jeweils nach 4 Bildern einen Zeilenumbruch
  
echo "<table cellpadding='6' cellspacing='6' border='0' align='center'><tr>";
  for(
$x 1$x <= $anzahl$x++)
  {
    
$y=($x-1)%4;

    if(
$y==0){
      echo 
"</tr><tr>".$linkl[$x];
    }
    else{
      echo 
$linkl[$x];
    }
     
  }
//for-Schleife Ende  
  
echo "</tr></table>";  
  echo 
"<img src='./gallery/skate/".$showPic[1]."' id='bild' width='300' height='300'>"// Anzeigebild
  
  
closedir($verz); // Verzeichnis geschlossen
  //-----------------------------------------Thumbnails anzeigen Ende----------------------------------
  
readfile('KommentarFormular.html'); //Formular um Kommentare zu schreiben einfügen-------------------
  //-----------------------------------------Kommentare zu BildID auslesen und anzeigen----------------
  
$result $db->query('SELECT * FROM Kommentare WHERE BilderID="'.$_GET[id].'" ORDER BY Datum ');
    
         if (
$result->num_rows>=1) {
            while (
$row $result->fetch_assoc()) {
                echo 
'<div class="kommentar">'."\n";
                echo 
'    <span class="autor"><b>Autor:</b>&nbsp;&nbsp;&nbsp;&nbsp;'.htmlspecialchars($row['Autor'])."<br></span>\n";
                echo 
'    <span class="datum"><b>Datum:</b>&nbsp;&nbsp;'.$row['Datum']."<br></span>\n";
                echo 
"    <p>\n<b>Text:</b><br>";
                echo 
nl2br(htmlspecialchars(preg_replace('~\S{30}~''\0 '$row['Inhalt'])));
                echo 
"    </p>\n";
                echo 
"</div>\n";
            }
        }
  
//-----------------------------------------Kommentare zu BildID auslesen und anzeigen Ende------------- 
  //-----------------------------------------Kommentare einfügen-----------------------------------------
      
if ('POST' == $_SERVER['REQUEST_METHOD']) {
        if (!isset(
$_POST['Autor'], $_POST['Inhalt'], $_POST['Antwort'], $_POST['formaction'])) {
            die (
'Benutzen sie nur Formulare von der Homepage.');
        }
        if ((
'' == $autor trim($_POST['Autor'])) or 
                (
'' == $inhalt trim($_POST['Inhalt'])) or
                (
'' == $antwort trim($_POST['Antwort']))) {
            die (
'Bitte füllen sie das Formular vollständig aus.');
        }
        if (
'7' != $antwort) { // Frage
            
die ('Sie müssen die Frage richtig beantworten.');
        }
        
$sql 'INSERT INTO
                    Kommentare(Autor, Datum, Inhalt)
                VALUES
                    (?, NOW(), ?)'
;
        
$stmt $db->prepare($sql);
        if (!
$stmt) {
            die (
'Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
        }
        
$stmt->bind_param('ss'$autor$inhalt);
        if (!
$stmt->execute()) {
            die (
'Query konnte nicht ausgeführt werden: '.$stmt->error);
        }
        
//header('testgalerie2.php');
        //echo '<p class="info">Kommentar hinzugefügt. <a href="testgalerie2.php">Zurück zur Bildergalerie</a>.</p>';
      
}
  
//-----------------------------------------Kommentare einfügen Ende------------------------------------    
  
?> 
</body>
</html>
Gruß Marco

Geändert von marcoz (28.06.2009 um 19:02 Uhr). Grund: falscher code
marcoz ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.06.2009, 19:01  
Erfahrener Benutzer
 
Benutzerbild von Squall
 
Registriert seit: 19.03.2009
Beiträge: 539
PHP-Kenntnisse:
Fortgeschritten
Squall befindet sich auf einem aufstrebenden Ast
Standard

Bevor ich jetzt weiterlese, hoffe ich du hast diese Zeile verändert bzw. hast es noch vor

PHP-Code:
  $db = new mysqli('localhost''usename''passwort''dbname'); //Datenbank verbindung Aufbauen 
Squall ist offline  
Alt 28.06.2009, 19:03  
Benutzer
 
Registriert seit: 22.01.2009
Beiträge: 38
Lk38 befindet sich auf einem aufstrebenden Ast
Standard

Ich weiss zwar nicht, ob ich dein Problem genau verstanden habe, aber warum ist die header() anweisung da unten auskommentiert? warum lädst du die seite damit nicht neu?
Lk38 ist offline  
Alt 28.06.2009, 19:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Vermutlich weil oben:
Code:
<html>
<head><title>Testgalerie</title>
<script type="text/javascript">
function change_pic(picture) {
document.bild.src=picture;
}
</script>
</head>
<body>
steht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 28.06.2009, 19:08  
Benutzer
 
Registriert seit: 22.01.2009
Beiträge: 38
Lk38 befindet sich auf einem aufstrebenden Ast
Standard

Stimmt. Hab ich überlesen. ^^
Lk38 ist offline  
Alt 28.06.2009, 19:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Klasischer Fall von "»headers sent«? Dann nehm ich halt Javascript"
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 28.06.2009, 23:01  
Benutzer
 
Registriert seit: 25.06.2009
Beiträge: 42
PHP-Kenntnisse:
Anfänger
marcoz befindet sich auf einem aufstrebenden Ast
Standard

Habt ihr keine Idee wie ich das hinbekomme mit Javascript das die Seite gleich neu ladet nachdem ich auf eintragen geklickt habe.

Und das ich nicht zwei mal auf ein Thumbnail klicken muss um das Bild anzeigen zu lassen?

Gruß Marco
marcoz ist offline  
Alt 28.06.2009, 23:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
neu ladet
Die Idee mit Javascript einstampfen und es richtig machen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 28.06.2009, 23:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Das ist ein stinknormales Affenformular. Also entsprechende Artikel/Tutorials lesen und es genauso machen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 29.06.2009, 00:25  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.341
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ich hab jetzt nicht akribisch Deinen Code gelesen, aber kann es sein, daß Du zuerst die verfügbaren Kommentare liest, bevor Du die neuen schreibst?

Das würde erklären, warum die Daten erst nach einem Reload vorhanden sind...
Arne Drews ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klapptabelle - bei reload offen oder zu merken BocaSpanky JavaScript, Ajax und mehr 11 29.04.2009 13:05
Reload in Forms Sonja PHP Tipps 2006 5 20.06.2006 12:31
Reload - Sperre bei Datenübermittlung an MySQL? Stümper PHP Tipps 2006 3 12.06.2006 02:11
$_request und reload PHP Tipps 2007 3 18.12.2005 10:08
[Erledigt] Cookies &amp; Sessions. Seite funktioniert nur mit Reload PHP-Fortgeschrittene 4 18.09.2005 00:48
Reload nach Zurück PHP Tipps 2005-2 12 06.09.2005 18:31
Logon erst nach Reload sichtbar solitaer PHP-Fortgeschrittene 1 19.08.2005 12:36
Teil der Seite wird erst nach Reload angezeigt! PHP Tipps 2005-2 1 06.08.2005 22:46
popup reload boehseronkel HTML, Usability und Barrierefreiheit 1 03.08.2005 14:34
Zwei Sachen zum Seiten reload HTML, Usability und Barrierefreiheit 8 03.08.2005 09:21
Session ID wird beim reload erneuert ?!?! PHP Tipps 2005 3 18.05.2005 16:06
Browser zum reload zwingen? PHP Tipps 2005 17 28.02.2005 21:06
Kombination von back und reload PHP Tipps 2004-2 5 23.11.2004 10:56
Greenhorn: Reload einer IMG-Datei nach SUBMIT einer Form PHP Tipps 2004 3 20.09.2004 21:19
[Erledigt] POST-Problem - reload PHP Tipps 2004 5 19.07.2004 16:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kommentarfunktion php, php kommentarfunktion, \kommentar hinzufügen\ \bbcode ist an\, php kommentar funktion, php kommentartfunktion, kommentar funktion php, kommentarfunktion javascript, komentarfunktion php, kommentarfunktionen php, \kommentar\ \titel:\ \bb code\ \bbcode ist: an\, php kommentare, zuerst login dann kommentar formular anzeigen, php kommentieren, \kommentar hinzufügen\ html ist aus • bbcode ist an • smilies sind an, onclick\location.reload, javascript database reload, php formular onclick neu laden, reload php function, php reload function, html code für kommentar formular

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum