Suche auf lima-city
-
in: PHP und/oder Java...?
geschrieben von waldorf
Ich wusste jetzt nicht, wo ich den Thread platzieren sollte,
deshalb einfach mal hier...
Ich bin als Einsteiger in Sachen Programmiersprachen
begeistert von PHP, zumal ich damit alles für dynamische Webseitengestaltung machen kann (so jedenfalls mein Eindruck).
Nun überlege ich, eventuell auch Java zu lernen.
Frage: Lohnt sich das? Was kann Java, was PHP nicht kann?
Gibt's da spezielle Bereiche, in denen die eine Sprache
der anderen überlegen ist? -
in: Webserver Apache
geschrieben von waldorf
Du musst in deinem Router noch festlegen, dass der Port 80 (Standard http) auf die locale IP des Zielrechners geroutet wird. Dann kann man mit der IP-Adresse auf den Server zugreifen.
Jupp, hab ich gemacht (ist auch weitesgehend schon vor-
konfiguriert...)
DynDNS ist dafür gedacht, damit man über einen Domain-Name zu deiner IP-Adresse galangt. Die Rolle des DNS übernimmt dann der DynDNS-Dienst. Im Router kannst du diesen konfigurieren und somit wird deine IP, die beim DNS hinterlegt ist geupdatet, wenn sich diese durch den Internet-Service-Provider ändert. Somit kann man auf deinen Server immer per Domain-Name zugreifen statt die IP eingeben zu müssen.
Ja, allerdings frag ich mich, ob sich meine IP überhaupt mal
ändert, da ich bisher von einem Wechsel meiner
(öffentlichen) IP noch nix festgestellt
habe...
XAMPP eignet sich nur für die locale Entwicklung, da es sehr offen ist. Du musst einiges an Zeit reinstecken, um eine XAMPP-Installation abzusichern (hierfür findet man genug im Internet).
Ich möchte XAMPP auch hauptsächlich für die lokale Web-
entwicklung nutzen.
Wenn meine Webseiten auf dem privaten Server liegen,
müsste ich den Rechner doch immer im Betrieb haben,
damit auf die Seiten jederzeit zugegriffen werden kann,
oder? Macht für mich irgendwie keinen Sinn...
EDIT: Hab jetzt noch mal auf der HP des Providers nachgelesen.
Da steht: "Sie erhalten bei unseren DSL-Angeboten aus-
schließlich dynamische IP-Adressen..."///
und ich hab es noch mal getestet - meine ip ändert sich
tatsächlich nach Neuverbindung. Okay, jetzt weiß ich Bescheid.
Beitrag geändert: 7.10.2008 22:00:58 von waldorf -
in: Router-Problem
geschrieben von waldorf
Ich habe einen Netgear WGR614v6 Router mit der Firmware-Version V2.1.3GR_2.1.3 an dem ein Computer mit Windows Vista angeschlossen ist.
Installiert habe ich Xampp und Norton Internet Security 2009.
Aber ich weiß nicht wie man bei Norton und dem Router die Ports einstellt?
Danke im Voraus!
Pikafans
Guck mal, ob du im Menü deines Routers irgendwo den
Punkt "Gemeinsame Nutzung von Anwendungen" findest
(ist jedenfalls beim Speedtouch-Router so).
Da hab ich als Anwendung den Server eingegeben - also
HTTP-Server - und als zugewiesenes Gerät meinen
Rechner (stand da schon so, musste nur aktiviert
werden). Die Ports waren damit automatisch
richtig zugewiesen (80 - 80).
Weiß nicht, ob es bei Netgear auch so einfach ist...
-
in: Webserver Apache
geschrieben von waldorf
Ja, das ist ja auch völlig korrekt so, denn dein Router weis ja
eigentlich nicht was hinter ihm ( in deinem Home Netz ) so passiert und an Servern läuft.
Wenn du vom Internet auf den Server zugreifen willst musst du
deinem Router sagen unter welcher IP ( interne IP ) der Server
läuft damit er es durch routen kann. ( würde ich dir aber dringend
von abrate !!!)
Okay, ich es mittlerweile hinbekommen, dass ich auch über Eingabe
meiner öffentlichen (externen) IP auf meinen Rechner zugreifen
kann (durch Einstellungen im Interface des Routers).
Das ist ja dann jetzt wohl so korrekt...
Wusste halt net, dass ich mit nem Router zwei IPs habe...
theoretisch hat er schon recht, aber praktisch hängt das
von deinem Provider ab, ob und wie oft er dir ne neue IP gibt
Also könnte es sein, dass meine IP zwar wechselt, aber nur selten?
(Bislang hab ich einen solchen Wechsel noch nicht feststellen können...)
Es macht also in jedem Fall Sinn, sich eine DynDNS-Subdomain
zuzulegen?
Beitrag geändert: 7.10.2008 20:19:11 von waldorf -
in: Webserver Apache
geschrieben von waldorf
Es handelte sich offenbar um die interne IP meines Rechners.
Ueber die externe IP kann ich nach wie vor nicht auf den PC
zugreifen...
@michi: Aber wenn es denn so wäre, dass ich bei jedem
Einwählen ne neue Adresse bekomme, dann müsste
doch auch z.B. bei www.wieistmeineip.de immer
ne neue Adresse angezeigt werden, oder? Tut es aber nicht...
Beitrag geändert: 5.10.2008 21:31:35 von waldorf -
in: Webserver Apache
geschrieben von waldorf
Dynamische IP bedeutet, dass du bei jedem Einwählen eine andere IP bekommst. Also spätestens nach der täglichen Zwangstrennung hast du eine neue IP. Auf http://www.dyndns.com/services/dns/dyndns/ kannst du dir eine statische Adresse zulegen.
Lustich... ich hab's jetzt geschafft, auf meinen
Rechner durch Eingabe der IP zuzugreifen.
Und zwar hab ich jetzt einfach eine andere IP
bei der Gerätezuweisung genommen.
Das Webinterface meines Routers
weist mehrere IPs aus. Eine unter
"Internetverbidnungen" - die hab ich bisher
immer genommen, dann aber auch noch eine
bei "Geräten".
Ich blick da nicht ganz durch. Was hat es mit
den IPs auf sich...
Noch was. Auch, wenn ich die Windows-Firewall
aktiviere, kann ich weiter bei laufendem Server
auf den Rechner zugreifen... Ist das denn normal?
(Hab halt von Serverbetrieb keine Ahnung...);)
Beitrag geändert: 5.10.2008 21:13:26 von waldorf
Beitrag geändert: 5.10.2008 21:14:01 von waldorf -
in: Webserver Apache
geschrieben von waldorf
Ich habe XAMPP mit dem Apache-Server auf meinem Rechner
installiert. Der lokale Zugriff klappt auch.
Nun hab ich mal probiert, ob ich auf meinen Rechner
auch zugreifen kann, wenn ich meine IP in der Adresszeile angebe.
Klappt aber nicht, die Seite wird nicht gefunden.
Frage: Woran könnte es liegen?
Hinweise:
- Firewall auf Windows hab ich zu dem Zweck deaktiviert.
- Auf dem Webinferface meines Routers habe ich unter
"Gemeinsame Nutzung von Anwendungen 'HTTP-Server' als
Anwendung und meine IP als Gerät angegeben."
Woran könnte es noch liegen?
Liegts vielleicht an ner dynamischen IP?
(Mal ne Frage dazu: Wenn ich meine IP online ermittle,
kommt immer dieselbe raus. Heißt doch, dass die statisch ist, oder
hab ich da was nicht verstanden)?
-
in: spezielle Blätterfunktion (Problem)
geschrieben von waldorf
@all
Ich hab die Lösung bereits gefunden.
Kurz zur Erläuterung. Das Problem war, dass
durch Aktivieren der Blätterlinks in den Rubriken mit einem Mal
folgende Bedingung erfüllt war:
<? if (empty($id)) $query = "SELECT * FROM blog ORDER BY datum DESC LIMIT $start, $step";?>
Es war dann kein GET-Parameter id mehr gegeben, der wurde ja
nur durch die Menülinks übergeben. Obige Bedingung ist
aber die Bedingung für das Anzeigen der Übersicht - somit
gelangte ich in den Rubriken durch Blättern wieder in die
Übersicht. Ich musste also dafür sorgen, den id-GET-Parameter
in die Blätter-Links für die Rubriken zu bekommen.
Außerdem musste ich noch einmal die Funktion mysql_num_rows()
speziell für die gewählten Rubriken anwenden, gezählt werden
sollte nur die Zeilenanzahl der ausgewählten Rubriken.
Komplett ergibt sich für die Blätterfunktion der Rubriken:
<? $where = $rubriken[$id]; $select = "id, UNIX_TIMESTAMP(datum) as datum, titel, beitrag, rubrik, link, url "; $sql2= "SELECT $select FROM blog WHERE rubrik = '$where' ORDER BY datum DESC"; $result2 = mysql_query($sql2); $zeilen2 = mysql_num_rows($result2); $start2 = 0; $step2 = 2; if (isset($_GET["start2"])) { // $start2 = $_GET["start2"];} // Startwert als GET-Parameter setzen for ($i2 = 0; $zeilen2 > $i2; $i2 = $i2 + $step2) { $anf2 = $i2 + 1; $end2 = $i2 + $step2; if ($end2 > $zeilen2) { $end2 = $zeilen2; } if ($anf2 == $end2) { echo "[ <a href="?id=$id&start2=$i2">$end2</a>] "; } else { echo "[ <a href="?id=$id&start2=$i2">$anf2-$end2</a>] "; } } if (!empty($id) or $_GET["start2"]) {$query = "SELECT $select FROM blog WHERE rubrik = '$where' ORDER BY datum DESC LIMIT $start2, $step2"; $sql = mysql_query($query) or die(mysql_error());}
Copyright by waldorf...:P
Beitrag geändert: 5.10.2008 7:40:31 von waldorf -
in: spezielle Blätterfunktion (Problem)
geschrieben von waldorf
Hallo PHP-Experten
Ich habe folgendes Problem bei einer speziellen Blätterfunktion, vielleicht hat ja jemand
einen zündenden Einfall (ich muss etwas weiter ausholen):
Kurz gesagt geht es darum, dass ich in einem dynamischen Menü blättern will. Das Menü funktioniert so, dass automatisch Menülinks erzeugt werden zu einzelnen Rubriken. Der erste Link heißt „Übersicht“ – er führt zur Ansicht sämtlicher Einträge aller Rubriken. Die Rubrikenlinks zeigen natürlich nur die Einträge der jeweiligen Rubrik.
So, nun will ich in den Einträgen blättern – wenn ich in der Übersicht blättern will, will ich natürlich in allen Einträgen blättern. Wenn ich in den Rubriken blättern will, dann nur in der jeweiligen Rubrik.
UND GENAU LETZTERES IST DAS PROBLEM. Das Blättern in der Übersicht funktioniert, nicht aber das in den Rubriken – da gelange ich durch Blätterlinks wieder in die Übersicht.
Die wichtigsten programmiertechnischen Facts:
1. Programmierung des Menüs:
Die Menüeinträge bilden ein Array ($rubriken[]). Der nullte Value des numerischen Arrays lautet „Übersicht“:
<? $rubriken = array(„Übersicht“);?>
oder
<? $rubriken[0] = „Übersicht“ ?>
Erzeugt wird das Menü nun dynamisch mit einer Schleife:
<? foreach($rubriken as $index => $menue) { echo “<p><a href="?id=$index">$menue</a></p>”; // vor den inneren Anführungszeichen noch backslashes } ?>
Die Anzeige der Einträge wird per GET-Parameter (über die Menülinks) erzeugt:
<? $id = $GET_[`id`]; ?>
Wenn der Parameter 0 ist, also $id leer, dann sollen hiermit alle Einträge gezeigt werden:
<? $where = $rubriken[$id]; if (empty($id)) $query = "SELECT * FROM blog ORDER BY datum DESC LIMIT $start, $step";?>
(Das LIMIT verweist schon auf die Blätterfunktion, siehe unten.) Ist der Parameter id größer 0, handelt es sich um die Rubriken und es sollen dann nur die Rubrikeinträge gezeigt werden:
<? else $query = "SELECT * FROM blog WHERE rubrik = '$where' ORDER BY datum DESC LIMIT $start, $step"; ?>
Sodele. Das zum Menü. Kurz noch zur Blätterfunktion, sie erklärt sich eigentlich selbst:
<? $sql1= "SELECT * FROM blog"; $result1 = mysql_query($sql1); $zeilen = mysql_num_rows($result1); $start = 0; // Startwert $step = 2; // Anzahl der anzuzeigenden Einträge if (isset($_GET["start"])) { $start = $_GET["start"]; // Startwert als GET-Parameter setzen } $sql1= "SELECT * FROM blog"; $result1 = mysql_query($sql1); $zeilen = mysql_num_rows($result1); for ($i = 0; $zeilen > $i; $i = $i + $step) { $anf = $i + 1; $end = $i + $step; if ($end > $zeilen) { $end = $zeilen; } if ($anf == $end) { echo "[ <a href="?start=$i">$end</a>] "; } else { echo "[ <a href="?start=$i">$anf-$end</a>] "; } } ?>
Damit gelingt das Blättern in der Übersicht. Wer hat eine Idee, wie ich den Code so
Ergänzen kann, dass ich auch in den einzelnen Rubriken blättern kann??
Danke!!
Beitrag geändert: 5.10.2008 6:51:54 von waldorf -
in: id - Lücken bei Zählung in mysql...??
geschrieben von waldorf
versuchs mal so:
@Myhead:
Das Problem hat sich erledigt: Ursache war ein echter
Schussel-Fehler.
Ich hatte vor dem Setzen des Links zwar per SELECT-Anweisung
Tabelleneinträge ausgelesen, ABER NICHT DIE ID!
Daher konnte die richtige ID aus der Tabelle auch nicht
im URL-ANHANG landen:
<?$select = "id, UNIX_TIMESTAMP(datum) as datum, titel, beitrag, rubrik, link, url "; if (empty($id)) $query = "SELECT $select FROM blog ORDER BY datum DESC"; //USW.?>
Noch mal vielen Dank für die Hilfe.
Grüße
-
in: id - Lücken bei Zählung in mysql...??
geschrieben von waldorf
jo bidde immer wieder gerne^^
...jaja so ein problem hatte ich auch mal^^
Das Problem liegt daran, dass im Blog der oberste
Beitrag automatisch als id 1 bekommt, der zweitoberste
2 usw.
Der oberste Eintrag hat aber in der Tabelle den Wert 5,
der zweitoberste 22 usw.
Es müsste doch möglich sein, bevor ich den Link mit
URL-Anhang setze, dafür zu sorgen, dass der richtige
id-Wert ausgelesen wird. So was hab ich auch schon versucht mit:
<?while ($ds = mysql_fetch_object($sql)) { $id = $ds->id; // USW. }?>
Wenn ich dann den Link mit Anhang setze, erscheint
aber gar kein Parameter mehr... da steht dann nur
?id=... Hä?
Beitrag geändert: 1.10.2008 13:33:59 von waldorf -
in: id - Lücken bei Zählung in mysql...??
geschrieben von waldorf
@myhead: Super, danke für die Hilfe.
Allerdings sieht so das Script meiner bearbeiten.php-Datei bereits
aus. Das Problem liegt glaube ich noch vorher:
Es kommt nämlich "oben" bereits der falsche id-Wert an.
Der Parameter wird von meiner blog-Datei an die bearbeiten-Datei
geschickt, und zwar hiermit:
<a href="bearbeiten.php?id=<?= $id ?>">Edit</a>
Kommt dann der Wert "1" an, wird dieser auch brav abgearbeitet.
Allerdings hat der Beitrag nur im Blog diesen Wert, guck ich
in der Tabelle nach, steht da bspw. "3".
Also alles irgendwie durcheinander...;-( -
in: Brauche hilfe bei PHP anfang...
geschrieben von waldorf
Wenn ich aber für jeden Eintrag in mein Gästebuch eine eigene Datei erstellen möchte die dann je nach belieben geordnet und gezeigt werden können?
-sry wegen doppelpost-
Beitrag geändert: 1.10.2008 12:03:12 von onemillion
Ne, macht keinen Sinn. Du musst die Einträge in einer mysql-Tabelle speichern, z.B. könntest du eine Tabelle "guestbook"
hierfür anlegen. -
in: id - Lücken bei Zählung in mysql...??
geschrieben von waldorf
Ich habe folgendes Problem: Die lückenhafte Zählung der id's bei mysql wirft meine Skripts über den Haufen.
Ich habe ein Editiersystem programmiert, mit dem ich Blog-
Einträge ändern und in die Tabelle zurückschreiben kann.
Nur leider werden bislang völlig falsche Einträge geändert bzw.
z.T. auch gar nicht. Der Grund liegt in der Zählung der Einträge bei mysql:
Die "Ändern"-Links unter den Blog-Einträgen übergeben an eine bearbeiten.php-Datei GET-Parameter. Der erste Eintrag übergibt
den Parameter 1 usw. (an URL angehängt).
Problem: mysql zählt ganz anders, auch deshalb, da ich mal Einträge gelöscht habe. Mittlerweile zählt mysql so:
1,2,3,20,21,22.
So. Will ich z.B. den 4. Eintrag ändern, wird als Parameter 4 übergeben. Das Skript sucht dann id = 4 in der Tabelle - und findet da natürlich nüscht, weil da ja eine Lücke ist.
Etwas kompliziert - aber vielleicht kann mir jemand einen Tipp geben?? -
in: Frage zu CREATE TABLE/INSERT INTO
geschrieben von waldorf
Schau dir im PHPmyadmin mal die SQL Synax an, wenn du meherer Abfragen / delete Anweisungen gleichzeitig machst.
Das geht ganz einfach, indem du zuerst einige Datensätze erstellst, und dann diese mit einem Häkchen markierst und auf löschen gehst.
Der PMA zeigt dann die SQL Anweisung an.
So wie der das dann macht, kannst du es genauso machen.
Gruß, Prog
Ich werd's mal ausprobieren...;) -
in: Frage zu CREATE TABLE/INSERT INTO
geschrieben von waldorf
@karpfen.
Ich glaube kaum, dass du beides auf einmal machen kannst.
Musst eine Tabelle ja eh nur einmal erstellen. Was für Sinn sollte es auch zwingend geben jedes Mal, wenn man einer Tabelle was hinzufügt die Tabelle neu zu erstellen :)
Aber klär mich gerne auf.
Um das noch mal zu erklären: Es handelt sich um das Script einer
Setup-Datei für ein CMS. Die Tabellen sollen dort erstellt werden,
die Einträge sollen Test-Einträge sein. Nach dem Setup würde
die Datei wieder gelöscht - die Einträge würden danach natürlich
in einer eigenen Config-Datei vorgenommen. Insofern macht es schon
Sinn zu versuchen, beide Schritte - Tabellenerstellung plus
Testeinträge - zusammen zu machen.
Geht aber irgendwie nicht...
In dem Code werden nach $sqlcode = in einem ellenlangen Abschnitt
die Befehle "CREATE TABLE" und "INSERT TO" gehängt, nur getrennt
mit ";"...
Klappt nicht, daher habe ich alles aufgespalten.
Beitrag geändert: 28.9.2008 20:27:59 von waldorf
Beitrag geändert: 28.9.2008 20:28:55 von waldorf -
in: Frage zu CREATE TABLE/INSERT INTO
geschrieben von waldorf
Ich glaube kaum, dass du beides auf einmal machen kannst.
Musst eine Tabelle ja eh nur einmal erstellen. Was für Sinn sollte es auch zwingend geben jedes Mal, wenn man einer Tabelle was hinzufügt die Tabelle neu zu erstellen :)
Aber klär mich gerne auf.
Hmmm, jaa... klingt irgendwie logisch...
Und was mach ich jetzt mit meinem handbuch.. wegschmeißen?
Das steht da so drin!;)
-
in: Frage zu CREATE TABLE/INSERT INTO
geschrieben von waldorf
du musst die spalten angeben:
$sql = "INSERT INTO test(Spalte1, Spalte2) VALUES('bla', 'blub')"; mysql_query($sql) OR DIE("Es ist ein Fehler aufgetreten".mysql_error());
und wahrscheinlich beim Table erstellen noch einen Primary Key angeben.
$sql = "CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT, eintrag TEXT, name TEXT, PRIMARY KEY(id))"; mysql_query($sql) OR DIE("Es ist ein Fehler aufgetreten".mysql_error());
Beitrag geändert: 28.9.2008 19:36:55 von myhead
Ich bin mir nicht sicher, ob es daran liegt. So eine Version
hatte ich auch schon mal...
Per Code landen die Einträge normalerweise automatisch an
der richtigen Stelle, das ist jedenfalls so bei meiner
letzten "aufgespaltenen" Version, die ja funkioniert.
Es hakt an der Stelle, wo ich das Erstellen der Tabelle und
das Eintragen in die Tabelle mit dem "sql =" versuche zusammenzubringen...
Beitrag geändert: 28.9.2008 19:40:24 von waldorf -
in: Frage zu CREATE TABLE/INSERT INTO
geschrieben von waldorf
Ich möchte Tabellen samt Einträgen per Code erstellen.
Ich benutze dazu:
<? $sql = "CREATE TABLE test (eintrag TEXT, name TEXT)"; ?>
Bzw.:
<? $sql = "INSERT INTO test VALUES('bla', 'blub')"; ?>
So weit, so gut. Nun wollte ich aber Erstellen der Tabelle
plus Einträge in einem Schritt erledigen. Dazu, hatte ich gedacht, funktioniert Folgendes - stand auch so im Handbuch:
<? $sql = "CREATE TABLE test (eintrag TEXT, name TEXT); INSERT INTO test VALUES('bla', 'blub')"; $query = mysql_query($sql); ?>
Das funktioniert aber nicht. Ich habe mir jetzt geholfen,
indem ich den Code umständlich aufgespalten habe mittels
Variablen. Das geht auch, ist aber, wie gesagt, umständlich:
$sql1 = "CREATE TABLE test (eintrag TEXT, name TEXT)"; $query1 = mysql_query($sql1); $sql2 = "INSERT INTO test VALUES('bla', 'blub')"; $query2 = mysql_query($sql2); ?>
Ist das denn "normal"??
Beitrag geändert: 28.9.2008 19:32:38 von waldorf
Beitrag geändert: 28.9.2008 19:33:13 von waldorf
Beitrag geändert: 28.9.2008 19:34:41 von waldorf -
in: register_globals abschalten
geschrieben von waldorf
Also, einerseits kannst du natürlich die php.ini editieren.
Aber falls du keinen Zugriff darauf hast, kannst du versuchen mit ini_set() register_globals für die Zeit der Ausführung zu deaktivieren.
http://de3.php.net/manual/de/function.ini-set.php
Wenn du hier auf lima arbeiten willst, dann kannst du register_globals hier deaktivieren: http://www.lima-city.de/domains.html
Beitrag geändert: 2.7.2008 16:52:19 von bladehunter
Zum Thema ini-einstellungen hab ich auch noch gleich ne Frage.
Und zwar geht es um Sessions - use_trans-id steht bei lima-city auf
"off". Kann ich das mit ini_set() auch auf on stellen?
Oder gibts geht das sogar "manuell" wie bei register_globals??
Beitrag geändert: 21.9.2008 13:48:12 von waldorf -
in: "Intelligentes Menü"?
geschrieben von waldorf
@adrians: Mit der farblichen Hervorhebung der markierten
Menüeinträge geht jetzt auch. Danke noch mal. -
in: "Intelligentes Menü"?
geschrieben von waldorf
@adrians:
Wenn ich in deinen Code jetzt auch noch einbinden will,
dass nicht nur die Verlinkung des gewählten Eintrags
aussetzt, sondern der Eintrag auch rot erscheint,
muss ich das dann so schreiben?
<? foreach($rubriken as $index => $menue) { echo ($_GET['id']==$index)?'<p style="color:red">' . $menue . '</p>':'<p><a href="?id=' . $index . '">' . $menue . '</a></p>'; }?>
Edit: Natürlich mit BACKSLASH vor und nach \"color:red\"
Funktioniert nämlich mit der Farbe nicht...
Beitrag geändert: 20.9.2008 9:44:00 von waldorf
Beitrag geändert: 20.9.2008 9:45:14 von waldorf
Beitrag geändert: 20.9.2008 9:46:52 von waldorf -
in: "Intelligentes Menü"?
geschrieben von waldorf
@adrians: GENIAL! Es funzt jetzt! Herzlichen Dank
für die kompetente Hilfe!!!
-
in: "Intelligentes Menü"?
geschrieben von waldorf
hmm versuch mal vor $id ein (int)
ich hab den code getestet und bei mir tritt auch ohne (int)
kein fehler auf !?
Ne, funktioniert nicht.
ist $id = $_GET['id']; !??!?
Ja.
und noch ne frage ist bei den echo
"<a href=" <<-- hier ein \ davor !?
Ja.
Wie gesagt, der Link wird auch dann angezeigt, wenn
ich auf den Menüeintrag geklickt habe.
-
in: Script für E-Mail-Adresse eintragen
geschrieben von waldorf
Seh ich das richtig, dass du ein Kontaktformular ohne
Nachrichtenfeld willst?
Das könnte so aussehen - "stylen" musst du das Formular allerdings
noch selbst, um es deiner Webs. anzupassen.
Formular: kontakt_gedichte.htm
<html> <head> <title>Kontaktformular für Gedichte-Abo</title> </head> <body> <h2>Ich möchte ein Gedichte-Abo</h2> <form action="auswertung_kontakt_gedichte.php" method="post"> <table> <tr> <td>Ihr Name</td> <td><input name="name" size="53"></td> </tr> <tr> <td>Ihre Mailadresse</td> <td><input name="adresse" size="53"></td> </tr> </table> <br> <input type=submit value="Ab die Post ..."> </form> </body> </html>
Die Auswertung: auswertung_kontakt_gedichte.php
<? $fehler = ""; $nz = chr(13).chr(10); $name = $_POST['name']; $adresse = $_POST['adresse']; if (empty($name)) $fehler .= "<li>der Absendername fehlt</li>"; if (empty($adresse)) $fehler .= "<li>die Absenderadresse fehlt</li>"; if (empty($fehler)) { $an = // HIER EMPFÄNGER-ADRESSE EINTRAGEN ! $betreff = "Gedichte-Abo"; $datum = "Datum: ".date("j.n.Y").$nz; $from = "From: <me@lima-city.de>"; $zeit = "Zeit: ".date("H:i").$nz; $von = "Von: ".$name." <".$adresse.">".$nz; $text = $datum.$zeit.$von; $titel = "Ihre Meldung wurde versandt"; mail($an,$betreff,$text,$from); } else $titel = "Es ist ein Fehler aufgetreten"; ?> <html> <head> <title><?=$titel?></title> </head> <body> <? if (empty($fehler)) { $text = strip_tags($text); $text = htmlentities($text); $text = str_replace($nz,"<br>",$text); echo "<p>Ihre Meldung wurde verschickt.</p>"; echo "<p>$text</p>"; } else { echo "<p>Ihre Meldung konnte nicht versandt werden, weil"; echo "<ul>$fehler</ul>"; echo "</p>"; } ?> </body> </html>
Beitrag geändert: 19.9.2008 17:06:39 von waldorf -
in: "Intelligentes Menü"?
geschrieben von waldorf
Ich habe ein Menü vorliegen, dass Einträge zu verschiedenen
Rubriken automatisch generiert - in Kombination mit MySql.
Macht man Einträge zu Rubriken, erscheint automatisch ein
neuer Eintrag in der Menüleiste mit dem Rubriken-Namen.
Funktioniert soweit alles. Sieht etwa so aus:
Übersicht
Erste Rubrik
Zweite Rubrik
Code lautet:
<? foreach($rubriken as $index => $menue) echo "<p><a href="?id=$index">$menue</a></p>"; ?>
Jetzt soll aber, sobald ein Menüeintrag ausgewählt ist, die
Verlinkung ausgeschaltet werden. Das soll mit einer If-Abfrage
gemacht werden: stimmt der Index-Wert des Menüeintrags mit dem
get-Parameter id oben in der Adresszeile überein (etwa ?id=1 für den
ersten Rubrik-Eintrag), soll kein
Link gesetzt werden.
Der Code lautet:
<? foreach($rubriken as $index => $menue) { if ($index == $id) echo "<p>$menue</p>"; else echo "<p><a href="?id=$index">$menue</a></p>"; }?>
So - sollte funktionieren, tut es aber nicht. Es wird munter
weiter verlinkt, auch wenn der Menüeintrag gewählt wurde.
Komischerweise ist jetzt allerdings beim "nullten" Menüeintrag -
nämlich "Übersicht" - permanent die Verlinkung weg.
("Übersicht" ist Array zu den Rubriken -
$rubriken = array("Übersicht") ;
Wo liegt da ein logischer Fehler?
Bitte um Rat.
Beitrag geändert: 19.9.2008 16:24:23 von waldorf -
in: Parse Error Datumsfunktion
geschrieben von waldorf
@Büttler:
Danke für die Erklärung, nun seh ich es auch. -
in: Parse Error Datumsfunktion
geschrieben von waldorf
@trueweb:
Kapiert hab ich es allerdings noch nicht: warum gehören in Zeile 5
2 schließende Klammern am Ende hin, aber nicht in Zeile 4?
Ist doch dieselbe Struktur?? -
in: Parse Error Datumsfunktion
geschrieben von waldorf
Eine Klammer vergessen...
else $ergebnis = date("j. ",$t).htmlentities($monat[date("n",$t)-1].date(" Y, H:i:s",$t));
Klasse, genaus das war's. Dann zum zweiten mal Danke!War übrigens ein Fehler im Handbuch...
-
in: Parse Error Datumsfunktion
geschrieben von waldorf
Immer wieder mal ein ein neues Prob. Diesmal geht es um eine
Datumsfunktion, die in der Datei #_functions.inc definiert werden
soll. Die Idee ist, sich von Mysql eine Unix-Zeitangabe schicken
zu lassen und diese dann zu formatieren mit deutschen Monatsnamen.
Dies soll mit einem Array geschehen.
Zur Erläuterung:
$zeit = date("H:i" , 11200);
würde die Zeit 11.200 Sek. nach Beginn der Unix-Zeitrechnung geben.
$zeit = date("H:i"); liefert den aktuellen Zeitpunkt.
Nach Def. des Arrays wird eine If-Abfrage gestartet. Wenn die
Funktion datum (now)lautet, soll die aktuelle Zeit mit deutschen
Monatsnamen gegeben werden. Andernfalls - datum (11200) - der Unix-Timestamp.
<? function datum($t) { $monat = array("Januar","Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); if ($t == "now") $ergebnis = date("j. ").htmlentities($monat[date("n")-1]).date(" Y, H:i"); else $ergebnis = date("j. ",$t).htmlentities($monat[date("n",$t)-1].date(" Y, H:i:s",$t); return $ergebnis; } ?>
So weit, so gut... Nun erscheint aber immer folgende Fehlermeldung:
nämlich "Parse Error unexpected ';' " für die Zeile 5.
Weiß jemand, warum??
Danke!
Beitrag geändert: 19.9.2008 12:47:22 von waldorf -
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
Du musst natürlich $from mit an die Mail-Funktion übergeben...
mail($an,$betreff,$text,$from);
Supi, das war die Lösung! Danke!!!
-
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
Hi,
also ich weiß jetzt nicht ob du evtl. auf einem anderen Server liegst, aber bei mir geht auch der Mailversand zu gmx.de
Habe folgenden Code verwendet:
Hi Scout,
ja, mit diesem Script erreichen meine Mails auch GMX (in der From:-Zeile müssen dabei
noch spitze Klammern <> stehen).
Allerdings besteht das Problem via Kontaktformular immer noch:
Hier funzt es nur bei freenet.de, nicht bei gmx.de.
Ich habe keine Ahnung, woran das liegen könnte. Kann es vielleicht
sein, dass GMX die Mails als via Kontakformular versandt erkennt
und automatisch ausfiltert??
Ich poste mal den Code.
Ein Auszug aus der Datei auswertung_kontakt.php, die die Auswertung
des Formulars kontakt.php übernimmt:
<? $fehler = ""; $nz = chr(13).chr(10); $name = $_POST['name']; $adresse = $_POST['adresse']; $nachricht = $_POST['nachricht']; if (empty($name)) $fehler .= "<li>der Absendername fehlt</li>"; if (empty($adresse)) $fehler .= "<li>die Absenderadresse fehlt</li>"; if (empty($nachricht)) $fehler .= "<li>keine Nachricht eingetragen wurde</li>"; if (empty($fehler)) { $an = "xxxxxxx@gmx.de"; // HIER EMPFÄNGER-ADRESSE EINTRAGEN ! $betreff = "Eine Nachricht"; $datum = "Datum: ".date("j.n.Y").$nz; $from = "From: <me@lima-city.de>; $zeit = "Zeit: ".date("H:i").$nz; $von = "Von: ".$name." <".$adresse.">".$nz; $linie ="-------------------".$nz; $text = $datum.$zeit.$von.$linie.$nachricht; $titel = "Ihre Nachricht wurde versandt"; mail($an,$betreff,$text); } else $titel = "Es ist ein Fehler aufgetreten"; ?>
Wie gesagt, bei freenet kommen die Mails so an.
Auch, wenn ich die gmx-Adresse als Empfänger angebe, kommt die
Meldung "Ihre Nachricht wurde versandt". Nur finde ich sie
dann nicht im Posteingang...
Beitrag geändert: 19.9.2008 11:21:35 von waldorf
Beitrag geändert: 19.9.2008 11:24:49 von waldorf -
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
Blödsinn.
Wenn du kein FROm angibst, denken die Provider, es wäre SPam und löschen SIe.
Kann sogar dann sein, das sie die Abesender IP blockieren, also das du nie wieder bei G;X durch kommst.
Es war ja anders. Bei der Zusendung nach gmx stand da immer
eine From-Zeile.
Nur bei freenet hatte ich es zwischenzeitlich gelöscht - und
da klappt es einwandfrei.
Ich habe systematisch herumprobiert und bleibe dabei - bis zum
Beweis des gegenteils:
Versand von Mails per PHP funktioniert bei freenet,
nicht aber bei gmx. Bei web.de übrigens auch nicht!
-
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
Falsch. Von was eine E-Mail gesendet wird ist absolust egal, solange sie richtig ist. Die Provider wissen normalerweise NICHT von was gesendet wurde.
Es lag/liegt an der FROM: Zeile, der Sender fehlt. Das ist der Grund warum die Mails nicht zugestellt wurden. Die Mail muss einen Absender haben, der dann beim Empfänger steht, ob die Adresse sinnvoll ist, ist eine andere Sache. Du kannst eigentlich jeden Mist eintragen, solange sie ein gültiges Format hat. Bestes Beispiel dazu Spammails. Beachte mal die Absender. Meist nur irgendein sinnloser Müll.
Schau dir mal die folgende Seite an: http://schattenbaum.net/php/mail.php
Ich hatte die From-Zeile allerdings auch schon vorher da mal stehen,
bevor ich sie zwischenzeitlich gelöscht hatte.
Da kamen dann bei GMX dennoch keine Mails an.
Wie gesagt, bei freenet hat es zum ersten Mal geklappt.
Dass Provider PHP-Mails unterschiedlich handhaben, hab ich des
Öfteren gelesen.
Beitrag geändert: 16.9.2008 7:43:08 von waldorf -
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
So, bei freenet sind die Mails zum ersten Mal angekommen.
Und zwar hing es wohl mit der zeile "from:"
zusammen. Da muss wohl die Mail-Adresse stehen, die ich bei
Lima-City hinterlegt habe.
Ob es bei GMX jetzt auch klappt, weiß ich nicht...
$from = "From: Kontakformular <//MEINE E-MAIL-ADRESSE BEI LIMA C.>";
P.S.: Ob es wirklich mit der From-Zeile zusammen hing, weiß ich nicht.
Ich glaub es ist eher so, dass die PHP-Mails von freenet akzeptiert
werden, von anderen Mail-Providern aber nicht.
Habe jedenfalls so was gelesen.
//EDIT by sebigisler: Doppelpost zusammengefügt
Beitrag geändert: 16.9.2008 7:43:23 von sebigisler -
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
Ein Auszug aus der Datei auswertung.php.
Formularskript lass ich jetzt mal weg.
<? $an = // HIER EMPFÄNGER-ADRESSE $betreff = "Nachricht via Kontaktformular"; $datum = "Datum: ".date("j.n.Y").$nz; $zeit = "Zeit: ".date("H:i").$nz; $von = "Von: ".$name." <".$adresse.">".$nz; $linie ="-------------------".$nz; $text = $datum.$zeit.$von.$linie.$nachricht; $titel = "Ihre Nachricht wurde versandt"; mail($an,$betreff,$text); ?>
-
in: Welche Provider nehmen PHP-Mails an?
geschrieben von waldorf
Von welchen Providern wisst ihr, dass sie PHP-Mails akzeptieren?
Ich hab z.B. ein Mailkonto bei GMX, hab aber erfahren, dass GMX
per PHP verschickte Mails nicht zulässt.
Schicke ich testhalber per PHP eine Mail an mein Konto,
verschwinden die Mails leider im Daten-Nirwana, obwohl sie
erfolgreich versandt wurden... -
in: GB problem
geschrieben von waldorf
Ja, das ist das Gästebuch welches der User "differentplaces" gepostet, und es ist mein Gästebuch. (Ich betreibe die Homepage der Band Different Places).
Das Gästebuch funktioniert, er muss auch nichts daran ändern. Sein Problem ist, dass er die Tabelle "entries" noch nicht angelegt hat.
Jup, sowas hatte ich mir schon gedacht.
Und noch ein Hinweis ist wichtig:
das Feld "message" ist vom Typ "TEXT" (nicht Varchar)!
Hatte dort auch erst "Varchar" stehen - dann funktionieren
die Einträge nicht!
GB ist übrigens prima!
Beitrag geändert: 15.9.2008 12:10:56 von waldorf -
in: GB problem
geschrieben von waldorf
Ist das GB zufällig identisch mit dem, was der User "differentplaces" neulich gepostet hat (findet sich als
Thema im Forum)? Das funktioniert jedenfalls.
Hast du denn in mysql alles richtig eingestellt? Also
eine entsprechende Tabelle angelegt mit den richtigen Feldern
samt korrekter Typ-Zuweisung?
Beitrag geändert: 15.9.2008 10:44:48 von waldorf -
in: parse error
geschrieben von waldorf
Liebe Leutz,
ich habe jetzt einfach Folgendes gemacht - nämlich mir die
Skripts von der HP des Autors, der das Handbuch geschrieben hat,
runtergezogen. Nun funktioniert es natürlich.
Irgendwo hat sich da ein ekliger Fehler eingeschlichen,
allein der Teufel weiß, wo...
Greetz -
in: parse error
geschrieben von waldorf
Mir scheint es sich noch um ein grundsätzlicheres Problem zu
handeln. So soll ja mit
<? $werte = array("schlecht", "gut", "sehr gut"); $frage = htmlentities("Wie findet ihr X und Y?"); $ergebnis = "ergebnis_xy.txt"; $button_text = " Fortsetzung folgt! "; sort($werte); $anzahl = count($werte); $nz = chr(13).chr(10); if (!file_exists($ergebnis)) { $dz = fopen($ergebnis, "w"); for ($i = 0; $i < anzahl; $i++) { $eintrag = $werte[$i].$nz."0".$nz; fwrite($dz, $eintrag); } fclose($dz); } ?>
eine Zählerdatei angelegt werden, in der die Werte eingetragen
und gezählt werden.
Die Datei ergebnis_xy.txt wurde auch angelegt. Allerdings bleibt
sie leer. Es gibt dort keine Einträge, die mit
$dz = fopen($ergebnis, "r");
ausgelesen werden könnten.
Hrrrm.
Beitrag geändert: 14.9.2008 22:36:06 von waldorf
Beitrag geändert: 14.9.2008 22:52:34 von waldorf
Beitrag geändert: 14.9.2008 22:55:10 von waldorf -
in: parse error
geschrieben von waldorf
Zeig doch mal den Teil Code, an dem das Array deklariert und initialisiert wird. Man kann ein numerisches Array natürlich nicht wie ein assoziatives Array ansprechen.
Also, das Array ist sowohl numerisch als auch assoziativ initialisiert.
Ist das eigentlich ein Widerspruch?
In der Variablen.php-Datei lautet der Code:
<? $werte = array("schlecht", "gut", "sehr gut"); $frage = htmlentities("Wie findet ihr X und Y?"); $ergebnis = "ergebnis_xy.txt"; $button_text = " Fortsetzung folgt! "; sort($werte); $anzahl = count($werte); $nz = chr(13).chr(10); if (!file_exists($ergebnis)) { $dz = fopen($ergebnis, "w"); for ($i = 0; $i < anzahl; $i++) { $eintrag = $werte[$i].$nz."0".$nz; fwrite($dz,$eintrag); } fclose($dz); } ?>
In der Auswertung.php-Datei ist dann noch dieser Schnipsel:
<? $poll = array("schlecht" => 0, "gut" => 0, "sehr gut" => 0); ?>
-
in: parse error
geschrieben von waldorf
$_POST['umfrage'] liefert scheinbar den Schlüssel für das $werte-Array. Versuch mal folgendes:
<?php $key = $_POST['umfrage']; $stimme = $werte[$key]; ?>
edit: Welche PHP-Version nutzt du? Ich meine mich erinnern zu können, Arrays als Arrayschlüssel schonmal benutzt zu haben. Scheinbar gehts bei dir aber nicht...
Beitrag geändert: 14.9.2008 14:31:50 von sandrock-jonas
Ich habe es ausprobiert. Für die gleiche Zeile bekomme ich nun
folgende Fehlermeldung:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Ich benutze PHP 5.
-
in: parse error
geschrieben von waldorf
Zitat: Arrays in Arrays (mehrdimensionale Arrays) werden über $array[][] angesprochen.
Da ich den Rest nicht kenne, vermute ich, dass $werte ein mehrdimensionales Array ist, was aber irgendiwe auch keinen Sinnmacht, weil $_POST dort eigentlich gar nicht rein kommen kann, es sei denn, du schreibst es vorher "von Hand" dort hinein. Was ich sagen will: Sicher, dass die Logik dahinter überhaupt stimmt?
---------
Tja, wenn ich das wüsste. Ich vertraue hier einem PHP-Handbuch, von dem
ich das übernommen habe. Ich kann ja mal wiedergeben, was das schlaue
Handbuch dazu schreibt.
Zunächst zur Erläuterung. Die Werte für die Umfrage habe ich in
eine Datei "variablen.php" angelegt mit (Auszug):
<?$werte = array("schlecht", "gut", "sehr gut");?>
USW.
Der Anfang vom Skript fürs Formular lautet (Auszug):
<? include ("variablen.php") ?> <html> <head></head> <body> <form action="auswertung.php" method="post"> </body> </html>
USW.
Nun schreibt das Handbuch:
"Das Formular liefert als Ergebnis den Index des gewählten Elementes
(also z.B. "gut") in der Variablen $_POST['umfrage'] zurück. Die
Auswertung muss also nur einen Zähler für jedes Element mitführen
und diesen Zähler bei jeder Rückmeldung anpassen."
Etwas weiter heißt es dann:
Da das Umfrageformular in $_POST['umfrage'] den Index des gewählten
Elementes übergibt, können wir mit
$stimme = $werte[$_POST['umfrage]];
die abgegebene Stimme der Variablen $stimme zuweisen."
--
Funktioniert aber nicht...
-
in: parse error
geschrieben von waldorf
Zur Zeile
$stimme = $werte[$_POST['umfrage']];
erhalte ich folgende Fehlermeldung
Parse error: syntax error, unexpected '[', expecting ']'
Kann mir das jemand erklären (es handelt sich um ein Skript für ein Umfrageformular)? -
in: E-Mail wird nicht versendet
geschrieben von waldorf
Wenn ich per Formular eine E-Mail versenden möchte, erscheint
die Nachricht "Die Nachricht konnte nicht versandt werden, weil"/"es ist ein Fehler aufgetreten" (steht natürlich so im Script).
Eine Frage: Klappt die Mailfunktion bei euch? Falls ja, würde
ich dann mal das Script posten. -
in: "fopen" geht nicht
geschrieben von waldorf
Es soll zunächst im Fall, dass counter.txt nicht existiert, eine
solche Datei angelegt werden:
<?php $datei_name = "counter.txt"; if (!file_exists ($datei_name)) { $dz = fopen ($datei_name, "W"); fwrite ($dz, "1"); fclose ($dz); }?>
Schreibe das w für write bei fopen bitte mal klein, Konvention, die auch zu Fehlern führen kann....
BINGO! Das war die Lösung. "W" muss klein geschrieben werden.
Nun funktioniert es, hehe. Immer dieser Feinheiten.
Noch mal danke an alle und sorry für den Wirbel, den
ich gemacht habe... -
in: "fopen" geht nicht
geschrieben von waldorf
Poste doch Mal den Quellcode... Hast du zudem die Zugriffsrechte der Datei 'counter.txt' auf 0777 gesetzt? (Kannst du im Filemanager unter CHMOD machen). Schau dir doch auch einmal diese Seite hier an: http://de.php.net/fopen - dann kannst du überprüfen, ob du den Code richtig anwendest.
MfG
sebigisler
So, erst mal schönen Dank für die vielen Tipps.
Ich glaub, ich ahne, woran es scheitert.
Ich geb mal nen Auszug aus dem Skript wieder, und zwar wird
da mit Variablen gearbeitet (hab ich so übernommen, stammt nicht von mir:)
Es soll zunächst im Fall, dass counter.txt nicht existiert, eine
solche Datei angelegt werden:
<? $datei_name = "counter.txt"; if (!file_exists ($datei_name)) { $dz = fopen ($datei_name, "W"); fwrite ($dz, "1"); fclose ($dz); }?>
Es taucht in dem Skript aber gar keine Pfadangabe auf, ist das das Problem?
Beitrag geändert: 30.8.2008 11:18:12 von waldorf
Beitrag geändert: 30.8.2008 11:21:35 von waldorf
Beitrag geändert: 30.8.2008 11:24:08 von waldorf -
in: "fopen" geht nicht
geschrieben von waldorf
Hallo, ich bin blutiger Anfänger im Web-Programmieren und hab
gleich mal ne Frage:
Die Befehle "fopen", "fwrite" und "fclose" funktionieren nicht im
Skript der Datei "index.php".
Zugegriffen werden soll auf die Datei "counter.txt".
Beide Dateien habe ich per Filemanager hochgeladen.
Es wird dann die Meldung gezeigt:
"supplied argument is not a valid stream resource"
Es stimmt also was mit der Verzeichnisstruktur nicht.
Wie geht es richtig?