Bitte schön. Freut mich, daß es nun funktioniert.
Ich war 10 Tage unterwegs und konnte deshalb nicht antworten, aber Du hast es ja selbst hinbekommen.
Gruß
Ingo
Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.
Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.
Jetzt anmeldenHier können Sie ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellenBitte schön. Freut mich, daß es nun funktioniert.
Ich war 10 Tage unterwegs und konnte deshalb nicht antworten, aber Du hast es ja selbst hinbekommen.
Gruß
Ingo
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
Ja, es funktioniert. Allerdings habe ich noch einen Link gefunden, der nicht will, wie ich will. Er soll die Bewertung, die der Besucher schreibt, in die Datenbank schreiben. Doch der Link funktioniert nicht :( Ich habe es auf dieselbe Weise versucht, aber mir wird nur die "Seite nicht gefunden" Seite angezeigt, wenn man ganz unten auf der Seite eine Bewertung abschicken will:
http://www.planet-gericke.de/neuZimmervermi…=16&details=234
<form action="<?php echo "?page_id=".$_GET['page_id'].""; ?>&details=<?php echo $row['id_objekt']; ?>#bewerten" method="post" name="bewertung">
<table width="100%" cellpadding="5">
<tr>
<td align="right" width="190" valign="top">
Ihr Name
</td>
<td>
<input maxlength="24" type="text" name="name" value="<?php if(isset($_POST['name'])) echo $_POST['name']; ?>" />
<span id="warnung_name" style="display:none; color:#c53f3f">Bitte geben Sie hier Ihren Namen ein</span>
<?php if(isset($_POST['name'])){if($_POST['name']==""){ echo "<br /><span style=\"color:#c53f3f\">Bitte geben Sie hier Ihren Namen ein</span>"; }}?>
<input type="hidden" name="id_objekt" value="<?php echo $row['id_objekt'];?>" />
</td>
</tr>
<tr>
<td align="right" valign="top" width="190">
Ihre Bewertung
</td>
<td>
<textarea name="bewertung_text" style="width:100%; height:90px; display:block"><?php if(isset($_POST['bewertung_text'])) echo $_POST['bewertung_text']; ?></textarea>
<span id="warnung_bewertung" style="display:none; color:#c53f3f">Bitte schreiben Sie ihre Bewertung</span>
<span id="warnung_anzahl" style="display:none; color:#c53f3f">Bitte schreiben Sie mindestens 3 Wörter</span>
<?php if(isset($bewertung)){
if(!$bewertung) {
if($zaehler<3 && $zaehler>0) {
echo "<span style=\"color:#c53f3f\">Bitte schreiben Sie mindestens 3 Wörter</span>";
}else {
echo "<span style=\"color:#c53f3f\">Bitte schreiben Sie ihre Bewertung</span>";
}
}
}?>
</td>
</tr>
<tr>
<td align="right" width="190" valign="top" style="padding-top:8px;">
Wieviele Sterne vergeben Sie?
</td>
<td valign="top">
<table cellpadding="0" cellspacing="0" style="padding:0px; margin:0px;">
<tr>
<td align="center" style="width:30px;"><input type="radio" name="sterne" value="1" <?php if(isset($_POST['sterne']))if($_POST['sterne']=="1") echo "checked"; ?> /></td>
<td align="center" style="width:30px;"><input type="radio" name="sterne" value="2" <?php if(isset($_POST['sterne']))if($_POST['sterne']=="2") echo "checked"; ?> /></td>
<td align="center" style="width:30px;"><input type="radio" name="sterne" value="3" <?php if(isset($_POST['sterne']))if($_POST['sterne']=="3") echo "checked"; ?> /></td>
<td align="center" style="width:30px;"><input type="radio" name="sterne" value="4" <?php if(isset($_POST['sterne']))if($_POST['sterne']=="4") echo "checked"; ?> /></td>
<td align="center" style="width:30px;"><input type="radio" name="sterne" value="5" <?php if(isset($_POST['sterne']))if($_POST['sterne']=="5") echo "checked"; ?> /></td>
</tr>
<tr>
<td align="center">1</td><td align="center">2</td><td align="center">3</td><td align="center">4</td><td align="center">5</td>
</tr>
</table>
<span id="warnung_sterne" style="display:none; color:#c53f3f">Bitte wählen Sie wieviel Sterne Sie vergeben wollen</span>
<?php if(isset($sterne)){ if(!$sterne){ echo "<span style=\"color:#c53f3f\">Bitte wählen Sie wieviel Sterne Sie vergeben wollen</span>";}}?>
</td>
</tr>
<tr>
<td colspan="2" height="50px">
<span id="but">
<input class="button" type="submit" name="bewertung_send" value="Bewerten" />
</span>
</td>
</tr>
</table>
</form>
Alles anzeigen
Und das hier soll angezeigt werden, nachdem auf "Bewerten" geklickt wurde:
<table border="0" width="99%" align="center" cellpadding="6" cellspacing="0">
<tr>
<td>
<table width="99%" style="table-layout:fixed;" align="center" cellpadding="0" cellspacing="0" class="tableborder" bgcolor="#FAFAFA">
<tr>
<td> <div style="text-align:center;margin-top:5px; margin-right:22px; margin-bottom:5px;">
<span class="text"><p align="center">Herzlichen Dank für Ihre Bewertung! <br />
<br />
Die Bewertung wird überprüft und schnellstens veröffentlicht.
<br />
<br /></p>
<p align="center">Ihr 1st Online Travel Services Team!</p>
<br />
<br />
<p align="center"><a href="<?php echo "?page_id=".$_GET['page_id'].""; ?>&details=<?php echo $_POST['id_objekt']; ?>">Zurück um Objekt</a></p>
</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
Alles anzeigen
Könntest du vielleicht noch mal? :oops:
Dankeschööön :)
Wozu soll denn das #bewerten da oben am Ende der Action-URL gut sein? Nimm das mal raus und gucke, ob es dann funktioniert.
Gruß
Ingo
Dann leitet er mich auf die Seite weiter, auf der ich mich gerade befinde, zeigt aber keinen Inhalt an:
Ich bin gerade hier: http://www.planet-gericke.de/neuZimmervermi…=12&details=120
Jetzt schreibe ich eine Testbewertung, klicke auf "Bewerten" und lande wieder auf dieser Seite: http://www.planet-gericke.de/neuZimmervermi…=12&details=120
Dort wird mir "Seite nicht gefunden angezeigt. Klicke ich jedoch in die Adressleiste und drücke nochmal "Enter", dann zeigt er mir wieder die Übersichtsseite des jeweiligen Objekts an.
Die Bewertung wurde nicht eingetragen.
Die Frage ist nun wieder, wo werden wie die Bewertungsfelder ausgewerte. Da muß irgendwas mit $_POST stehen.
Gruß
Ingo
Davon steht sehr viel in meiner Datei und in einigen anderen Dateien :(
<?php
if (isset($_POST['id_objekt']))
{
$alle_werte_ok = false;
if(trim($_POST['name'])!="") $name = true;
else $name = false;
if(trim($_POST['bewertung_text'])!=""){
$bewertung = true;
$zaehler = str_word_count($_POST['bewertung_text']);
if($zaehler < 3) $bewertung = false;
}
else $bewertung = false;
if(isset($_POST['sterne'])) $sterne = true;
else $sterne = false;
if(zahl($_POST['id_objekt']) && $name && $bewertung && $sterne)
{
$alle_werte_ok = true;
$sql = "INSERT INTO bewertung
(id_objekt, name, text, sterne, date)
VALUES ('".addslashes(htmlspecialchars($_POST['id_objekt']))."',
'".addslashes(htmlspecialchars($_POST['name']))."',
'".addslashes(htmlspecialchars($_POST['bewertung_text']))."',
'".addslashes(htmlspecialchars($_POST['sterne']))."',
'".date("Y-m-d H:i:s")."')";
mysql_query($sql) OR die(mysql_error());
?>
<table border="0" width="99%" align="center" cellpadding="6" cellspacing="0">
<tr>
<td>
<table width="99%" style="table-layout:fixed;" align="center" cellpadding="0" cellspacing="0" class="tableborder" bgcolor="#FAFAFA">
<tr>
<td> <div style="text-align:center;margin-top:5px; margin-right:22px; margin-bottom:5px;">
<span class="text"><p align="center">Herzlichen Dank für Ihre Bewertung! <br />
<br />
Die Bewertung wird überprüft und schnellstens veröffentlicht.
<br />
<br /></p>
<p align="center">Ihr 1st Online Travel Services Team!</p>
</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}
}
Alles anzeigen
Das Ganze wird dann an ein Script übergeben, durch die der Admin die Bewertungen erst freischalten muss.
Ich würde sagen, es liegt an der Post-Variable 'name'. Wordpress verwendet auch eine solche Variable und kommt damit durcheinander. Du muß also an allen Stellen, wo 'name' bei den Bewertungsfunktionen auftaucht, dieses durch z.B. 'bewertung_name' ersetzen.
Einmal im Formular selbst, z.B.:
<td>
<input maxlength="24" type="text" [B]name="bewertung_name"[/B] value="<?php if(isset([B]$_POST['bewertung_name'][/B])) echo [B]$_POST['bewertung_name'][/B]; ?>" />
<span id="warnung_name" style="display:none; color:#c53f3f">Bitte geben Sie hier Ihren Namen ein</span>
<?php if(isset([B]$_POST['bewertung_name'][/B])){if([B]$_POST['bewertung_name'][/B]==""){ echo "<br /><span style=\"color:#c53f3f\">Bitte geben Sie hier Ihren Namen ein</span>"; }}?>
<input type="hidden" name="id_objekt" value="<?php echo $row['id_objekt'];?>" />
</td>
Und natürlich an allen Stellen, wo es mit $_POST[] zu finden ist.
Gruß
Ingo
Entschuldigung, ich habe in den letzten Tagen an einem anderen Projekt gearbeitet :)
Kann ich nicht in den Dateien, wo die Variable überall vorkommt angeben, dass DIESE Variable aus DIESER Tabelle gemeint ist? A la "name = tabelle.name" oder so? Denn in meinen DB Tabellen kommen die Spalten ja auch mit "name" vor. Dann müsste ich die ja auch umbenennen?
Was in der Datenbank-Tabelle steht, ist egal. Das ist eine von WP unabhängige Tabelle. Wichtig sind die Änderungen in den PHP-Dateien, da sie dort mit dem WP-Parameter kollidieren. Der Spaltenname in der Tabelle muß nicht mit dem Namen der PHP-Variable oder des URL-Parameters übereinstimmen.
Für das Formular habe ich die notwendigen Änderungen ja bereits beschrieben. Bei der Auswertung sollte es dann so aussehen:
<?php
if (isset($_POST['id_objekt']))
{
$alle_werte_ok = false;
if(trim($_POST['bewertung_name'])!="") $name = true;
else $name = false;
if(trim($_POST['bewertung_text'])!=""){
$bewertung = true;
$zaehler = str_word_count($_POST['bewertung_text']);
if($zaehler < 3) $bewertung = false;
}
else $bewertung = false;
if(isset($_POST['sterne'])) $sterne = true;
else $sterne = false;
if(zahl($_POST['id_objekt']) && $name && $bewertung && $sterne)
{
$alle_werte_ok = true;
$sql = "INSERT INTO bewertung
(id_objekt, name, text, sterne, date)
VALUES ('".addslashes(htmlspecialchars($_POST['id_objekt']))."',
'".addslashes(htmlspecialchars($_POST['bewertung_name']))."',
'".addslashes(htmlspecialchars($_POST['bewertung_text']))."',
'".addslashes(htmlspecialchars($_POST['sterne']))."',
'".date("Y-m-d H:i:s")."')";
mysql_query($sql) OR die(mysql_error());
?>
<table border="0" width="99%" align="center" cellpadding="6" cellspacing="0">
<tr>
<td>
<table width="99%" style="table-layout:fixed;" align="center" cellpadding="0" cellspacing="0" class="tableborder" bgcolor="#FAFAFA">
<tr>
<td> <div style="text-align:center;margin-top:5px; margin-right:22px; margin-bottom:5px;">
<span class="text"><p align="center">Herzlichen Dank für Ihre Bewertung! <br />
<br />
Die Bewertung wird überprüft und schnellstens veröffentlicht.
<br />
<br /></p>
<p align="center">Ihr 1st Online Travel Services Team!</p>
</span>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<?php
}
}
Alles anzeigen
Gruß
Ingo
Ich werde ja irre! Es funktioniert!
Vielen lieben tausend Dank Ingo *fühl dich ganz doll gedrückt*
:)
____________________
Edit: Also die erste Bewertung hat funktioniert. Sobald ich aber testweise noch eine schreiben möchte, egal ob beim gleichen Objekt oder bei einem anderen, funktioniert der "Bewerten" Button nicht mehr :/
Es gibt da noch die JavaScript-Funktion validate_form(). Da muß auch noch name in bewertung_name geändert werden. Hier der Ausschnitt:
function validate_form()
{
var valid_name = true;
var valid_bewertung_text = true;
var valid_sterne = true;
var hiddenspan = document.getElementById("warnung_name");
if ( trim(document.bewertung.[B]bewertung_name[/B].value) == "" ){
valid_name = false;
hiddenspan.style.display = 'block';
}else{
valid_name = true;
hiddenspan.style.display = 'none';
}
...
Alles anzeigen
Oh man, stimmt.
Wie gesagt, ich danke dir von Herzen.
Habe die Seite gerade meinem Chef vorgestellt und er fand sie super :)
Danke für die Testbewertung ;)
Gut, Test bestanden! :-)
Gruß
Ingo
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!