Aus gesundheitlichen Gründen kann ich diese Seite nicht weiterpflegen, aktualisieren oder euch Support für eure PHP-Probleme anbieten. PHP für dich bleibt aber in seiner aktuellen Form erhalten und funktioniert nach wie vor als Einstieg in die PHP-Welt - gerade, wenn dich technischere Anleitungen bisher immer davon abgehalten haben.
Mehr dazu...
Allgemein
FAQ
Hinweis: Aus gesundheitlichen Gründen kann ich leider bis auf weiteres keinen Support für eure Projekte leisten oder neue Fragen beantworten.Beantwortete Fragen
Allgemeines (52)
Allgemein: Zuerst einmal ganz herzlichen Dank für diese Anleitungen: Super!
Ich habe eine Frage zu Datenbanken und Benutzerlogin:
Ich habe eine LoginSeite erstellt und möchte nun von dieser - nach erfolgter Passwortprüfung - direkt weiter zu der Seite mit den Daten eben dieses Benutzers. Ich wollte da die URL übergeben, aber irgendetwas mache ich falsch, hier kommt eine Fehlermeldung.
Siehst du den Fehler??
$MM_redirectLoginSuccess = "aenderungsform.php?ID=<?php echo $row_Recordset1['ID']; ?>"
also konkret, möchte ich bei erfolgter Anmeldung gerade die Daten ins Aenderungsformular ausgefüllt bekommen, damit ich sie dann ändern kann.
Es sieht so aus, als würdest du einer Variable innerhalb eines PHP-Bereiches einen weiteren PHP-Bereich zuweisen. Wenn du Text mit einer Variable verknüpfen magst, musst du einfach nur beide Teile - also in deinem Fall "aenderungsform.php?ID=" und "$row_Recordset1['ID']" - mit einem Punkt trennen. Die Variable dabei nicht in Anführungszeichen setzen, nur den reinen Text.
vor langer ZeitAllgemein: Hallo Claudia!
Wie kann ich ein Formular innerhalb einer Seite, oder auch die ganze Seite,
drucken? Ist das per php Befehl möglich?
Bitte entschuldige, falls die Frage schlecht formuliert oder falsch gestellt ist,
bin noch php beginner...
von Simon
Nein, PHP kümmert sich nicht ums Drucken. Drucken wird beim Seiten-Besucher "ausgelöst", PHP wiederum arbeitet direkt am Server, wenn der Seiten-Besucher die PHP-Seite zu Gesicht bekommt ist die Arbeit von PHP schon getan. Drucken kannst du über JavaScript.
vor langer ZeitAllgemein: Hey Claudia,
ich hatte vor kurzem bei meinem Projekt die Idee anstelle der für allen sichtbaren GET-Variablen, welche ja in der URL mitgeliefert werden, POST-Variablen zu verwenden. Jetzt kann ich aber nicht immer einen Button dorthin bauen, möchte also das Formular per Link abschicken. Ist das mit einer einfachen Lösung möglich? Wenn ja, wie? Wenn nein, gibt es eine Alternative?
von Herry
Wenn du immer ein Formular hast, kannst du es auch per JavaScript und damit per Link absenden - mit den JavaScript-üblichen Nachteilen, dass du z. B. all jene aussperrst, die JavaScript deaktiviert haben. Du müsstest also für diejenigen eine Alternative zur Verfügung stellen.
vor langer ZeitAllgemein: Hallo, erstmal großes Lob und Danke für die tollen Erklärungen. Eine Frage bleibt bei mir aber noch offen: Ich habe mir das Tutorial angeschaut, indem erklärt wird, wie man Daten aus einem Formular in die Datenbank speichert.
Wie muss dazu das Formular aussehen bzw. die Anweisungen action="" und method="" aussehen?
von Marvin
action verweist auf die Datei, in der du die Datenbank-Eintragung vornimmst, das kann sowohl die Datei sein, in der sich auch das Formular befindet, oder eine eigenständige. Letzteres ist für den Anfang einfacher. Als method empfehle ich post; nähere Infos zu post contra get findest du unter <a href="http://www.schattenbaum.net/php/variable2.php">Variablen übergeben</a>.
vor langer ZeitAllgemein: Hallo!
Ich versuche über ein Formular Daten in eine Datenbank einzufügen. Alles nach Deiner Anleitung. Hier ist der Code:
<?php
include("db_georg_connect.php");
$url = $_POST['url"'];
$hpname = $_POST['hpname'];
$name = $_POST["name"];
$banner = $_POST["banner"];
$beschreibung = $_POST["beschreibung"];
?>
<?php
$eintrag = "INSERT INTO probe (url, urlname, name, banner, beschreibung) VALUES ('$url', '$hpname', '$name', '$banner', '$beschreibung')";
?>
<?php
$eintragen = mysql_query($eintrag);
?>
<html>
<head>
<title>probe</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="probe.php" method="post">
url<input type="text" name="url">
hpname<input type="text" name="hpname">
name<input type="text" name="name">
banner<input type="text" name="banner">
beschreibung<input type="text" name="beschreibung">
<input type="submit" name="senden" value="Abschicken">
</form>
</body>
</html>
So und jetzt die Fehlermeldung:
Notice: Undefined index: url" in C:\xampp\htdocs\probe.php on line 4
Notice: Undefined index: hpname in C:\xampp\htdocs\probe.php on line 5
Notice: Undefined index: name in C:\xampp\htdocs\probe.php on line 6
Notice: Undefined index: banner in C:\xampp\htdocs\probe.php on line 7
Notice: Undefined index: beschreibung in C:\xampp\htdocs\probe.php on line 8
Woran liegt´s? Kannst Du mir helfen?
von Georg
Solange dein Formular nicht abgeschickt ist, enthalten die Post-Variablen natürlich auch keine Werte; daher meckert PHP, weoö du diese nicht vorhandenen Werte übernehmen magst. Lösung wäre, vor dem Übernehmen der Post-Variablen mittels if zu überprüfen, ob überhaupt Post-Werte vorhanden sind.
PS: Die Post-Variable url hat ein gewisses Anführungszeichen-Chaos ;-)
vor langer ZeitAllgemein: Hallo,
folgendes Problem und ich komme einfach nicht weiter:
......
if($count==1)
{
echo"Diese eMail-Adresse ist bereits vorhanden.";
echo "<br /><a href='anmelden.php'> Zur&uuml;ck zum Formular </a>";
exit;
...........
Vorstehender Code wird ausgeführt damit eine Mail-Adresse nicht 2-mal eingetragen wird.Alles wunderbar, nur das, wenn die Bedingung erfüllt ist und abgebrochen wird, dann wird natürlich auch der restliche Code(HTML) nicht mehr ausgeführt.
Somit wird die Seite in diesem Fall ohne Footer angezeigt. Wie kann man das umgehen bzw. das der Rest angezeigt wird?
Vielen Dank
von Spongebob Programmierkopf
Kein exit zum Beenden, sondern eine ordentliche if-else-Bedingung, dann taucht auch der Seitenfuß auf.
vor langer ZeitAllgemein: Hallo Claudia,
erstmal möchte ich Dir sagen, dass Deine Seite absolut super ist! Alles ist so schön einfach und verständlich erklärt, es macht richtig Spaß die von Dir vorgegebenen Sachen auszuprobieren =)
Ich habe gerade erst mit dem PHP lernen angefange, habe deshalb eine rein theoretische Frage, die mich einfach schon lange interessiert hat: Es gibt doch so Pferdespiele mit PHP im Internet. Die Pferde werden mit ganz vielen verschiedenen Daten beschrieben, die sich andauernd ändern (Zum Beispiel das Alter oder was das Pferd kann, oder so). Da interessiert mich nun eigentlich ob all diese Daten in einer Datenbank gespeichert werden (was mir iwie unübersichtlich erscheint) oder wo man solche Daten sonst spechern könnte? Ich könnte natürlich auch die Betreiber selbst Fragen, allerdings habe ich festgestellt, dass die meisten entweder zu wenig Zeit haben oder zu arrogant sind um mir zu antworten oder ihre Spiele anscheinend nur mit dem Kopieren von fremden Scripten aufgebaut haben, denn wer mir nichtmal die Frage beantworten kann, wo seine daten gespeichert sind, der hat seine Seite auch definitiv nicht selbst aufgebaut... Also, viel Gerede um nix, eigentliche Frage: Wie sinnvoll ist es sehr viele verschiedene daten, die sich andauernd ändern in einer Datenbank zu speichern?
Liebe Grüße
Sehr sinnvoll, wenn nicht sogar der einzige sinnvolle Weg. Selbst <a href="http://de-de.facebook.com/" target="_blank">Facebook</a> - das ja noch um einiges mehr verschiedene Daten speichert als ein Browserspiel - hat alles in Datenbanken gespeichert. Datenbanken haben keine Probleme mit veränderbaren Daten; wichtig ist es aber immer, auf einen guten Aufbau der Datenbank zu achten - umso größer und umfangreicher das Projekt, umso mehr Energie sollte man in das Datenbankdesign stecken.
vor langer ZeitAllgemein: Hallihallo
ich arbeite an einem relativ großen Projekt und bin auf ein Problem gestoßen. Auf meiner Seite muss man sich einloggen um sichere Bereiche sehen zu können. Allerdings ist es erforderlich, dass bestimmte Scripts nur einmal zu einer gewissen <a href="http://www.schattenbaum.net/php/datum.php">Uhrzeit</a> ablaufen ... wie könnte ich das am besten anstellen?
von Herry
Ich vermute, mit Cronjobs solltest du zum Ziel kommen. Falls dein Hoster das nicht unterstützt, gibt es die Möglichkeit, so etwas über <a href="http://www.cronjob.de/">Cronjobs.de</a> zu lösen.
vor langer ZeitAllgemein: Hallo.
Ich habe mir in den letzten Wochen PHP und HTML angeeignet, um meinen Eigene-selbst-gemachte-Website-Traum zu verwirklichen. Jetzt stehe ich vor einem konzeptionellem Problem: Momentan sind meine ganzen Seiten noch in html-Dateien, was sich ändern wird, weil ich die Navigation in einer separaten Datei speichern will. Dazu möchte ich eine primitive Art Content Management System programmieren, sodass die Texte in einer MySQL Datenbank gespeichert und verändert werden können. Ist das sinnvoll? Oder ist es besser, die Texte in dem php-Dokument in einer Variable zu speichern und dann entsprechend zu ändern. Wichtig ist mir, dass die Seite für den Benutzer schnell geladen wird und dass ich es leicht mit meinen Daten auf meinem lokalem Rechner abgleichen kann. Was nun? Kann mich nicht entscheiden...
von Philipp
Wenn du die Daten lokal abgleichen möchtest, würde ich Includes für den Inhalt nehmen. Datenbanken bzw. ein CMS haben den Vorteil, dass du sie von überall ändern kannst; der Abgleich mit lokalen Daten ist dafür aber eher unpraktisch.
Die Ladezeiten sollten bei beiden Varianten ähnlich sein.
vor langer ZeitAllgemein: Hallo Frau Unkelbach, mit sehr großem Interesse arbeite ich Ihre Seiten durch und finde sie sehr hilfreich und eingentlich sehr verständlich. Trotzdem bekomme ich bei dem Thema "Formular" nicht das gewünschte Ergebnis. Konkret: Übergabe per Formular
Wenn ich das Beispiel auf meinem localen Server (XAMPP) laufen lasse, funktioniert es einwandfrei.
Wenn ich es aber auch dem Server von 1blu laufen lasse, erhalte ich folgenden Fehler:
"The requested URL /form2.php was not found on this server."
Daraufhin habe ich dieselbe Datei (form2.php) per include in eine andere Datei des selben Pfades eingebunden und dann konnte sie zumindest aufgerufen werden. Das bedeutet doch, dass der Pfad in dem Befehl <form action="form2.php" method="post"> korrekt ist. Aber warum wird die Datei dann nicht gefunden, wenn ich sie aus dem Formular heraus aufrufe?
Über eine Anwort würde ich mich sehr freuen, da ich mir schon vieel Stunden an diesem
Probelm die Zähne ausbeiße.
Vielen Dank.
von Thomas Ebbert
Das ist ein sehr seltsamer Fehler. Funktioniert es denn mit einer anderen Datei, die über das Formular aufgerufen wird, oder lassen sich gar keine Dateien über Formulare aufrufen? Ich habe aber offen gestanden keine Idee, woran das liegen könnte (abgesehen vom naheliegenden, dass die Datei tatsächlich nicht vorhanden ist, aber das ist ja getestet).
vor langer ZeitAllgemein: Wie bekomme ich PHP 4.0 auf mein compiuter?
was brauche ich dafür alles?
wie arbeite ich mit PHP?
das möchte ich gerne wissen da ich noch nie damit gearbeite habe
und ich eine eigene Hp für unser Internet radio herstellen möchte
von Mafiaboss
PHP ist schon sehr lang ein der Version 5 verfügbar, bist du dir sicher, dass du PHP 4.0 haben möchtest? Ansonsten schau dir mal <a href="http://www.apachefriends.org/de/xampp.html">XAMPP</a> an. Dort gibt es auch eine Anleitung, wie du das auf denen Computer bekommst und was du dafür brauchst. Was das arbeiten mit PHP anbelangt: Du schreibst Code in Dateien. Dieser wird dann beim Aufruf der Datei ausgeführt. Es ist auch möglich Formularinhalte zu übertragen, Dateien auf einen Server hochzuladen oder Grafiken (nichts Großartiges) zu erstellen.
Ich würde empfehlen, du fängst mal am <a href="http://www.schattenbaum.net/php/anfang.php">Anfang</a> an und arbeitest dich durch diese Seiten hier. Das gibt einen guten Einstieg in PHP und du entwickelst ein gewisses Gespür dafür, was machbar ist bzw. sein könnte. Später hilft dir dann die Funktionsübersicht auf php.net weiter.
PS: Ich weiß nicht, wie du dir die Homepage vorstellst, aber vielleicht reicht dir ja auch reines HTML aus?
vor langer ZeitAllgemein: Hallo Claudia,
Was habe ich hier falsch gemacht?
<?php
$planet = array(1=>"Mond", 2=>"Erde", 3=>"Mars", 4=>"Merkus", 5=>"Venus")
$zahl = mt_rand(1,5)
$zufall = $planet[$zahl]
echo "Das ist ein Zufallsplanet: "$zufall
?>
Bei mir zeigt er nur eine leere Seite an. Aber mein Server unterstützt PHP. Ich habe das mit dem PHPINFO ausprobiert.
Vielen Dank, Dominik.
von Dominik
Du schließt nichts mit einem Semikolon am Ende ab. Außerdem musst du beim echo den Textteil mit der Variable verbinden (entweder über Komma oder über Punkt) und natürlich ebenfalls mit Semikolon abschließen.
Normalerweise würde da ein parse_error kommen. Dass du nichts angezeigt bekommst liegt daran, dass dein Serverbetreiber die Fehlermeldungen abgeschaltet hat. Das hat meistens Sicherheitsgründe, ist aber zum Programmieren sehr schlecht. Du kannst probieren, sie am Anfang deiner Datei zu aktivieren (innerhalb der PHP-Anweisungen):
error_reporting(E_ALL);
ini_set('display_errors', 1);
Das musst du allerdings in jeder Datei machen (wenn du etwas Umfangreicheres zu programmieren planst, würde sich dann ein Include dieser zwei Zeilen anbieten) und du solltest es, wenn du mit der Programmierung fertig bist, aus den Dateien löschen.
vor langer ZeitAllgemein: Hallo,
ich habe ein Formularfeld in welches ein Link eingetragen werden soll. PHP verarbeitet diese Eingabe dann, gibt eine Vorschau in html aus und verschickt das Formular per Mail. Der Code wird allerdings von PHP umgemodelt.
Gibt es eine Möglichkeit, dass PHP merkt: Aha, ein Link, das gebe ich als normalen Text aus. So in etwa, wie wenn man bei HTML < code > setzt?
Vielen Dank
Uwe
von Uwe
Von sich aus wandelt PHP Texte nicht um. Aus deiner Frage geht leider nicht hervor, was genau passiert, da ist es etwas schwierig, das Problem einzukreisen.
Es klingt für mich aber danach, dass der Link in deiner Mail anklickbar ist und du ihn lieber nur als Text hättest? Falls ja, liegt das nicht an PHP, sondern an deinem Mailprogramm. Viele wandeln Web- und Mailadressen automatisch in anklickbare Links um. Das lässt sich vermutlich in den Einstellungen unterbinden, aber dann halt immer nur für dich.
Ansonsten, was gibst du denn in deiner Vorschau genau aus? Nur den puren Text, wie er aus dem Formularfeld kommt? Auch HTML-Code? Falls ja, hast du ihn umgewandelt, oder passiert das an der Stelle auch von selbst?
vor langer ZeitAllgemein: Hallo Claudia, könntest du mir eine MySQL Tabelle erstellen. Eine ganz einfache ich bin nämlich noch ziehmlich neu hier. Am besten so wie du das schon auf deiner Beschreibung gemacht hast;-). Wäre lieb...
Nein. Dieses Tutorial ist dafür da, dass du lernen kannst, so etwas selbst zu erstellen. Es geht hier nicht darum, PHP-Probleme zu lösen - dafür gibt es eigene Foren oder Programmierer -, sondern PHP zu erlernen. Wenn ich deine Tabelle erstelle, wird es dir nicht beim Lernen helfen, daher mache ich das auch nicht.
vor langer ZeitAllgemein: Hallo Claudia,
erstmal danke dir für deine Hilfe und Deine Zeit :)
Das erste Problem wäre damit gelöst.
Jetzt ist aber auch schon das 2. Problem da ... im Moment zwar eher ein "Verständnisproblem" aber gut ...
Ich möchte natürlich dass man neue Threads erstellen kann und wenn man sich andere Foren anschaut dann steht da meist "http://www.unsere-adresse.de/forum/index.php?thread=1", das wird ja dann per GET übermittelt ... reicht da eine Switch oder gibt es da noch etwas anderes? Ich bin es halt gewohnt für jede neue Seite eine neue Datei zu schreiben .... jetzt muss ich alle Threads über eine .php ausgeben lassen *lach*
PS: Deine Seite hat mir schon sehr oft sehr gut weiter geholfen und finde klasse dass du die gemacht hast denn dein Tutorial ist auf jeden Fall verständlicher und einfacher erklärt als manch andere *grins*
von Bianca
Eigentlich brauchst du da in diesem Fall gar keinen Switch, weil du ja die Thread-ID übergibst, die du dann wiederum benutzt, um in deiner DB nach dem passenden Foren-Thread zu suchen. Du wechselst also deine Suchanfrage "automatisch" je nach übermittelter Thread-ID.
Denke nur bitte daran, dass per get übermittelte Daten vom User verändert werden können.
vor langer ZeitAllgemein: Ich habe mal eine Frage,
ich habe mir eine Homepage erstellt "nur eine einfache" und ich soll bei einer Seite die Kontakte heißt ein paar Kontakte einschreiben mit ein paar namen und dann soll php anzeigen was ich so gemacht habe. aber ich weiß leider nicht wie man das so hinbekommt??:(.
Danke im Vorraus ;)
So leid es mir tut, aber ich verstehe nicht einmal ansatzweise, was du möchtest. Du kannst gerne versuchen, es noch einmal - evtl. anders - zu erklären. Ansonsten kann ich dir leider nicht helfen.
vor langer ZeitAllgemein: <?php
$result = mysql_query("SELECT * FROM Logindaten");
while($row = mysql_fetch_array($result))
{
echo $row->Name;
echo "<br />";
echo $row->Vorname;
echo "<br /><br />";
}
?>
Habe dies in eine Html-Datei geschrieben.
Als Ergebnis erhalte ich :
Name; echo "
"; echo $row->Vorname; echo "
"; } ?>
Was mache ich falsch, was habe ich falsch eingegeben?
von Horst Försch
Auch in diesem Fall kann ich nur sagen: PHP in HTML-Dateien funktioniert nicht. Der Server verarbeitet PHP-Code nur, wenn er auch in einer PHP-Datei steht.
vor langer ZeitAllgemein: Hallihallo, erstmal Danke für diese tolle Seite !
Ich bin absoluter Anfänger und will erstmal nur eine einzige Information vom Benutzer in meiner Datenbank speichern. Das will mir aber einfach nicht gelingen.
Ich habe folgenden Code in einem html-Dokument verfasst:
<form
action = "Testlauf.html"
method = "post">
<label>
Name:
<textarea name = "Benutzername" rows = "1" cols = "20">
</textarea></label>
<input
type = "submit"
value = "Speichern"/>
</form>
<?php
$_POST["Benutzername"] = $Eingabe;
mysql_connect("localhost", "root", "passwort");
mysql_select_db("versuch");
mysql_query("INSERT INTO versuch (Name) VALUES ($Eingabe)");
?>
Ich kann einfach keinen Eintrag in meiner Datenbank finden, nachdem ich ins Formular etwas eingegeben habe und auf "Speichern" gegangen bin.
Meine Datenbank heißt "versuch" und die Tabelle darin auch. Ich arbeite mit xampp, falls das irgendwie wichtig sein sollte. Ich bin völlig verzweifelt...
von Florian
PHP wird in HTML-Dateien nicht ausgeführt. Du brauchst eine PHP-Datei.
vor langer ZeitAllgemein: Hallo ich habe leider ein PHP Problem und verzweifel grade. Meine Hompage baut auf Scripte auf von einer anderen Page bzw. Server. Sind diese nicht vorhanden sieht die hompage fürchterlich aus, deswegen habe ich in HTML sowas wie eine alternative kleine Page mit Bildern gepostet, in diesem Fall ServerDown.php
Jetzt will ich per PHP in die INDEX.HTML meiner Hompage eine IF ELSE Bedingung einfügen mit header bzw. include was aber absolut nicht funkionieren will egal wie ich es anpacke.
Also eine überprüfung einer Seite (ob seite online ist), IF Seite offline dann rufe bitte Datei ServerDown.php auf, ELSE Script stoppen und den Rest der Datei INDEX.HTML abarbeiten.
Ich habe auf das Script hier von MATT aus dem Forum zurückgegriffen :http://www.webmasterwork.com/page/index.php?page=Thread&postID=225469&s=6c9710cc645dca96856d3f72c100b73a612232d9#post225469
Aber ich kann machen was ich will die weiterleitung funktioniert nicht, er lädt trotzdem die Homepage und landet im Nirvana.
Für Hilfe wäre ich dankbar.
von Stefan
Ich kann es nur immer wieder sagen: PHP in einer HTML-Datei funktioniert nicht! Server parsen Dateien mit der Endung .html nicht, der PHP-Code <b>kann</b> also gar nicht ausgeführt werden. Wenn du PHP-Code ausführen möchtest, musst du eine PHP-Datei verwenden.
vor langer ZeitAllgemein: So noch eine Letzte Frage.... Danach ist das Projekt abgeschlossen ;)
Ich benutze aus dem Dreamwaver Widget Browser ein Text editor.
Jetzt hab ich folgendes Problem, wenn ich einen text sende so speichert der diesen in <p></p> ab und macht danach ein Zeilenwechsel im HTML Dokument. Mit den Funktionen stripslashes($text); und nl2br($text); konnte ich den rest schon beheben allerdings weiß ich jetzt nicht weiter... Die <p> elemente könnte ich ja mit preg_replace() entfernen wenn ich den text mit den elementen ausgeben könnte... nur wie? und wie die leerzeilen im HTML Dokument entfernen
von Marcel
Ich weiß nicht, ob es nicht besser gewesen wäre, erstmal ordentlich PHP zu lernen, bevor du dich mit solchen Projekten beschäftigst. Dafür ist diese Seite auch eigentlich gedacht und nicht zur unentgeltlichen Lösung deiner projektspezifischen Probleme.
Ich kann dir in diesem Fall auch nicht weiter helfen. Weder weiß ich, was dieser Widget Browser tatsächlich ausgibt, was man wie erhält, noch sonst etwas. Ich kann dir nur den allgemeinen Tipp geben: Wenn du nicht das an Daten zur Verfügung hast, was du verwenden kannst, musst du schauen, ob du an einer anderen Stelle etwas tun/verändern kannst. Viel Erfolg dabei.
vor langer ZeitAllgemein: Hallo,
bin "beinahe" ganz begeistert von Deiner Seite.
Begeistert, weil diese Seite wirklich viel wirklich einafch erklärt.
Beinahe, weil manches einfach nicht funktionieren will. Und ich auch nach halbstündiger Suche im Netz keine Antwort finde. Das frustet.
So bekomme ich keinen Zeilenvorschub hin: echo "C:\\Windoofs\n"; in einer php-Datei funktioniert eben nicht - in keiner Kombination.
Und auch die Ausgabe von php aus einer HTML-Datei funktioniert nicht. Dein Beispiel: http://www.schattenbaum.net/php/echo.php habe ich direkt in eine Textdatei in htdocs kopiert und in *.html umbenannt.
Ich arbeite mit xampp.
Trotzdem erstmal danke!
Zum Zeilenumbruch: Ein mit \n erzeugter Zeilenumbruch entsteht im Quelltext der Datei. Wenn du also <i>echo "ABC\nDEF";</i> schreibst, steht danach im Quelltext der geparseden Seite (also wenn du die Seite im Browser aufrufst und dir dann den Quelltext anzeigen lässt):
ABC
DEF
Im Browser sieht man diesen Zeilenumbruch aber nicht, da der Browser Zeilenumbrüche nur dann anzeigt, wenn sie in HTML geschrieben sind, also mit einem <br> (oder <br /> wenn du XHTML verwendest). Im <a href="http://www.amazon.de/dp/383915409X?tag=schattenbaum">Buch</a> ist das etwas ausführlicher erklärt als hier.
Zur HTML-Datei: PHP in einer HTML-Datei wird im Normalfall auch nicht funktionieren können. Das liegt daran, dass Server so konfiguriert sind, dass sie HTML-Dateien nicht parsen, also gar nicht erst probieren, ob PHP-Code vorhanden ist, den sie ausführen könnten. Man kann das bei lokalen Webservern (wie xampp) umstellen, so dass auch HTML-Dateien geparsed werden, aber sinnvoller ist es, von Anfang an, *.php-Dateien zu erstellen, wenn man in der Datei PHP verwenden möchte. Das ist zum einen ordentlicher und zum anderen später auch problemlos anderswo einsetzbar.
vor langer ZeitAllgemein: Hallo claudia, bin blutiger anfänger in sachen php...arbeite mich langsam durch dein script...bin aber schon am anfang stecken geblieben...habe das in meine seite eingebaut:
<form action="form2.php" method="post">
<input type="text" size="17" name="Inhalt">
<input type="submit" value="OK">
</form>
<br /><br />
<?php
echo $_POST["Inhalt"];
?>
<br /><br />
als Fehlermeldung bekomme ich dann: Objekt nicht gefunden!
was mache ich falsch?
Gruß
frank
von franky
Abgesehen davon, dass die Ausgabe der Formulardaten nur auf der Seite erfolgen kann, die vom Formular auch aufgerufen wird (also das was bei action steht - form2.php in dem Fall), eigentlich nichts. Ich vermute, dass daher auch die Fehlermeldung kommt.
Allerdings überrascht mich die Fehlermeldung an sich. Womit rufst du das denn auf?
vor langer ZeitAllgemein: So, Ich habe mir dank dieser seite komplett php beibringen können... anfangs arbeitete ich mit url_include um den text zu ändern was jedoch bei Strato nicht geh(oberer link).
Also programmierte ich alles um! Jetzt habe ich ein Kontaktformular erstellt und es mittels post übergeben. Das ergebniss: es funktioniert nicht!
Könnt ihr mir bitte sagen was mein fehler ist? quelltexte sind orginal von dieser seite übernommen und nur ergänzt für eigene zwecke..
von Marcel
Ich habe mal deinen Link entfernt...
Nur mit diesen Angaben kann ich unmöglich sagen, wo dein Problem ist. Ich weiß ja nicht einmal, wohin du es übergibst? Mail, Datenbank, Datei? Ich weiß auch nicht, was du ergänzt hast, etc. So kann ich dir also leider nicht helfen.
vor langer ZeitAllgemein: Hallo Claudia,
erstmal vielen Dank für die Seite! Ich bin ein Frischling in Sachen PHP und bin unheimlich froh „Dich“ gefunden zu haben.
Ich habe folgendes Problem:
Ich möchte auf einem Linux Server per PHP auf eine Access Datenbank zuzugreifen (Lesen, Schreiben, ect.). Ja, ich weiß ich könnte meine Access Datenbank in eine MySql Datenbank umwandeln, aber die Aufgabenstellung lautet wie beschrieben. Ist das denn überhaupt möglich? Und wenn ja, kannst Du mir sagen wie ich das machen könnte?
Vielen Dank im Voraus
Gruß Alessia
von Alessia
Ja, möglich ist das. Es gibt eine <a href="http://de2.php.net/manual/de/ref.uodbc.php">ODBC</a>-Unterstützung von PHP, mit der Access-Datenbanken ansprechbar sind. Ich habe allerdings noch nie damit gearbeitet und kann dir leider keine weiteren Tipps geben.
vor langer ZeitAllgemein: Hallo, Guten Tag Claudia,
2 Fragen:
1. Du hattest einem Leser, der die Struktur seiner Startseite ändern wollte, den Tipp gegeben, es mit catalog >>ext >>960gs >>960_24_col.css zu versuchen. Mit container_24.grid_4 für die Boxenseite (ich habe sie etwas verbreitert) und container_24.grid._16 für die ganze bodyseite gelingen auch Änderungen. Allerdings mit Einschränkungen. Der Mittelteil der bodyseite ist nur mit relativen width-Angaben in % programmiert. Ändere ich die Breite der Boxen, so müßte ich die width-Angaben des Mittelteils auch in absolut-Angaben eingeben können, damit der Body nicht über den Header hinausreicht. Wooo???
2. Die Lage (links - rechts) der Boxen definiert man in >>module >>boxes. So weit funktioniert es auch. Ich habe unter Kategorien für die Produkte Unterstrukturen angelegt. Klicke ich diese Produkte dann an, so saust meine ganze linke Boxenseite, die im Startmenü sauber links steht, nach rechts und ist dort mit einer anderen Breite zu sehen.
Was habe ich falsch gemacht???
Vielen Dank im vorhinein
Peter
Ich habe leider keine Ahnung, wovon du sprichst. Das klingt alles mehr nach CSS als PHP und außerdem nach einem CMS/Shopsystem? Wenn dem so ist, wende dich doch bitte an denjenigen, der es programmiert hat oder ein eventuelles Supportforum.
vor langer ZeitAllgemein: Hallo du!
Kannst du vielleicht einmal näher auf diese Cronjobs eingehen? Scheint sehr interessant aber auch auch kompliziert zu sein.
von Tom
Ich habe selber noch nichts mit Cronjobs gemacht, normalerweise verwendet man sie aber, um regelmäßig zu einer bestimmten Uhrzeit/an einem bestimmten Tag eine Aufgabe ausführen zu lassen. Ein klassisches Beispiel dafür ist die Erstellung von Webseiten-Statistiken, die täglich um 0 Uhr durchgeführt wird.
Durchgeführt wird das, indem durch den Cronjob zu der vorher definierten Uhrzeit ein bestimmtes Script (eine bestimmte PHP-Datei) aufgerufen wird. Der Abruf ist dabei ähnlich zu einem Aufruf durch einen normalen Browser/User, wobei aber z. B. Flash, JavaScript, HTML-Ausgaben, Cookies etc. nicht aufgerufen/ausgeführt werden.
Du kannst also mehr oder weniger alles, was du mit PHP umsetzen kannst, zeitgesteuert ausführen lassen - wie kompliziert das dann ist hängt ausschließlich davon ab, was du damit durchführen lassen magst.
vor langer ZeitAllgemein: Hallo Claudia,
erst einmal vielen Dank für die Möglichkeit Fragen zu stellen.
Mein Problem: Ich habe eine Webseite als Template gekauft. Das Kontaktformular (Contact.html) enthält eine Interaktion zu einem Contact.php Skript. Normaler Weise braucht man nur die Variable $Yourmail zu modifizieren und dann sollte alles funktionieren.
Normalerweise .....!
Es passiert folgendes: Die Mail wird über das Kontaktformullar versendet. Die Mitteilung "Nachricht versendt" wird auch ausgegeben. Allerdings kommt diese Nachricht nicht an meiner angegebenen Empfängeradresse an !
Ich weiß mittlerweile wirklich nicht mehr wo der Fehler liegen kann.
Würdest Du mal auf die beiden Dateien einen Blick werfen können ?
Vielen Dank vorab,
Gunnar
von Gunnar Drenkelfort
Normalerweise würde ich sagen: Wende dich bitte an denjenigen, bei dem du das Template gekauft hast; er ist für den Support zuständig.
In dem Fall schicke es mir aber, ich schaue mal drüber.
vor langer ZeitAllgemein: <a href="http://schattenbaum.net/php/variable.php">Hier</a> ist dir ein Fehler unterlaufen.
Dort steht <?php echo "$anton$uhrzeit$wien$uhrzeit $ankommen"; ?>, allerdings müsste es doch echo "$anton.$uhrzeit.$wien.$uhrzeit." ".$ankommen"; heißen ?
Bei mir gibt deine Version eine Fehlermeldung aus.
Solange alles in Anführungszeichen steht, funktioniert es so, wie bei mir angegeben. Probleme tauchen auf, wenn man nicht den kompletten "Text" (also Variablen und Leerzeichen) in Anführungszeichen setzt. Dann muss man tatsächliche alle Variablen mit Punkten voneinander trennen.
Ich habe allerdings wegen der Vollständigkeit jetzt noch die Verbindung von Variablen mittels Punkt aufgenommen.
vor langer ZeitAllgemein: Hallo Claudia, erstmal eine sehr tolle und super besuchte Seite hier. Ich habe mir auf der Suche nach dem richtigen Header für die mail() Funktion zum HTML E-mails schicken folgenden Code kopiert:
<?php
$extra = "From: $sender <$sendermail>\n";
$extra .= "Content-Type: text/html\n
Content-Transfer-Encoding: 8bit\n";
mail($empfaenger, $betreff, $text, $extra);
?>
Leider wurde nie eine E-mail verschickt.
Dann habe ich folgendes geändert: Den von hier kopierte Code
$extra .= "Content-Type: text/html\n in $extra .= "Content-Type:text/html\n (also das Leerzeichen weg) und es hat super geklappt. Sorry, dass ich das FAQ hierfür benutze aber wäre sehr froh wenn dieser Codeschnipsel geändert werden würde, damit es anderen nicht so geht wie mir.
von WICHTIGER HINWEIS für dummen Fehler
Das Leerzeichen zwischen "Content-Type:" und "text/html" ist kein Problem (es funktioniert aber auch ohne).
Problematisch ist es allerdings tatsächlich, wenn man den Code direkt von der Seite kopiert, da ich wegen der besseren Übersichtlichkeit einen Zeilenumbruch eingefügt habe, der dann aber dazu führt, dass nur der erste Teil der Anweisung in den Header übernommen wird. Ich werde das also dahin gehend ändern, dass man es zukünftig auch kopieren kann.
vor langer ZeitAllgemein: Hey Claudia,
ich habe vor Kurzem ein "News-"Script geschrieben, welches wenn man auf eine der Nachrichten klickt nur sie angezeigt wird.
So das Problem ist, ich hab mitgekrigt das man mit SQL Injection solche sachen leicht "hacken" kann und wollte dich an dieser Stelle Fragen ob du gute Ratschläge für einen anfänger hast wie man sich davor Schützen kann.
Ich freue mich schon auf deine Antwort ;).
Liebe Grüße
von Rambo
Ratschläge direkt nicht, aber ich will dir die Seite von <a href="http://www.danielfett.de/internet-und-opensource,artikel,web-sicherheit">Daniel Fett</a> ans Herz legen, der sich ausfürhlch mit diesem Thema beschäftigt hat.
vor langer ZeitAllgemein: Sry,hab noch was vergessen :P
Vor bspw. WHILE-schleifen, muss man die Variabeln ja initialisieren.
Kann ich da genauso vorgehen wie bei der IF-auswahl, damit es später im formular ausgegeben wird ?
sprich bspw. : $Anfang =$_POST["Wiederbeschaffungswert"];
$Laufzeit=$_POST["Laufzeit"] ;
LG
von N1899
Probier es doch einfach aus. Das geht wesentlich schneller als die Frage zu stellen und auf Antwort zu warten und du hast auch um einiges mehr davon, weil selbst erarbeitetes Wissen immer tiefer verankert ist als angelesenes.
vor langer ZeitAllgemein: Das ufert hier ja aus vor lauter technischen Fragen....ist das nicht langsam nervig? ;-)
Manchmal ;-)
Wenn sehr viele Fragen in sehr kurzer Zeit kommen, oder wenn Dinge gefragt werden, die ziemlich offensichtlich eigentlich "Arbeit" anderer sind (z.B. Hausaufgaben) oder professionelle PHP-Projekte betreffen.
vor langer ZeitAllgemein: Hey.. Ich hätte eine Frage. Wär es möglich ein Tutorial über die Sessions zu machen und wie man sie einsetzt? Ich denke die meisten könnten das Gebrauchen, weil fast jede Website jetzt schon ein Loginforumular besitzt. Gruss
von Chris
Ja, ist möglich, ich weiß nur nicht wann. Im Buch gibt es allerdings schon ein Sessions-Kapitel, ich muss also nur ein, zwei Stunden Zeit finden.
vor langer ZeitAllgemein: hey ich hätte da mal ne frage und zwar,
wie könnte man eine seite konstruieren, bei der man sich wie bei allen gängigen social networks zB registrieren muss, diese Daten, dann bei mir als Email landen und wie kann ich dann so User erstellen, mit denen man sich dann auf meiner Seite Einloggen kann.
mfg Herry
von Herry
Die genaue Erklärung ist derart umfangreich, dass ich das nur kurz zusammenfassen möchte: Du brauchst eine Datenbank, musst dort Daten hineinschreiben und wieder abfragen können. Zusätzlich benötigst du mindestens if-Abfragen für die Zugriffsberechtigungen (Login) und natürlich die Mailfunktion.
Alles in allem kann man sagen, dass du, wenn du mit allen PHP- und MySQL-Erklärungen auf dieser Seite zurecht kommst, in der Lage sein müsstest, so etwas zu programmieren und dann auch selbst herausfinden wirst, wie das genau funktioniert.
vor langer ZeitAllgemein: Huhuuu...
kurze frage kurze antwort :o)
Wie kann ich php innerhalb xampp aktualiesieren ?
Soll ich am besten xampp dann neu installieren ?
von Juergen Hauser
Ja, eine Xampp Neuinstallation erscheint mir da am Einfachsten. Vergiss aber nicht, deine Datenbanken und deine Daten (sollten die Ordner mysql und htdocs sein) zu sichern.
vor langer ZeitAllgemein: Ich habe schon vor Wochen eine Frage gestellt, warum kommt da keine Antwort?
Möglicherweise hatte ich bisher keine Zeit, oder mir fällt keine Antwort ein, oder sie ist so kompliziert/lang, dass ich mir dafür mehr Zeit nehmen müsste, als ich zur Zeit habe. Oder... ich habe die gelöscht *hust*
Das Spamaufkommen ist zur Zeit so stark, dass ich jeden Tag Unmengen von Spam löschen muss und es mir dabei schon mal passiert ist, dass ich auch richtige Fragen gelöscht habe. Tut mir leid, das war dann keine Absicht.
Du kannst deine Frage also gerne einfach noch mal stellen, wenn du denkst, dass die Antwort schon zu lange auf sich warten lässt. Eine (sofortige) Antwort kann ich aber trotzdem nicht garantieren.
vor langer ZeitAllgemein: Hallo, Ich versuche, joomla1.5 zu installieren und hänge nun beim php / mysql.
FTP habe ich erfolgreich eingerichtet und unter kilu.de auch meine datenbank. mein problem ist, ich weiß die zugangsdaten für phpmyadmin nicht mehr und ich bekomme stets die fehlermeldung: #1045.
was sollte ich am besten tun, damit ich weiter machen kann?
Grüße WDoddlew
von WDoddlew
Für Fragen zu bestimmten Programmen/Paketen wende dich bitte an den Anbieter/Programmierer oder eine dazugehörige Community.
vor langer ZeitAllgemein: Hallo Claudia,
ich habe Dein "JavaScript - Flip-Container - Einklappen/Ausklappen von Inhalten" endeckt- DAS ist genial!
Nur, kann man, wenn man mehrere Flip-Container hat, es so gestalten, dass sich der offene schliesst, sobald ein anderer angeklickt wird?
Danke & Gruß
von Maria
Hallo Maria, ich fürchte, du bist hier falsch. Mit JavaScript habe ich so gar nichts am Hut. Daher vermute ich, dass das Script von jemand anderem kam. Ich kann dir also leider auch nicht weiter helfen.
vor langer ZeitAllgemein: Hi Claudia, ich war schon vor paar Jahren mal auf deiner Seite und sie hat mir immer sehr geholfen :). Da es die Seite ja schon eine Weile gibt, würde mich interessieren, ob alles noch aktuell ist. PHP4 gilt ja z.B. mittlerweile als veraltet. Ist alles hier php5 kompatibel oder kann es sein, dass da auch noch 'altes' php dazwischen ist?
Ich bemühe mich, alles im Laufe der Zeit anzupassen und auch schon im Hinblick auf PHP 6 zu verbessern, aber es kann natürlich immer passieren, dass noch etwas Altes dazwischen rutscht.
vor langer ZeitAllgemein: Hallo Claudia, ich würde mich freuen wenn du mal ein Tutorial über Klassen und Constructor machen könntest. Am besten schnell. Habe bald eine Prüfung :)
Schnell sicher nicht. Und eher sogar gar nicht. Das hier ist ein Anfängertutorial, es soll auf den ersten Schritten begleiten und nicht zum PHP-Guru ausbilden. Abgesehen davon habe ich von Constructor keine Ahnung.
vor langer ZeitAllgemein: hey danke für die Seite.
Sag mal kennst du dich auch mit Volltextsuche für MySQL aus?
Ich bin auf der Suche nach dem schnellsten Suchalgorithmus was Strings betrifft, die
irgendwo in der Spalte mal vorkommen..
Wär schön wenn ich dein interesse geweckt hätte:)
von phoenix
Nein, sorry. Nicht vergessen: Das hier ist für Anfänger, nicht für Vollblut-Programmierer :)
vor langer ZeitAllgemein: Wie kann man die Seite mit php Sichern. Erfahrende Benutzer würden Bei einfachen if-abfragen den Quelltext anschauen und dann hetten sie freien zugrif.
Das Thema Sicherheit lässt sich nicht in wenigen Sätzen klären und ich bin auch der Meinung, dass ich dafür nicht der geeignete Ansprechpartner bin - das geht sehr viel weiter als ein Anfängertutorial.
Zu deiner Überlegung mit der If-Abfrage und dem Quelltext, möchte ich allerdings eines sagen: Hast du dir schon mal den Quelltext einer PHP-Datei angeschaut? Oder durchgelesen, was in meiner <a href="http://www.schattenbaum.net/php/anfang.php">PHP-Einführung</a> steht? Man kann den Quelltext einer PHP-Datei nicht über den Browser aufrufen, dazu müsste man Zugriff auf die ungeparsede Datei haben (also zB via FTP).
vor langer ZeitAllgemein: Hallo Claudia,
kannst du mir bitte sagen wie ich einen bearbeiten Button erstelle?
Naja, einen Button entweder durch ein Formular oder als Link. Beides muss dann auf eine Seite führen, in der das, was du bearbeiten willst, bearbeitet werden kann.
vor langer ZeitAllgemein: Hallo Claudia!
ich bin gerade wieder einmal dabei einen Anlauf zu machen und mich endlich ein bisserl in PHP (und MySQL) einzuarbeiten. Ich habs schon mehrfach versucht bin aber immer daran gescheitert, dass die mir zur Verfügung stehende Literatur ca. ab Seite 20 beginnt, mit Fachterimini herum zu werfen... und ich dann irgendwann ausgestiegen bin.
Aber eigentlich will ich das ja seit Jahren schon lernen (HTML ist ja auch gegangen und mit Datenbanken kenn ich mich ja auch aus) Ich arbeite mit Joomla und würd manchmal einfach gerne etwas selbst dazu programmieren können und vielleicht gelingt es mir ja mit deiner (Buch)Hilfe :-)
Ich wollte mir jetzt dein Buch bestellen aber Amazon hat keines mehr auf Lager.
Hast du noch eines?
Herzliche Grüße aus Wien,
Elisabeth
von Elisabeth Bolius
Du kannst ganz einfach bei Amazon bestellen, die brauchen immer ein paar Tage bis sie es verfügbar haben, da es ein Book on Demand ist, also erst bei Bestellung gedruckt wird. Im Normalfall dauert es ca. 4 bis 7 Tagen.
Viel Erfolg für deinen Programmiereinstieg!
vor langer ZeitAllgemein: Hey, ich habe mir dein PHP-Tutorial durchgelesen. Da du ja nur die "Grundlagen" behandelst, such ich nach einem anderen Tutorial. Leider sind die meisten nicht gerade verständlich.
Kennst du irgendwelche weiteren, die man verständlich verstehen kann?
Nein, tut mir leid.
vor langer ZeitAllgemein: Was heißt PHP?
PHP: Hypertext Preprocessor - man nennt das ein rekursives Akronym, weil die Abkürzung selbst auch in der Langfassung enthalten ist. Ursprünglich hieß es mal Personal Home Page Tool.
vor langer ZeitAllgemein: Wie erstelle ich eine PHP-Datei?
Du öffnest einen Texteditor und schreibst deinen PHP-Code hinein. Das ganze speicherst du dann mit der Endung .php ab.
vor langer ZeitAllgemein: Wie kann ich in PHP die Schriftart oder -farbe ändern, ein Hintergrundbild einrichten etc.?
Gar nicht. PHP hat absolut keine Einfluss auf die Formatierung der ausgegebenen Daten, es liefert immer nur reinen Text. Zum Formatieren brauchst du auf jeden Fall HTML oder CSS!
Daher also ruhig großräumiger nach einem Fehler suchen, wenn eine Suche in der angegebenen Fehlerzeile nichts bringt.
vor langer ZeitAllgemein: Ich bekomme einen parse_error in Zeile xy angezeigt, aber da ist ganz sicher kein Fehler!
Wenn sich der Fehler bei einem parse_error partout nicht finden lässt, kann es manchmal hilfreich sein, die Zeilen darüber ebenfalls genau zu betrachten. Fehlt zB eine Anführungszeichen oder ein Semikolon, kann es durchaus passieren, dass dieser Fehler erst Zeilen weiter unten wirklich ins Gewicht fällt bzw. PHP auffällt.
vor langer ZeitAllgemein: Ich möchte PHP und HTML in einer Datei verwenden. Geht das denn?
PHP und HTML lassen sich wunderbar miteinander kombinieren und absolut problemlos in der selben Datei anwenden. Man sollte dabei allerdings bedenken, dass die Datei unbedingt die Endung .php haben muss (sonst funktioniert der PHP-Code einfach nicht) und das man HTML-Teile entweder außerhalb des PHP-Codes (also erst nach einem ?>) schreiben sollte (danach bitte nicht vergessen, PHP wieder einzuleiten, wenn man es verwenden mag) oder man sämtlichen HTML-Code mit echo ausgeben muss und dann an die Maskierung von Anführungszeichen denken muss.
Ich schreibe HTML meistens außerhalb von "PHP-Gebieten", außer es ist nur kurzer Text etc.
vor langer ZeitAllgemein: Brauche ich DSL, um PHP nutzen zu können?
Nein, brauchst du nicht. Dennoch ist es natürlich ganz allgemein schöner, wenn man Daten schnell hochladen kann und die Seiten rasch geladen werden. Vielleicht gibt es ja bei dir sogar die Möglichkeit zu einem <a href="http://www.sueddeutsche.de/thema/Breitbandanschluss" class="aba">Breitbandanschluss</a> .
vor langer ZeitAllgemein: Wie mache ich eine Info zum Ausklappen?
Mit PHP gar nicht. PHP wird serverseitig ausgeführt; sobald der Benutzer etwas zu sehen bekommt, ist PHP eigentlich schon fertig mit der Arbeit. Du musst dafür JavaScript benutzen. Wenn du die Informationen erst nachträglich abrufen möchtest, benötigst du AJAX (welches dann wiederum auf eine PHP-Seite zugreifen könnte, die die Informationen bereitstellt).
Wie das aussehen kann, siehst du auf dieser Seite für <a href="http://www.gottesdienste-giessen.de" target="_blank">Gottesdienste in und um Gießen</a>.
vor langer ZeitPHP (61)
PHP: hallo!
Danke für die gute Seite und vor allem für die Möglichkeit, Fragen zu stellen!
Und ich habe gleich eine ... (war klar, nicht?):
Ich suche eine Möglichkeit, beim Anhängen an eine Datei mit fWrite die letzten (sagen wir) 10 Zeichen zu überschreiben. Die Datei hat variable Länge, und die Funktion zum Positionieren des Dateizeigers von EOF aus scheint es nicht mehr zu geben.
Hintergrund:
Das Ganze wird ein sehr minimalistischer Blog.
Die Inhalte werden in eine Datei geschrieben, und diese Datei wird mit include ausgegeben, in einem scrollbaren Bereich. Die Sortierung soll chronologisch sein, daher mit fwrite r+ anhängen - nur muss dann eben die Anzeige auf das Dateiende focussieren.
Was an sich einfach wäre, mit einer Sprungmarke.
Nur, eben diese Sprungmarke muss ja 'mitwandern', wenn Text angehängt wird ...
Und daran scheitere ich grad
von der Uli
Dateizeiger ganz am Ende reicht dir nicht? Ich mache quasi nie was mit Dateifunktionen, daher bin ich da nicht so fit. Ich könnte mir aber gerade eine Lösung über die Stringfunktionen vorstellen... die komplette Datei in eine Variable auslesen, über <a href="http://www.php.net/manual/en/function.strlen.php">strlen</a> die Länge des Textes auswerten, mit <a href="http://www.php.net/manual/en/function.substr.php">substr</a> alles außer die letzten 10 Zeichen auslesen lassen und dann deinen zusätzlichen Text anhängen. Zum Schluss den neuen Text komplett in deine Datei schreiben.
vor langer ZeitPHP: Hallo!
Vielen Dank erstmal für diese schöne Seite. Sie hat mir sehr geholfen.
Ich habe allerdings ein Problem, dass ich zur Zeit nicht lösen kann.
Ich habe bisher wenig mit arrays gearbeitet und vieles ist mir daher noch nicht ganz schlüssig. Ich programmiere gerade eine Facebook app in der ich Daten auslesen möchte. Diese werden in folgender Form vom wiedergegeben:
Array
(
[id] => blbadsf
[name] => asdfasdf
[email] => tasf@adsfasdf.de
[events] => Array
(
[data] => Array
(
[0] => Array
(
[name] => Geburtstagsparty
[start_time] => 2013-06-21T22:00:00+0200
[timezone] => Europe/Berlin
[location] => asdfasdf
[id] => 322135641
[rsvp_status] => attending
)
[1] => Array
(
[name] => adsfsadfasdf
[start_time] => 2013-05-04T21:00:00+0200
[end_time] => 2013-05-05T04:00:00+0200
[timezone] => Europe/Berlin
[location] => aadsfasdfasdf
[id] => 13613216164161
[rsvp_status] => attending
)
)
[paging] => Array
(
[previous] => https://graph.facebook.com/100002820231099/events?limit=25&since=1371844800&__paging_token=586891944661821&__previous=1
[next] => https://graph.facebook.com/100002820231099/events?limit=25&until=1365879600&__paging_token=527392493965728
)
)
)
Ich kann mir zum Beispiel mit $data[name] meinen namen auslesen (zweite Zeile).
Aber wie komme ich an die Daten der Events heran?
Ich hätte gedacht: $data[events][data][0] oder so ähnlich?! Aber leider funktioniert das nicht so richtig. Wo liegt der Trick?
Ich fänds super wenn ihr mir helfen würdet!!!
Vielen Vielen Dank ! =)
von Thomas
Die Lösung mit $data[events][data][0] ist schon richtig. Ich würde die Namen der Unterarrays noch in Anführungszeichen setzen, aber wenn es auch beim Namen ohne Anführungszeichen klappt, scheint PHP da nicht so pingelig zu sein.
So verschachtelte (eigentlich mehrdimensionale) Arrays sind aber immer ein bisschen umständlich. Ich kann nur empfehlen, jede Ebene ausgeben zu lassen (über print_r). Dann sieht man immer Schritt für Schritt wie es weiter geht und auch, wo es dann eventuell nicht mehr weiter geht.
vor langer ZeitPHP: Guten Abend Frau Dunkelbach, ich hoffe Sie können mir weiterhelfen.
Ich betreibe eine private Wetterstation. Nun möchte ich in ein bestehendes Panoramabild oder Banner (in jpg oder png) die aktuellen Wetterdaten (werden alle 15 Minuten neu eingelesen) einfügen. Diese Wetterdaten sind als Textfile vorhanden und werden auf den Server hochgeladen. Können Sie mir dazu ein kurzes Beispiel geben - wie ich dies (Anfänger) hinbekomme.
Hoffe ich habe mich verständlich ausgedrückt.
DANKE - und schöne Grüße Klaus
von Klaus
Als reiner Anfänger könnte das schwierig werden. Sie werden Kenntnisse über das <a href="http://www.schattenbaum.net/php/datei.php">Arbeiten mit Dateien</a> benötigen, um die Daten aus den Textfiles auszulesen und sich mit Bildverarbeitung von PHP beschäftigen müssen. Bei den Schnipseln gibt es eine Einführung zur <a href="http://www.schattenbaum.net/php/bild_mit_php.php">gdlib</a> (siehe auch die beiden weiteren Artikel zu gdlib).
Kurz zusammengefasst: Sie lesen ihr bestehendes Bild über gdlib ein, rufen aus der Textdatei die Wetterdaten ab und fügen diese dann mittels der gdlib-Textfunktion in das Bild ein. Anschließend generieren Sie mit PHP das Endbild. Da Sie vermutlich nicht alle 15 Minuten die PHP-Datei aufrufen wollen, um das Bild neu zu generieren, bietet es sich an, anstatt später das fertige Bild einzubinden, direkt die PHP-Datei einzubinden, siehe <a href="http://www.schattenbaum.net/php/bild_als_datei.php">hier</a>.
vor langer ZeitPHP: Hallo,
gibt es einen weg um eine Variable hochzählen zu lassen, wenn man über einen link etwas downloaded? Für Hilfe und ein kleines beispiel wäre ich sehr dankbar.
von BTL
Grundsäztlich ja, allerdings nicht eine Variable im eigentlich Sinne, da diese immer nur innerhalb eines Scriptes zur Verfügungen steht. Die Downloadanzahl muss also extern gespeichert werden, entweder über eine Textdatei oder in einer Datenbank, das funktioniert ähnlich wie der Counter unter <a href="http://www.schattenbaum.net/php/datei.php">"Arbeiten mit Dateien"</a>.
In deinem Fall musst du noch zusätzlich dafür sorgen, dass die Downloads nicht direkt verlinkt werden, sondern über ein PHP-Script abgerufen werden, sprich der Downloadlink führt zum PHP-Script. Dieses Script ändert dann zuerst deinen Zähler und stellt dann den Download zur Verfügung. Das funktioniert über Headerinformationen, da musst du dich aber bitte selbst informieren.
vor langer ZeitPHP: Hallo Frau Claudia
Ihnen vielen Dank für die gute Seite, die schon sehr hilfreich gewesen ist.
Ich habe eine Frage zur if Bedingung bei php. Leider hab ich auf Ihren Seiten diese Möglichkeit nicht gefunden, also weiss ich gar nicht ob php dass lösen kann.
Das ganze kommt seltener vor daher schreib ich das etwas ausführlicher.
ERstellt soll eine Abfrage für eine Laborauswertung.
Auf der Ausgangsseite können Checkboxen, angeklickt werden.
Feld 1 für den Laborwert_1
Feld 2 für den Laborwert_2
Feld 3 für den Laborwert_3
Wenn nur Feld 1 angeklickt wird, dann ist die Schilddrüse verändert.
Wenn nur Feld 1 bis 2 angeklickt wird, dann ist die Schilddrüse mehr verändert.
Wenn nun Feld 1 - 3 vollständig angeklickt wird bedeutet das: die Schilddrüse arbeitet gar nicht mehr.
Als php Lösung müsste das so ähnlich aussehen (funktioniert aber leider nicht):
das "and" gibts nicht bei php
und else ist gar nicht richtig.
<?php
if ( isset ( $_POST [ 'Laborwert_1' ] ) )
and
if ( isset ( $_POST [ 'Laborwert_2' ] ) )
and
if ( isset ( $_POST [ 'Laborwert_3' ] ) )
{
echo "Laborwert_1 und Laborwert_2 und Laborwert_3 ist erhöht. Der Patient ist viel krank. " ;
echo implode ( ', ' , $_POST [ 'Laborwert_1' ] ) ;
echo implode ( ', ' , $_POST [ 'Laborwert_2' ] ) ;
echo implode ( ', ' , $_POST [ 'Laborwert_3' ] ) ;
echo "Die Schilddrüse arbeitet gar nicht mehr ";
}
else
{
echo "Laborwert_1 und Laborwert_2 ist normal und Laborwert_3 ist normal. Die SChilddrüse ist gesund. " ;
}
?>
Mit else if geht das auch nicht
vereinfacht soll einfach nur folgendes funktionieren
Die Ausgangslage:
"Morgen" ist angeklickt
"Mittag" ist angeklickt
"Abend" ist angeklickt
Die Auswertung:
Wenn "Morgen" angeklickt ist und "Mittag" angeklickt ist und Abend angeklickt ist
dann sage "Ganzer_Tag"
Ist diese Bedingung möglich
Ich würde mich sehr freuen, wenn Sie mir einen Hinweis geben könnten, wie diese Lösung aussehen könnte.
Mit freundlichen Grüssen und vielen Dank
Antera
von Antera
Natürlich gibt es bei if-Abfragen in PHP ein AND, allerdings müssen Sie sie anders verknüpfen, siehe <a href="http://www.schattenbaum.net/php/operatoren3.php">"Logische Operatoren"</a>.
vor langer ZeitPHP: Hallo Frau Unkelbach, hoffe Sie können mir helfen.
In einer MySql-Datenbank wird per Sript geschaut ob am aktuellen Tag jemand Geburtstag hat. Wenn ja, wird mir ein Mail mit Telefon und Vorname zugesandt.
Möchte nun aber gern noch den Nachnamen mit übertragen haben. Also einen 5. Parameter.
mail("xxx@xxxxx.de", "Heute Geburtstag PRIVAT", $row["telefon"], $row["vorname"]);
So geht es wunderbar.
___________
mail("xxx@xxxxx.de", "Heute Geburtstag PRIVAT", $row["telefon"], $row["vorname"], $row["nachname"]);
Der --Nachname-- wird leider nicht mit übertragen.
Was mache ich falsch?
Danke.
gruss horst
von horst
Das 5. Argument bei mail dient nur zusätzlichen "Kommandozeilenparamentern", daher klappt es nicht, einfach noch was 5. dazu zu schreiben. Am sinnvollsten erscheint es mir, das gesamte 4. Argument anzupassen, da das der eigentliche Mailtext ist. Also z. B. vor dem Mailversand eine eigene Variable mailtext definieren, da alles, was im Text enthalten sein muss hinein speichern und dann als 3. Argument die Variable mailtext übergeben statt direkt einen Wert aus der Datenbank zu nehmen.
$mailtext = $row["vorname"]." ".$row["nachname"]." ".$row["telefon"];
mail("xxx@xxx.de", "Heute Geburtstag PRIVAT", $mailtext);
(Je nach Einstellung in der php.ini ist auch das 4. Argument zwingend erforderlich, siehe auch meine Seite über die <a href="http://www.schattenbaum.net/php/mail.php">Mailfunktion</a>.)
vor langer ZeitPHP: Hallo Claudia,
kann ich bei einem include ein if in der einen Datei öffnen und in der includierten schließen?
Also zB:
Datei1.php
<?php
code code code
if($heute == "Dienstag")
{
echo "Halo Welt";
?>
Datei2
code code code
include ('Datei1.php");
}
else
echo "Peep";
Gibt ne Fehlermeldung.
von Ollie
Soweit ich weiß, funktoiniert das nicht. Du musst "Klammern" innerhalb der selben Datei schließen, in der du sie auch geöffnet hast. Das, was innerhalb der Anweisung steht, kannst du aber auslagern.
vor langer ZeitPHP: Hallo Claudia,
nachdem ich auf Deiner wirklich tollen Seite schon oft Hilfe finden konnte, komme ich nun nicht mehr weiter.
Ich betreue ehrenamtlich die Seite http://www.msc-schrobenhausen.de und habe folgendes Problem: Beim "Solitaer"
http://www.msc-schrobenhausen.de/solitaerspiel.html
gibt es eine Bestenliste, die auf einer Textdatei mit einzelnen Einträgen in folgendem Format basiert: Kugeln|Sekunden|Nickname|Zeit| Bei einem Neueintrag wird die Liste neu sortiert.
Meine Frage: wie bekomme ich es hin, daß ein User mit seinem Nicknamen nur mit seinem besten Wert (am wenigsten Kugeln übrig und kürzeste Zeit) in der Liste auftaucht? Im Moment mache ich das manuell durch Löschen. Die Werte im array werden sortiert und die besten 20 ausgegeben. Ich kann das array sortieren, aber wie mache ich es, daß schlechtere Daten von einem User, der z. B. an erster Stelle steht, bei den nächsten Einträgen ignoriert werden.
Beispiel:
2 Kugeln|70 Sekunden|Paul|Zeit 1:10|
3 Kugeln|60 Sekunden|Heinz|Zeit 1:00|
3 Kugeln|65 Sekunden|Karl|Zeit 1:05|
3 Kugeln|80 Sekunden|Paul|Zeit 1:20|
3 Kugeln|85 Sekunden|Fritz|Zeit 1:25|
....
Paul würde nun an 1. und an 4. Stelle stehen. Er soll aber nur einmal an erster Stelle stehen und wenn er besser wird, dieses Ergebnis überschrieben werden.
Hoffentlich habe ich das verständlich ausgedrückt!
array_unique ist nicht für mehrdimensionale arrays,
array_multi_unique löscht die Felder, die "komplett" identisch sind. Ich aber möchte doch nur nach dem Nicknamen suchen und, falls der Wert schon vorhanden ist, den "ganzen" Eintrag, also Nickname, Kugelanzahl, Zeit und Sekunden löschen.
Wäre toll, wenn Du mir helfen könntest. Ein Eintrag als Dankeschön bei den "Sponsoren" könnte ich arrangieren ;-)
Viele Grüße und mach weiter so - tolle Seite!!
Martin
von Martin Babst
Hallo Martin,
mir fällt leider keine wirkliche Lösung ein. Ich könnte mir höchstens vorstellen, das mehrdimensionale Array aufzulösen und die Einzelteile zu bearbeiten, aber das erscheint mir zum einen sehr kompliziert und zum anderen bin ich mir nicht sicher, ob das zum Erfolg führen wird. Tut mir leid.
vor langer ZeitPHP: Hallo,
Erstmal: super seite hat mir seeehr weiter geholfen.
Nun habe ich aber eine frage:
Ich habe eine Tabelle mit mehreren spalten und jeder angemeldete User hat dort eine zeile. nun möchte ich jeden wert aus einer Userzeile ausgeben nach folgendem schema:
Spalten name 1: 23
Spalten name 2: 354
usw.
wenn allerdings ein wert in einer Zelle=0 ist soll er automatisch diese zelle überspringen und mit der nächsten in der Zeile weiter machen.
ist das irgendwie möglich?
Danke im vorraus
Fabi
von Fabi
Du musst nur vor der Ausgabe jeweils mittels if überprüfen, ob die Zelle einen Wert enthält und nur dann etwas ausgeben lassen.
vor langer ZeitPHP: Hi, ich habe ein Problem mit Imagepng
Den Script habe ich lokal getestet, und er zeigt mir die Grafik auch richtig an.
Jezt habe ich diesen auf einen Webserver hochgeladen, aber nun zeigt der script rein garnichts mehr an und speichert das Bild auch nicht ab.
Alle Datein besitzen die Rechte 777 und im script ist auch kein Pfadfehler.
Ich weiss nicht woran es liegen kann, dass der Script nicht arbeitet.
Habe alle Möglichkeiten etwas zuändern, auch am Webserver.
Freue mich auf eine Antwort.
Mit freundlichen Grüßen
Michael
von Michael
Das einzige, was mir noch als Fehlerquelle einfallen würde: Ist auf dem Webserver die gdlib (korrekt) installiert?
Ich würde zu Testzwecken die Grafik direkt anzeigen lassen, anstatt sie in eine Datei zu schreiben, dann siehst du auch eventuelle Fehlermeldungen. Sonst fällt mir leider nichts ein.
vor langer ZeitPHP: Schoenen Abend :)
hab ein Problem zwar ich habe einen Adventskalender und habe dafür mit Photoshop CS4 Zwei Design's gemacht das eine Design heißt "Nacht" und das andere Design "Tag" beide Design's sind jeweils in 5 Teile Gesliced (da auch noch Animationen mit im Spiel sind) Der Adventskalender soll eine bestimmte funktion haben zwar soll der Himmel ab 16:19 Uhr Dunkelblau werden (einfach die 5 bilder austauschen Bilder sollten sich dann im ordner Nacht befinden) und Tags über um 07:50 Uhr soll der Himmel wieder Hellblau werden (bilder im Ordner "Tag")
oder wenn es möglich wäre mach ich 2 HTML Dokumente das eine nenne ich "Tag" & das andere "Nacht" und dann einfach das Jeweilige Html-Dokument für die entsprechende Uhrzeit
das habe ich im Internet gefunden
<img src="<?php
// Abfrage der momentanen Stunde
$std = date("G");
// Headerzuordnung
$tag = "Bilder/tag.png";
$nacht = "Bilder/nacht.png";
// Vergleichsoperatoren
if ($std >= 7 && $std < 19) { // von 7.oo Uhr bis 18.59 Uhr
echo $tag;
}
else {// von 19.oo Uhr bis 6.59 Uhr
echo $nacht;
}
?>" width="1002" height="700" border="0" style="position:absolute;
top: 0; left:0">
leider kann man dort nur 1 bild für "Tag" verlinken müsste aber 5 Bilder Für "Tag" verlinken.
ich habe schon in einem Forum nachgefragt aber hab leider nur eine Antwort bekommen wie man Grüße nach Uhrzeit Anzeigen lassen kann :/
Vielen Dank schon einmal Lg, Soulstah.
Entweder du bindest jedes Bild so ein, wie in deinem Beispiel, oder du macht den PHP-Teil außerhalb des img-Tags und lässt dann dort, wo du zurzeit die Variable tag oder nacht ausgibst, die kompletten img-Tags schreiben. Das würde dann so aussehen:
<?php
$std = date("G");
if($std >= 7 && $std < 19)
{
echo "<img src=\"bildfpad1.png\" width=\"1002\" height=\"700\" usw.>";
echo "<img src=\"bildpfad2.png\" usw.";
echo "<img src=\"bildpfad3.png\" usw.";
}
else
{
echo "siehe oben";
}
?>
Für dich noch einfacher wäre es, wenn du nach den geschweiften Klammern PHP beendest und vor der schließenden erst wieder beginnst. Dann kannst du normales HTML schreiben:
<?php
$std = date("G");
if($std >= 7 && $std < 19)
{
?>
<img src="bildpfad1.png" usw.>
<img src="bildpfad2.png" usw.>
<?php
}
else
{
?>
Hier kann ganz normales HTML stehen.
<?php
}
?>
Hilfreich ist es für dich wahrscheinlich, wenn du dir zumindest die ersten paar Kapitel hier durchliest, damit du weißt, wie man Variablen verwendet, was man bei echo beachten muss und wie if funktioniert.
vor langer ZeitPHP:
Bei mir zählt der code nicht.
wieso?
<?php
$datei = fopen("counter.txt","r+");
$counterstand = fgets($datei, 10);
if($counterstand == "")
{
$counterstand = 0;
}
$counterstand++;
echo $counterstand;
rewind($datei);
fwrite($datei, $counterstand);
fclose($datei);
?>
bei mir zählt das nicht?
bitte hilf mir
von hilfsbereit
Kann die Datei gelesen werden und funktioniert nur das Schreiben nicht oder ist gar kein Zugriff möglich?
Wenn Lesen nicht funktioniert: Ist die Datei counter.txt auf dem Server vorhanden?
Wenn nur Schreiben nicht funktioniert: Hat die Datei die notwendigen Zugriffsrechte/Dateiberechtigungen? Standardmäßig besteht nur Lesezugriff auf Dateien am Server, du musst aber zusätzlich Schreibrechte haben, um mit PHP eine Datei verändern zu können. Das lässt sich normalerweise in deinem FTP-Programm einstellen z. B. über einen Rechtsklick auf die Datei am Server.
vor langer ZeitPHP: Hi, ich bins wieder
ich hab ne Frage zu Arrays: ich frage eine Reihe Werte aus einer Datenbank ab, ob ein bestimmter Wert stimmt. Wenn das der Fall ist wird der Name des Datensatzes in das Array gespeichert. Soweit funktioniert alles auch ganz gut.
Ich bräuchte jetzt nur einen Weg alle Werte auszugeben ABER Werte, die schon ausgegeben wurden zu übergehen, wenn sie doppelt im Array gespeichert sind.
Ich hoffe du kannst etwas mit dieser Beschreibung anfangen xD
glg Herry und Danke im Voraus
von Herry
Es gibt die Funktion <a href="http://de.php.net/manual/de/function.array-unique.php">array_unique</a>, die alle mehrfachen Einträge aus einem Array aussortiert, so dass jeder Wert nur einmal im Array vorhanden ist. Wenn du die doppelten Werte im Array behalten magst und sie nur für die Ausgabe quasi ausblenden möchtest, solltest du allerdings nur die Ausgabe mit der Funktion bearbeiten oder eine eigene Variable dafür verwenden.
vor langer ZeitPHP: Hallo,
ich schreibe momentan an einem System zur einfachen kommunikation unter Freunden und habe ein Problem.
ich arbeite bei dem Neuigkeitssystem mit einer Datei namens news.txt
da die neuesten News oben stehen sollen, lese ich die ganze datei ein und spiechere jede Zeile in einer extra variable( $a bis $i)
wenn jetzt eine neue Neuigkeit hinzukommt, so wird im code die Neuigkeit in die Variable $text gespeichert und anschließend wird alles wieder eingespeichert, wenn ich jetzt die Datei ansehe, ist immer nur der letzte eintrag zu finden, d.h. die alten einträge werdeen gelöscht, obwohl eigentlich die letzten 10 einträge angezeigt werden müssten.
DER CODE IST:
<?php
session_start();
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
if ($_POST["passt"]) {
$datei = fopen("news.txt","w+");
echo "DATEI OFFEN <br />TEXT:<br />";
$text = $datum;
$text .= $_POST["passt"];
$text .= "<br />";
$text .= $_SESSION["benutzer"];
echo $text, "<br />0:";
$a = fgets($datei);
$b = fgets($datei);
$c = fgets($datei);
$d = fgets($datei);
$e = fgets($datei);
$f = fgets($datei);
$g = fgets($datei);
$h = fgets($datei);
$i = fgets($datei);
$j = fgets($datei);
rewind($datei);
fwrite($datei, $text);
fwrite($datei, $a);
fwrite($datei, $b);
fwrite($datei, $c);
fwrite($datei, $d);
fwrite($datei, $e);
fwrite($datei, $f);
fwrite($datei, $g);
fwrite($datei, $h);
fwrite($datei, $i);
fclose($datei);
}
?>
was mache ich denn falsch,
vielen dank schon mal im voraus
Ich denke, das Problem liegt im Modus w+. Dieser löscht den gesamten Dateiinhalt und du kannst nichts daraus lesen (ich bin mir nicht sicher, ob das tatsächlich so funktionieren soll).
Ich würde außerdem empfehlen, nicht jede Zeile in einer eigenen Variable zu speichern, sondern die Variable text jeweils zu erweitern über
$text .= "\n".fgets($datei);
(so oft verwenden, wie du Zeilen auslesen magst (schöner wird's über eine Schleife)) und am Ende nur einmal in die Datei zu schreiben, weil dann ja der gesamte Inhalt in der Variable text gespeichert ist. Außerdem kannst du dann alle Texte über die gleiche Variable ausgeben lassen.
vor langer ZeitPHP: Wie kann ich einen Linktext aus Ausgaben aus der DB machen? (Originalfrage versehentlich gelöscht).
Du musst eigentlich nur dem echo-Befehl genau das übergeben, was du auch ausgegeben haben magst. Wenn du also <href="LINK" target="_self">LINKTEXT</a> haben magst, setzt du das so zusammen:
echo "<a href=\"",$row->link,"\" target=\"_self\">",$row->linktext,"</a>";
Oder, Schritt für Schritt:
echo "<a href=\"";
echo $row->link;
echo "\" target=\"_self\">";
echo $row->linktext;
echo "</a>";
Im ersten Fall werden die "normalen" Textteile von den Variablen-Teilen durch Komma getrennt, beim zweiten Mal wird jedes Mal ein eigener echo-Befehl ausgegeben - in jedem Fall werden die normalen Texte in Anführungszeichen gesetzt, die eigentlichen Anführungszeichen mit einem Backslash maskiert und die Variablen ohne Anführungszeichen angegeben. Nimm einfach die Methode, die für dich besser verständlich ist.
Am Ende würde sich dann noch ein Zeilenumbruch oder ähnliches anbieten, damit der nächste Link nicht direkt daran angeschlossen wird.
vor langer ZeitPHP: emm.. ich haette da mal eine kleine frage,wuerde gerne wissen wen ich in einen arrey datein aus der db ausgebe wie z.b moechte ich die commente von meinen usern ausgeben und dan die moeglichkeit wen ein komment von MIR ist das ich mein komment jeder zeit loschen kan wie kan ich es machen das ich MEIN komment losche den bis jetz loscht sich immer entweder das letze oder das erste komment.
hier mein code,vlt hilft es dir mehr micht zu verstehen:
$query = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 5");
while($row = mysql_fetch_assoc($query)){
$comment_id = $row['id'];
$post_id = $row['postid'];
$post_firstname = $row['firstname'];
$post_lastname = $row['lastname'];
$post_date = $row['date'];
$post_avatar = $row['avatar'];
$post_news = $row['comment'];
echo("
<div id='post' style='background-image:url(../images/info_background.png);'>
Posted by: <img src='$post_avatar' height='50' width='50'> $post_firstname $post_lastname at: $post_date<p/>
<b>$post_news</b><br/>
<hr>
<form action='user_login.php' method='post'>
<input type='submit' name='commentbtn' id='commentbtn' value='Comment' style='background-image:url(images/info_background.png); border:0px;' />
<input type='submit' name='deletebtn' id='deletebtn' value='Delete' style='background-image:url(images/info_background.png); border:0px;' />
</form>
</div><p/>
");
}
if($_POST['deletebtn']){
mysql_query("DELETE FROM news WHERE id='$comment_id'");
}
else
echo("");
Dankeschoen schonmal im vorraus.
Du weist die Datenbank an, den Datensatz mit der id, die in der Variable comment_id gespeichert ist zu löschen. Um den Fehler zu finden, musst du dir erstmal überlegen, woher diese Variable kommt. In deinem Fall sind das die aus der Datenbank ausgelesenen Werte; da deine Lösch-Aktion nach der DB-While-Schleife kommt, ist diese Variable also ganz einfach mit dem letzten Wert, den die Schleife ausgegeben hat, gefüllt. Das was du löschst hat also überhaupt keine "Verbindung" zu dem Datensatz, bei dem du den Löschen-Button gedrückt hast.
Du musst in deinem Formular angeben, welcher Datensatz es ist, den du gerade "bearbeiten" (also in deinem Fall löschen) möchtest. Es gibt dafür nicht sichtbare Formularfelder, mit denen du dann die ID übergeben kannst.
vor langer ZeitPHP: Hallo, ich wollte gerade mal ihren Kalender realisieren. Bei mir kommen jedoch immer jedemege Fehlermeldungen dieser art. Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in E:\xampplite\htdocs\kalender.php on line 5
Wo kann der Fehler liegen. Das Skriot habe ich von ihrem Beispiel Kalender übernommen.
Das liegt an einer nicht gesetzten Zeitzone in XAMPP. Wie in der Fehlermeldung beschrieben, kannst du es über zwei Methoden abstellen:
1. In der php.ini die Zeitzone setzen mit date.timezone = "Europe/Berlin" - danach bitte Apache neu starten.
2. Direkt in der PHP-Datei mit date_default_timezone_set("Europe/Berlin"); - das funktioniert aber erst ab PHP 5.1 und führt bei älteren PHP-Versionen zu einer Fehlermeldung (lässt sich aber über eine if-Abfrage mit <a href="http://php.net/manual/de/function.function-exists.php">function-exists</a> abfangen).
vor langer ZeitPHP: Hallo Claudia,
ich habe zur Zeit ein HTML-Formular, dass Dtane per POST an eine folgende Seite weiterschickt. Ich möchte an die POST-Zielseite aber innerhalb der action= Zeile im Formular auch noch GET Daten anhängen. Wie ist das zu realisieren?
Viele Grüße
Einfach bei action im Formular nicht nur den Dateinamen übergeben, sondern auch die Get-Variablen - so, wie du das auch bei einem normalen Link machen würdest.
vor langer ZeitPHP: Hallo ich habe gerade mit dem Tutorial angefangen und habe das Beispiel mal in eine Php Datei kopiert.
<?php
if($user == "Claudia")
{
echo "Bist du Cloud?";
}
else
{
echo "Also Cloud bist du sicher nicht!";
}
?>
und als Formular:
<form action="form2.php" method="post">
<input type="text" size="17" name="user">
<input type="submit" value="OK">
</form>
Wenn ich aber jetzt in dem Formular Claudia eingebe, dann kommt trotzdem immer der else Zweig als Ausgabe. Warum das kann doch eigentlich nicht möglich sein.
von Jenny
Da du das ganze über ein Formular machst, würde ich mal darauf tippen, dass es deswegen nicht funktioniert, weil du die Variable $user überprüfst, anstatt $_POST["user"] (siehe auch <a href="http://www.schattenbaum.net/php/variable2.php">Variablen übergeben</a>).
Falls das nicht das Problem ist (und allgemeiner Tipp bei solchen Problemen): Einfach mal die Variable, die überprüft wird per echo ausgeben lassen, dann fällt es einem meistens direkt auf.
vor langer ZeitPHP: Hallo,
ich habe ein Array[] mit folgendem Inhalt: 1,2,4,3,2,3,1,2 usw.
Nun möchte ich wissen, wieiviele 1sen, 2en, 3en usw. in diesem Array sind.
Das Spektrum der Zahlen ist von Fall zu Fall anderes (Umfrage).
Wie kann ich das machen?
von Fabian Gruber
Dafür gibt es die Funktion array_count_values, die genau das macht. Die Werte und ihre Häufigkeit werden dann als Array zurück gegeben und können dementsprechend weiter verwendet werden. Mehr Infos auf <a href="http://de.php.net/manual/de/function.array-count-values.php">php.net</a>.
vor langer ZeitPHP: Hallo kannst du mal bitte Kontrollieren ob des auf meinem Server überhaupt geht?
http://reckel.eu/test/notizen2/i.php
bei mir wird immer ausgegeben:
"Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/webb/71/67/52608167/htdocs/test/notizen2/Login.php:9) in /mnt/webb/71/67/52608167/htdocs/test/notizen2/Login.php on line 13"
hier mein Quelltext:
"<?php
$_POST[Benutzername] = $username;
session_start();
$_SESSION["berechtigter_User"] = 1;
$_SESSION["Username"] = $username;
?>"
die Variable $username ist in dem Dokument auch wirklich mit einem Namen belegt... (das habe ich bereits kontrolliert)
Grüße
Marcel
von Marcel
Marcel, wie soll ich bitte kontrollieren, ob irgendetwas auf deinem Server funktioniert?
Die Fehlermeldung sagt dir aber schon, wo das Problem liegt: Zum einen funktioniert der Aufruf von session_start() nicht und der Grund dafür ist, dass "headers already sent", spricht deine Datei hat bereits (Header-)informationen an den Browser übertragen. Das passiert immer dann, wenn du vor dem Befehl session_start() irgendetwas ausgibst, weswegen man das normalerweise direkt an den Anfang der Datei schreibt.
vor langer ZeitPHP: Es handelt sich dabei um einen Formmailer. Ich habe ein Eingabefeld erstellt, in das ein Link eingegeben werden soll. In der Vorschau des abgesendeten Links wird dieser gar nicht angezeigt:
Name wcgrtg
eMail dwrf@rfgce.de
Kategorie PC Notdienst
Homepage www.xyz.de
Backlink -- Hier müsste der Linkcode stehen
So sollte er aussehen:
<a href="" title=""></a>
Wenn die Mail ankommt, wird die Eingabe zwar angezeigt, aber maskiert:
Backlink............: <a href=\"\" title=\"\"></a>
von Uwe
Dich stört also gar nicht das a href, sondern die Backslashes? Das hat nichts damit zu tun, dass es sich um einen Link handelt, sondern liegt einfach an den Anführungszeichen, die von PHP maskiert werden. <a href="http://www.schattenbaum.net/php/ereg.php">Stripslashes</a> (Stück runter scrollen) hilft dir in dem Fall weiter.
vor langer ZeitPHP: Hallo Frau Unkelbach,
ich bekomme bei Datum&Uhrzeit auf deutsch die englische Variante angezeigt,
obwohl im Code de_DE vorkommt.
Woran kann das liegen ?
Hier das Script
<?
setlocale(LC_TIME, "de_DE");
echo "Heute ist ein ";
echo strftime("%A");
echo " im ";
echo strftime("%B");
echo ". Und zwar der ";
echo strftime("%x");
?>
MfG
B.Drefert
Das liegt an den Servereinstellungen. Sie können es noch mit einer der folgenden Varianten (jeweils anstatt de_DE) probieren:
deutsch
german
de_DE.iso88591
de_DE.iso885915.euro
de_DE.utf8
de_DE.utf8.euro
de_DE.euro
Außerdem gibt es das alles theoretisch auch noch mit de_AT, de_BE, de_CH und de_LU. Leider gibt es keine garantierte Version und auf einem anderen Server können wieder andere funktionieren.
vor langer ZeitPHP: Liebe Frau Unkelbach,
ich habe Ihr Buch erworben und heute damit begonnen. Auf Seite 32 werden die Variablen per URL vergeben. Ist "test.php" eine extra Datei, die ich anlegen muß ?
Und was muß da genau drin stehen ? Ich habe jetzt verschiedene Variantien probiert
<?php
test.php?Vorname=Britta&Nachname=Drefert
?>
<?php
echo "Vorname: ", $_GET["Vorname"];
echo "<br>";
echo "Nachname: ", $_GET["Nachname"];
?>
test.php?Vorname=Britta&Nachname=Drefert
<?php
echo "Vorname: ", $_GET["Vorname"];
echo "<br>";
echo "Nachname: ", $_GET["Nachname"];
?>
und das ganze in zwei Dateien gesplittet, komme aber nicht zum Ergebnis ...
Mit freundlichem Gruß
Britta Drefert
Es handelt sich hierbei um die Übergabe via URL, Sie rufen also über die Adresszeile Ihres Browsers die URL einer Datei auf, in der Sie dann Variablen verwenden. Erst durch diesen Aufruf über den Browser stehen Ihnen die Variablen auch zur Verfügung und auch das nur in der Datei, die sie ansprechen - im Beispiel also test.php
Sie benötigen also eine Datei test.php in der Sie - wie im Beispiel erwähnt die Variablen verwenden, indem Sie in die Datei
<?php
echo "Vorname: ";$_GET["Vorname"];
echo "<br>";
echo "Nachname: ",$_GET["Nachname"];
?>
schreiben.
Rufen Sie jetzt einfach nur die Datei test.php auf, wird Ihnen lediglich
Vorname:
Nachname:
angezeigt werden, da die beiden Variablen nicht in der Datei mit einem Wert gefüllt werden, sondern über Ihren Aufruf über die Adresszeile. Erst wenn Sie die Datei also über test.php?Vorname=Britta&Nachname=Drefert aufrufen, wird dort korrekt
Vorname: Britta
Nachname: Drefert
stehen können.
vor langer ZeitPHP: HalloClaudia,
ich habe mich mal an einer Blätterfunktion probiert
aber irgendwie funktioniert sie nicht.
Ich kann einfach nicht weiter als seite 2 klicken
obwohl die Berechnungen stimmen
wehre dir sehr verbunden
wenn du mir dieses Phänomen erklären könntest
Liebe Grüße
Petra
<?php
$seite = $_REQUEST['seite'];
if($seite == '')
{
$seite = 1;
}
$zeigen = 5;
$anfang = ($seite - 1) * $zeigen + 1;
$ende = $anfang + $zeigen - 1;
$gesamt = 18;
echo "Seite:".$seite."<br>";
if ($seite == 1)
{
echo" zurück ";
}
else
{
$seite--;
echo "<a href='test.php?seite=".$seite."'> zurück </a>";
}
echo " <==> ";
if ($ende >= $gesamt)
{
echo" weiter ";
}
else
{
$seite++;
echo "<a href='test.php?seite=".$seite."'> weiter </a>";
}
?>
Dieses Phänomen liegt an deinen if-Anweisungen bzw. dem, was du darin tust.
In der ersten if-Anweisung reduzierst du die Variable $seite um 1 (sofern sie nicht bereits 1 ist), in der zweiten erhöhst du sie dann wiederum um 1. Das führt aber dazu, dass sie nach der Erhöhung nicht 1 größer als am Anfang ist - was sie aber sein müsste, um im Link auf die nächste Seite zu verweisen -, sondern genauso groß. Auf Seite 2 verlinkst du also nicht auf Seite 3, sondern wiederum auf Seite 2, auf der du ja bereits bist.
Ich würde um auf die Seitenanzahl für die Links zu kommen, nicht die Variable selbst erhöhen, sondern nur etwas anderes via echo ausgeben. Dafür die einzelnen Teile nicht via Punkt, sondern mit Komma trennen und direkt $seite+1 (bzw. -1) schreiben, also so:
echo "<a href='test.php?seite=",$seite-1,"'> zurück </a>";
echo "<a href='test.php?seite=",$seite+1,"'> weiter </a>";
Die In- bzw. Dekrementierung dann natürlich löschen. Der eigentlich Wert der Variable bleibt dann bestehen.
vor langer ZeitPHP: Liebe Claudia,
ich hab eine Frage an dich.
Die ist.
Ich will mit PHP eine Fehlermeldung programmieren, aber ich weiß nicht wie.
Ich muss ein Formular erstellen. Wenn ich aber nichts z.B. als Name eingebe, dann soll eine Fehlermeldung erscheinen, wo z.B. steht "Der Name fehlt!".
Ich wäre idr sehr dankbar, wenn du mir helfen könntest.
MfG
Ahmet Bilgic
von Ahmet Bilgic
Du brauchst zunächst eine if-Abfrage, die überprüft ob dein Formular Daten aus dem entsprechenden Feld übergeben hat, also ob sich in der POST-Variable Daten befinden. Sollte das nicht der Fall sein, gibst du via echo deine gewünschte Fehlermeldung aus, falls die Daten aber übergeben wurden, lässt du sie verschicken/eintragen/etc. Also ganz schlichtes <a href="http://www.schattenbaum.net/php/if.php">if-else-Konstrukt</a>.
Wenn du die Fehlermeldung an einer anderen Stelle ausgeben magst, als sich die if-Abfrage befinden soll, kannst du die Fehlermeldung natürlich auch in einer Variable speichern, oder über Fehlercodes arbeiten (also eine Zahl als Fehlercode zuweisen und später z. B. mittels switch den Fehlercode auslesen und eine entsprechende Fehlermeldung ausgeben).
Wenn du das für mehrere Felder einsetzen möchtest, kannst du entweder eine if-Abfrage machen, die über OR verknüpft und dadurch überprüft, ob mindestens eines der Felder nicht gefüllt war oder mehrere if-Abfragen ausführen lassen. Bei der ersten Variante kannst du danach allerdings nicht direkt sagen, welches Fehld nicht ausgefüllt war.
vor langer ZeitPHP: Hallo Claudia.
Ich habe in einer php Datei eine Variable angelegt und möchte diese gern in einer HTML Datei über <? echo $variable ?> auslesen. Woher weiß die HTML Datei aus welcher php Datei die Variable zu holen ist? Verzweifel langsam...)-:
Für eine Antwort wäre ich sehr dankbar.
Viele Grüße Andy
von Andy
Deine HTML-Datei wird schon Schwierigkeiten damit haben, den echo-Befehl überaupt auszuführen. Im Normalfall sind Server so eingestellt, dass sie bei HTML-Dateien PHP überhaupt nicht umsetzen.
Wenn du etwas aus einer anderen Datei etwas einbinden möchtest, hast du grundsätzlich die Möglichkeit über das <a href="http://www.schattenbaum.net/php/datei.php">Auslesen von Dateien</a> oder über <a href="http://www.schattenbaum.net/php/includes.php">Includes</a> zu arbeiten.
Ich weiß nicht, was genau du vorhast, aber ich würde wahrscheinlich Includes verwenden. Dabei hast du dann allerdings alles, was in der Include-Datei steht auch in deiner anderen Datei, in wie weit das erwünscht ist, weiß ich natürlich nicht.
vor langer ZeitPHP: Hallo Claudia,
ganz herzlichen Dank für Deine schnelle Antwort auf meine Frage von gestern bezüglich der Aktualisierung von mehr als einem Satz einer Datenbank über eine Tabelle. Sorry, ich glaube, ich habe mich nicht exakt ausgedrückt. Daher hier der Code:
<blockquote>
<p>&nbsp;</p>
<table border="0" width="90%" id="table1">
<tr>
<td align="left" valign="top" width="010"><font face="Arial" size="3"><b>Datum Beginn</b></font></td>
<td align="left" valign="top" width="010"><font face="Arial" size="3"><b>Datum Ende</b></font></td>
<td align="left" valign="top" width="010"><font face="Arial" size="3"><b>Zeit</b></font></td>
<td align="left" valign="top" width="050"><font face="Arial" size="3"><b>Inhalt</b></font></td>
<td align="left" valign="top" width="050"><font face="Arial" size="3"><b>Veranstaltungsort</b></font></td>
</tr>
<font face="Arial">
<?php
$sql = mysql_query("SELECT * FROM kalamtsanzin WHERE ingkw LIKE '$vw' ORDER BY ingkw, ingkwf, ingkjahr");
while ($ds = mysql_fetch_object($sql))
{
$vw1 = $ds -> ingkw;
$vwf1 = $ds -> ingkwf;
$vj1 = $ds -> ingkjahr;
$sw1 = $ds -> ingkwfs;
$vda1 = $ds -> ingamb;
$dats1 = $ds -> ingdates;
$date1 = $ds -> ingdatee;
$zeit1 = $ds -> ingzeit;
$was1 = $ds -> ingwas;
$wo1 = $ds -> ingwo;
$was11 = trim($was1);
$wo11 = trim($wo1);
echo "<tr><td align=left valign=top width=012>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=dats1 cols=12 rows=1>", $dats1, "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=012>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=date1 cols=12 rows=1>", $date1, "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=007>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=zeit1 cols=07 rows=1>", $zeit1, "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=50>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=was1 cols=50 rows=4>", $was11, "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=50>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=wo1 cols=50 rows=4>", $wo11, "</textarea>", "</font>", "</td>", "</tr>";
};
$fehler = mysql_error();
if (!empty($fehler))
{echo "<b> Es trat ein Fehler auf. Die Datenbank Kalender konnte nicht ausgelesen werden, ADMIN benachrichtigen!
</b> MySql meldet: <br><b> $fehler</b>"; exit;}
mysql_Close($dz);
echo "<tr><td align=left valign=top width=012>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=dats1 cols=12 rows=1>", 'Datum Beginn', "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=012>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=date1 cols=12 rows=1>", 'Datum Ende', "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=010>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=zeit1 cols=07 rows=1>", 'Uhrzeit', "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=50>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=was1 cols=50 rows=4>", 'Inhalt', "</textarea>", "</font>", "</td>";
echo "<td align=left valign=top width=50>", "<font face=Arial size=3>",
"<textarea wrap=virtual name=wo1 cols=50 rows=4>", 'Ort', "</textarea>", "</font>", "</td>", "</tr>";
?>
</table>
</blockquote>
Das Problem liegt nun darin, dass alle Inhalte zwar angezeigt werden, ich aber nicht auf die Reihe bekomme, wie ich jetzt nach dem submit alle Sätze auf einmal (klar, durch abarbeiten in einer Schleife) in die Datenbank bekomme. Weil ja die Input-Namen immer gleich heißen. Ich müsste also inizieren. Aber wie?.... Vielleicht kannst Du mir helfen. Ich habe nur den Code-Teil geschickt, der der Datenbankanzeige dient. Submit, und Post- oder Get-Variablen sind mir vom Prinzip zwar klar, aber eben nicht das Abarbeiten mehrerer Sätze aus einer Tabelle.
von Hartmann
Ich weiß nicht, ob es wirklich die schönste/sauberste Lösung ist, aber ich würde - wie du es ja auch vorhast - mit unterschiedlichen Zahlen bzw. Zählvariablen je Datensatz arbeiten.
Vor deiner while-Schleife legst du die Zählvariable fest und weist ihr den Wert 1 zu (kann auch 0 - oder etwas anderes - sein, aber die 1 ist für Menschen meistens der logischere Zählbeginn), als einfach nur $zaehler = 1; Bei der Ausgabe der einzelnen Felder verwendest du dann diese Variable, um die Feldnamen unterscheidbar zu machen, also z. B. echo "blabla name=dats",$zaehler," blabla"; Am Ende der while-Schleife erhöhst du dann die Variable mit $zaehler++; um 1, so dass sie im nächsten Schleifendurchlauf um 1 höher ist. Dein Feld heißt dann also für den ersten Datensatz dats1, für den zweiten dats2 usw.
Beim Eintragen kannst du dann ähnlich vorgehen. Du verwendest auch dort eine Zählvariable (oder eine for-Schleife, die ja ohnedies eine solche hat). Um die einzelnen Formularfelder zu bekommen, musst du dann mit <a href="http://www.schattenbaum.net/php/variable_variablen.php">variablen Variablen</a> arbeiten, deine Namen also zusammen setzen, der Zugriff auf eine Get-Variable sieht dann z. B. so aus: $_GET["dats$zaehler"], was zu $_GET["dats1"], $_GET["dats2"] usw. wird, je nach Schleifendurchlauf.
Das Eintragen in die DB erfolgt dann ganz normal, über diese Variablen (die du natürlich auch vorher noch überprüfen/ändern/etc. kannst.
vor langer ZeitPHP: Hallo Claudia,
in vielen Dingen hat mir Dein Tutorial geholfen. Jetzt habe ich aber ein Problem, vielleicht kannst Du mich gedanklich auf den richtigen Weg bringen. Ich gebe mehrere Sätze aus einer Datenbank aus und bringe diese zur Anzeige. Iimmer dann, wenn im 1. Teil des Schlüssels die zu bearbeitende Kalenderwoche steht (im zweiten Teil des Schlüssels steht ein Folgenummer). Die zugehörigen Texte (Veranstaltungshinweise und Ort etc) werden überschreibbar angezeigt (in einer tabelle). Das klappt auch alles ganz wunderbar. Nur das mit dem anschließenden zurückschreiben.... Keine Ahnung wie ich bei der Ausgaben die entsprechenden input-namen hochzählen kann um mit den entsprechenden post-variablen dann in den update zu gehen (die Ausgabe erfolgt ja bei mir ganz einfach mittels while nach vorgehendem select mittels when, da dürfte mein Denkfehler liegen). Kannst Du mir einen Denkanstoß geben? Vielen Dank
von Hartmann
Ich kann dem leider nicht entnehmen, wie deine Inputnamen aussehen sollen, wenn es dir aber nur darum geht, innerhalb der Schleife hochzuzählen, solltest du vor der Schleife eine Zählvariable festlegen und dann in der Schleife einfach mit $variablenname++; hoch zählen. Mit dieser Variable könntest du dann deine Inputnamen zusammen setzen.
Alternativ könntest du auch einfach den Schlüssel als Teil des Namens verwenden?
Ich bin mir leider nicht sicher, ob ich dein Problem richtig verstanden habe.
vor langer ZeitPHP: Hi Claudia,
ich habe da mal ein Problem und hoffe du kannst mir helfen...
Mein Script:
$body .= "EMAIL: ".$_REQUEST['EMAIL']." \n";
$body .= "Stadt: ".$_REQUEST['Stadt']." \n";
-->$recipient = "newsletter@meinedomain.de");
$subject = "Eintragen";
$location = "index.html";
$email = $_REQUEST['EMAIL'] ;
mail( $recipient, $subject, $body, "From: $EMAIL" ) or die ("Mail could not be sent.");
header( "Location: "index.html" );
Folgendes Problem:
in der Markirten Zeile "-->" befidnet sich das problem.
leider reicht die eine newsletteradresse nicht auch, sodass ich diese
aus der "$Stadt" und der newsletteradresse ".newsletter@meinedomain.de" zusammensetzen möchte.
Das script soll also nicht jedes formular an ein und die selbe mailadresse senden.
Der abonnent möchte den newsletter für Berlin empfangen, also soll das script das formular an "berlin.newsletter@meinedomail.de" senden.
von Benjamin aus Berlin
Du kannst Variablen mit Punkten zusammen setzen. Also z. B. $recipient = $_REQUEST['Stadt'].".newsletter@meinedomain.de"
Wie üblich der Hinweis: Wenn die Daten aus einem Formular kommen, können sie unsicher sein und es bietet sich an, sie - bevor sie eingesetzt werden - zu überprüfen.
vor langer ZeitPHP: Hi Claudia,
einmal angenommen, meine webseite soll alle 5min die Datei hallo.php includieren, wenn in einer Datenbank ein Wert auf 0 ist und diesen Wert auf 1 setzen.
Wie würde das gehen? Das mit der Datenbank bekomm ich hin nur die Regelmäßigkeit, das geht irgendwie nicht.
von Herry
Wenn du das nur brauchst, während eine Seite geöffnet ist, könntest du es mit einem Reload der Seite lösen. Ist aber nicht gerade schön und auch sehr fehleranfällig.
Ansonsten brauchst du Cronjobs dafür. Wenn dein Hoster die nicht anbietet, gibt es z. B. die Seite <a href="http://www.cronjob.de">Cronjob.de</a>, die habe ich aber nicht getestet und kann daher nichts weiter dazu sagen.
vor langer ZeitPHP: Hallo, hatte vor meine Website zu erneuern und ein php elemeit einzubringen um zu vermeiden dass immer alles neu geladen wird...
Versuchte es mit den mitteln die auf http://schattenbaum.net/php/datei.php beschreiben sind zu meistern. Muss jedoch gestehen dass ich gescheitert bin :(
Ich hatte vor:
<div id="Inhalt" >
<p style="padding-top:40px; padding-left:40px;" >
<?php
echo "Hallo";
?>
</p>
</div>
an der stelle von echo "Hallo"; eine oder mehrere variable einzubauen dass sich nur der text je nach link ändert... der inhalt der variable sollte ausgelagert sein, so dass Impressum in einer .html datei und Über mich in einer .html datei gespeichert werden kann
Wie mache ich das?
von Marcel
<a href="http://www.schattenbaum.net/php/includes.php">Includes</a> sollten dir weiter helfen. Allerdings kommst du damit nicht vom neu laden weg. Bei PHP wird alles serverseitig bearbeitet, du musst also den Server auch ansprechen, damit sich irgendetwas tut und damit die Seite laden. Wenn du etwas direkt verändern willst, wirst du JavaScript verwenden müssen, bzw. die in Richtung Ajax beschäftigen.
vor langer ZeitPHP: Hi^^ wenn ich nach ein paar verschachtelten if-Abfragen letztenendes in die Session $_SESSION["e"]=1; speichere, wird die auf einer zweiten Seite nicht angezeigt. Was hab ich falsch gemacht?
von Manuel
Grundsätzlich kann das mehrere Ursachen haben. Wenn die Sessions prinzipiell auf beiden Seiten funktionieren, du auf beiden Seiten die Variable richtig geschrieben hast und dir sicher bist, dass der if-Zweig, in dem deine Variable geschrieben wird, auch angesprochen wird, könnte es noch an dem Variablennamen liegen. Es gibt ein paar Variablennamen, die bei Sessions Probleme machen. Ob "e" dazu gehört, kann ich dir leider nicht sagen.
Grundsätzlich sind die Angaben aber für eine genaue Fehleranalyse nicht ausreichend.
vor langer ZeitPHP: Hallo php Spezialisten!
Wenn ich den folgenden Befehl in body einfüge und diese Datei im gleichen Verzeichnis, wie die index.php ist, funtioniert es.
<?php include("linke_box.inc"); ?>
Füge ich die Datei in das Verzeichnis: "http://allgemein.daten.de/basis/" ein,
also http://allgemein.daten.de/basis/linke_box.inc, komme ich mit dem linkstring, den ich in die index.php Datei einfügen miuss nicht zurecht.
<a href="http: http://allgemein.daten.de/basis/linke_box.inc"></a>
funktioniert leider nicht.
Für die richtige String-Eingabe Zeile wäre ich sehr dankbar.
Gruß Martin
von Martin
Verzeichnisübergreifende Includes sind ein bisschen tricky. Links, die in der includierten Datei stehen werden so behandelt, als würden sie in der Datei stehen, in der du die Include-Datei eingebunden hast. Zum Includen musst du das Verzeichnis mit angeben.
Um in index.php also die Datei aus dem Unterverzeichnis basis einzubinden, verwendest du include("basis/linke_box.inc"), um in der Datei linke_box.inc einen Link außerhalb des Unterverzeichnisses aufzurufen, gibst du einfach den Namen an. Wenn du aber eine weitere Datei im Unterverzeichnis aufrufen möchtest, musst du dieses wiederum mit angeben also über "basis/Dateiname".
vor langer ZeitPHP: hallo. Erst einmal ein kompliment für diese tolle seite.
dann zu meiner frage ... ist es möglich die IF-anweisung in eine schleife einzubauen ?
so dass man quasi schon bestimmte bedingungen festlegt, um so die schleife zu "vereinfachen" ?
wäre sehr dankbar um eine antwort.morgen steht die klausur an :/
liebe grüße
von N1899
Mir ist nicht klar, was du dir genau vorstellst. Schleifen an sich haben ja schon Bedingungen. Ansonsten kannst du innerhalb einer Schleife (fast?) alles machen, was du auch außerhalb kannst.
vor langer ZeitPHP: Hab ich das richtig verstanden, alle Variablen, welche man über ein Formular in html erstellt hat, (<input name="beispiel" size=6>) kann man diese über $_POST["beispiel"] über echo ausgeben oder auch in dieser Form weiterverwenden?
Wenn du im Formular als "method" post verwendest, ja.
Sinnvoll ist es, die übergebenen Formulardaten zu überprüfen und es kann die spätere Verwendung erleichtern, wenn du sie in "normale" Variablen schreibst (also wieder in $beispiel).
vor langer ZeitPHP: <?php
$string = " Webapplikation ";
echo trim($string) ;
echo ltrim($string);
echo rtrim($string);
?>
Wie kann ich einen zeilenumbruch bekommen?
Wo magst du denn den Zeilenumbruch haben? Zwischen den einzelnen echos? Dann einfach nur dazwischen <i>echo "<br>";</i> bzw. XHTML konform <i>echo "<br />";</i> schreiben. Wenn du innerhalb deines Strings Zeilenumbrüche haben magst, ist das allerdings ein bisschen komplizierter. In dem Fall könntest du zB mit Wordwrap Zeilenumbrüche nach einer bestimmten Zeichenanzahl erzeugen (siehe auch <a href="http://de2.php.net/manual/de/function.wordwrap.php" target="_blank">php.net</a>).
vor langer ZeitPHP: hallo:),
ich hätte da mal ne Frage: Wie kann man von dem letzten Wert eines Arrays den ersten abziehen?
schon mal danke
lg
Vielleicht verstehe ich die Frage falsch, aber du musst einfach nur den ersten und den letzten Wert abfragen und dann voneinander subtrahieren. Um den ersten Wert zu bekommen, verwendest du am besten $Name_des_Arrays[0], für den letzten Wert würde ich end($Name_des_Arrays) benutzen. Alles zusammen sieht dann zB so aus:
$ergebnis = end($Name_des_Arrays) - $Name_des_Arrays[0];
vor langer ZeitPHP: PHP:
Hallo Claudia.
Weiter unten hier in den FAQ´s hat schon ein Sven dir eine Frage gestellt. Genau das Problem habe ich auch. Die Frage lautete wie folgt:
<br /><br />
PHP: Hallo Claudia, Es gibt ja Seiten mit einem solchem System: http://dsforen.de/index.php?index=start (Startseite) und z.B. http://dsforen.de/index.php?index=impress ist dann das Impressum. Wie geht sowas? Und wie nennt man das? Also ich meine das: "index.php?x=x" Über eine Antwort würde ich mich Sehr freuen, Sven
<br /><br />
So jetzt zu meiner Frage.
Wie includiere ich das jetzt?
Über eine Antwort würde ich mich sehr freuen und wenn ich das erfolgreich gelöst habe würd ich auch gerne was spenden.
LG Sindy
von Sindy
Das includieren erfolgt ganz normal über den Befehl include(), wie auch unter <a href="http://www.schattenbaum.net/php/includes.php">Includes</a> beschrieben.
Wenn du also zB index.php?index=impressum hast, dann schreibst du an die Stelle, wo der Inhalt deiner Seite angezeigt wird include($index); und es wird in dem Fall "impressum" eingefügt. Die Endung dafür musst du extra angeben. Dafür gibt es mehrere Möglichkeiten:
1. Du machst direkt index.php?index=impressum.php
2. Du schreibst die Endung beim Include dazu, also include($index.".php").
In jedem Fall ist es sinnvoll, davor noch zu überprüfen, ob das, was includiert werden soll, von dir überhaupt als Include vorgesehen ist. Auch dafür gibt es verschiedene Möglichkeiten. Du kannst zB alle Includes, die funktionieren sollen in ein Array schreiben und dann überprüfen, ob der übergebene Wert im Array vorhanden ist. Oder du arbeitest mit switch und kannst dann noch zusätzliche Informationen (zB Keywords, Überschriften, etc.) bei jeder Seite hinzufügen.
Denke bitte daran, dass du die Variable mit $_GET[$index] aufrufen musst, solange du sie nicht in eine andere Variable schreibst. Die Beispiele oben sind so angelegt, dass die übergebene Variable in die Variable $index geschrieben wurde.
vor langer ZeitPHP: Hallo.
ich möchte eine Zahl Formatieren. Ich kenne das vom Basic
i = 2.4
Print format$(i,"##,#0") -> 2,40
also wie kann ich aus
$i = 2.4;
echo $i;
2,40 oder gar 2,400 anzeigen lassen alos sogar mit Deutschen Dezimal Komma.
Danke
von Ralf
In PHP gibt es dafür <b>number_format(<i>zu formatierende Zahl, Anzahl der Dezimalstellen, Dezimaltrennzeichen, Tausendertrennzeichen</i>)</b>. Wenn man nur die zu formatierende Zahl angibt, wird sie ohne Nachkommastellen angezeigt. Als Dezimaltrennzeichen wird standardmäßig ein Punkt verwendet, als Tausendertrennzeichen ein Komma. Wenn du ein Dezimaltrennzeichen angibst, musst du auch ein Tausendertrennzeichen angeben, sonst funktioniert nichts.
In deinem Fall würde das also so ausschauen: echo number_format($i, 2, ",", ".");
vor langer ZeitPHP: <?php
$pseudoName = "mann";
$mann = 1000;
echo "$$pseudoName";
?>
Was ist hieran falsch? (ich will zum Schluss im script die Zahl 1000 sehen)
von florentin
Probier's mal ohne die Anführungszeichen beim echo :-)
vor langer ZeitPHP: moin moin,
ich habe ein kleines formular script geschrieben... soweit funktioniert es auch, nur allerdings wollte ich, dass wenn man auf den button zurücksetzen klickt, dass der inhalt der angelegten datei die dann erzeugt wurde auch gelöscht wird, nur der inhalt nicht die ganze datei... mit unlink funzt das nicht, da ich ja nicht die ganze datei löschen möchte, sondern nur das, was der "user" eingegeben hat.
von Mario
Fürs Leeren der Datei würde ich einen Dateimodus wählen, der den Dateizeiger an den Anfang setzt und dann etwas in die Datei schreiben lassen. Wenn es nicht mit einem leeren String funktioniert, notfalls ein Leerzeichen.
vor langer ZeitPHP: Hallo
Ich hätte da ne Frage. Ich bräuchte 5 verschiedene Zufallszahlen in einem Array. Das mit den Zufallszahlen kenne ich (rand, mt_rand) doch wie ich es schaffa am einfachsten 5 verschiedene zu bekommen verstehe ich nicht ganz. vielleicht kani mir jemand helfen.
von Fabian Kaiser
Du musst bevor du die Zufallszahlen ins Array schreibst überprüfen, ob sie schon im Array vorhanden sind. Der Befehl dazu nennt sich <a href="http://de3.php.net/manual/de/function.in-array.php" target="_blank">in_array</a>.
vor langer ZeitPHP: Hallo, Claudia.
Ich habe mit Hilfe einer deiner Tutorials ein Formular gecoded, das Daten in meine MySQL Datenbank eintragen kann. Funktioniert alles super, nur ein Problem habe ich: Wenn ich die Seite aufrufe, wird automatisch ein leerer Datensatz in die Tabelle eingetragen. Weißt du vielleicht, was ich falsch gemacht habe? Das Formular an sich sieht so aus:
<form method="post">
<p>Titel:</p>
<input type="text" size="17" name="titel">
<p>Inhalt</p>
<textarea cols="80" rows="20" name="inhalt">
Bitte gebe hier den Inhalt ein
</textarea><br />
<input type="submit" value="Absenden">
</form>
Ich vermute mal, es liegt daran, weil ich oben beim form-Tag kein action="" angegeben habe, denn, als ich auf eine Datei verlinkt habe, in der schlicht und ergreifend "Daten wurden abgesendet" stand, hat es gar nichts eingetragen (nur die auto-increment ID des Datensatzes, aber das habe ich nicht beim Formular selbst eintragbar gemacht). Falls es daran liegt, könntest du mir dann sagen, ob ich da auf etwas spezielles verlinken muss oder eben was ich da generell falsch gemacht habe?
Danke schon mal.
von Sascha
So wie das für mich aussieht lässt du die Daten mit der gleichen Datei eintragen, in der auch dein Formular steht. Daher hat es auch nicht funktioniert, einfach eine Datei mit "Daten wurden gesendet" durch das Formular aufrufen zu lassen. In der Datei stand ja eben nur darin, dass die Daten gesendet wurden, aber du hast in dieser Datei nichts in deine Datenbank geschrieben. Das gleiche ist auch schuld daran, dass die Daten auch beim leeren Aufrufen der Formulardatei in deine Datenbank geschrieben werden.
Du kannst das jetzt auf zwei verschiedene Arten lösen:
1. Du arbeitest über eine zweite Datei, die du dann über action aufrufst. Erst in diese zweite Datei schreibst du die Befehle, über die die Datenbank gefüllt wird.
2. Du bleibst bei deiner Ein-Dateien-Variante, prüfst aber, bevor du etwas in die DB schreiben lässt, ob das Formular überhaupt Inhalte besitzt, die es sich hineinzuschreiben lohnen.
Welche der beiden Lösungen du wählst ist in erster Linie eine persönliche Vorliebe. Ich würde dir allerdings in beiden Fällen dazu raten, zuerst die aus dem Formular übernommenen Inhalte zu prüfen, bevor du sie in deine DB schreibst, auch wenn du mit zwei Seiten arbeitest.
vor langer ZeitPHP: Hallo Claudia, ich bin noch Anfänger und habe Probleme mit dem Datum das auf griechisch ausgegeben werden soll. Leider weiß aber nicht wo und wie ich dieses array einfüge.
<?
mysql_query("SET NAMES utf8");
mysql_query("SET lc_time_names = 'ell', 'greek'");
$months = date("n");
$months = array(1=>"&#921;&#945;&#957;&#959;&#965;&#940;&#961;&#953;&#959;&#962;",
2=>"&#934;&#949;&#946;&#961;&#959;&#965;&#940;&#961;&#953;&#959;&#962;",
3=>"&#924;&#940;&#961;&#964;&#953;&#959;&#962; ",
4=>"&#913;&#960;&#961;&#943;&#955;&#953;&#959;&#962;",
5=>"&#924;&#940;&#953;&#959;&#962;",
6=>"&#921;&#959;&#973;&#957;&#953;&#959;&#962;",
7=>"&#921;&#959;&#973;&#955;&#953;&#959;&#962;",
8=>"&#913;&#973;&#947;&#959;&#965;&#963;&#964;&#959;&#962;",
9=>"&#931;&#949;&#960;&#964;&#941;&#956;&#946;&#961;&#953;&#959;&#962;",
10=>"&#927;&#954;&#964;&#974;&#946;&#961;&#953;&#959;&#962;",
11=>"&#925;&#959;&#941;&#956;&#946;&#961;&#953;&#959;&#962;",
12=>"&#916;&#949;&#954;&#941;&#956;&#946;&#961;&#953;&#959;&#962;");
$event = intval ($_GET["feier"]);
$id = intval($_GET["id"]);
if ($id == 0) $id = 1;
$ii = intval($_GET["ii"]);
$sql = "SELECT id,g_name,g_text,vorschau, DATE_FORMAT(feier,'%d. %M') AS feier FROM gialtra_feier WHERE MONTH(feier) = MONTH(NOW()) ORDER BY feier DESC LIMIT 3";
$rs = mysql_db_query($db, $sql, $cid);
?>
<?
while ($row = mysql_fetch_array($rs)) {
$vorschau = $row["vorschau"];
$name = $row["g_name"];
$id = $row["id"];
$event = $row["feier"];
$months = date("n");
?><?echo $event;?><? }; ?>
Ergebnis zu sehen unter www.gialtra.com
von Renate
Du brauchst zwei verschiedene Variablen. Eine für den Monat als Zahl und einen für das Arrray mit allen Monatnamen. Zur Zeit überschreibst du die Variable $months mehrfach. Am besten also zB $this_month = date("n") setzen und das Array bei $months lassen. Ziemlich am Ende überschreibst du die Variable $months dann noch ein zweites Mal. Dieses Mal wieder mit dem aktuellen Monat. Das kannst du dir eigentlich schenken, weil du den ja schon vorher abgefragt hast.
Zum Ausgeben oder in eine Variable schreiben brauchst du dann nur $months[$this_month] und das war's auch schon.
Alternativ kannst du aber auch mit set_locale arbeiten und das Datum dann mit strftime ausgeben. Griechisch solltest du über set_locale(LC_TIME, 'greek'); bekommen.
vor langer ZeitPHP: Hallo,
es funktioniert nicht. Weiß jemand Rat?
Ich habe ein Formular das die Variable $name an mein PHP-Script suche.php schickt. In diesem ist folgender Quell-Text
<?php
$abfrage = "SELECT * FROM Name der Tabelle WHERE eins = '$name'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "<p>$row->id, $row->eins, $row->zwei, $row->drei, $row->vier, $row->fuenf, $row->sechs, $row->sieben, $row->acht, $row->neun";
}
?>
und das Ergebnis ist, dass nix ausgegeben wird. Die Datenbank ist bei Strato. Fordere ich den Inhalt einer bestimmten Zelle an, z.B.
<?php
$abfrage = "SELECT eins FROM Name der Tabelle";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "$row->eins";
}
?>
dann klappt es. Dann werden alle Zellen eins ausgegeben. Kann mir jemand helfen?
von Geronimo
Ich würde mal sagen, du hast ein Problem bei der Übergabe der Variable. Entweder du hast einen Tippfehler im Variablennamen bzw. im Formularfeldnamen, oder du musst mit $_POST['name'] arbeiten. Aber lies dir am besten mal <a href="http://www.schattenbaum.net/php/variable2.php">Variablen übergeben</a> durch.
vor langer ZeitPHP: Hallo Claudia, Deine Seite ist einfach nur Spitze. Sicherlich kannst du mir helfen. Ich möchte das Ergebnis einer IF Abfrage in einer Variablen speichern bzw. ablegen. Wenn du helfen könntest wäre sehr nett.
mfg. andpre
von andpre
Du musst dafür nur in der if-Abfrage (innerhalb der geschweiften Klammern, nicht in der zu überprüfenden Bedingung) der Variable deiner Wahl den gewünschten Wert zuweisen. Wenn du den Wert auch auf anderen als der eigentlichen Seite brauchst bieten sich Sessions an, oder alternativ auch eine dauerhafte Speicherung in einer Datenbank.
vor langer ZeitPHP: Ich habe ein Bestell-Formular und möchte dass der Kunde eine Kopie erhält. Wie geht das?
von Alexander Kerker
Entweder über Mail-Header und Bcc arbeiten, oder zweimal die Mailfunktion aufrufen und einmal die Mail an den Kunden schicken.
Ich würde die zweite Variante verwenden, da du damit auch eine alternative Mail an den Kunden schicken kannst, zB mit persönlicher Anrede.
vor langer ZeitPHP: Ich würde gerne einmal wissen wofür bei der for-Schleife das $i steht. Steht leider nicht in deinem Ratgeber. :-(
Die meisten Programmierer verwenden in for-Schleifen $i als Variablenname für den Zählwert. In meinem Beispiel arbeite ich mit der Variable $counter, da mir das für Anfänger logischer erscheint. Aber egal, wie du die Variable benennst, es ist diejenige, die die Schleifendurchläuft zählt. Du legst in der Vorschleife fest, was der Startwert sein soll, auf welche Bedingung sie überprüft werden soll und dass sie zB hochgezählt werden soll bei jedem Schleifendurchlauf.
vor langer ZeitPHP: Hi ich würde gerne wissen wie ich aus einer datei zeilenweise auslesen kann !!!!
Aus Dateien wird immer zeilenweise ausgelesen, wie du auch unter <a href="http://www.schattenbaum.net/php/datei.php">Dateien</a> nachlesen kannst.
vor langer ZeitPHP: Hallo Claudia,
Es gibt ja Seiten mit einem solchem System:
http://dsforen.de/index.php?index=start (Startseite)
und z.B. http://dsforen.de/index.php?index=impress ist dann das Impressum.
Wie geht sowas? Und wie nennt man das?
Also ich meine das:
"index.php?x=x"
Über eine Antwort würde ich mich Sehr freuen Sven
von Sven
Das sind Variablen, die über Get übergeben werden. Du musst dann auf der Seite überprüfen, ob die übergebene Variable auch tatsächlich von dir vorgesehen ist und kannst dann darüber zB mit <a href="http://www.schattenbaum.net/php/includes.php">Includes</a> die unterschiedlichen Seiten einbinden.
vor langer ZeitPHP: Hi Claudia, wie kann ich eine Variable in ein Array zerteilen? Also ich will z.b $zahl=385 in einem array stehen haben, aber nicht als ganzes, sondern nach den Ziffern aufgeteilt: $Stellen[3,8,5].
Das funktioniert über die Funktion <b>str_split(<i>zu zerlegende Zeichenkette</i>,<i>Anzahl der Zeichen</i>)</b>, wobei der zweite Teil auch weggelassen werden kann, wenn du jeweils nur ein Zeichen haben möchtest. In deinem Fall wäre das also $Stellen = str_split($zahl).
vor langer ZeitPHP: Hallo Claudia!
Ich habe gleich mehrere Fragen:
1.) Kann man nach einem Datei-Upload die Dateien automatisch umbenennen? Ich benutze zum upload dieses Skript: http://www.tutorials.de/forum/php-tutorials/65420-upload-via-formular.html
Allerdings habe ich das Problem, dass sobald zwei Dateien mit gleichem namen hochgeladen werden, die ältere Datei automatisch überschrieben wird. Kann man das verhindern?
2.) Ich habe die max. Dateigröße bereits im Skript angegeben. Leider wird die Datei trotz "Übergröße" temporär hochgeladen, kontrolliert, und erst dann wieder gelöscht und eine Fehlermeldung ausgegeben. Kann man den Upload bereits im vorhinein verhindern?
Mit freundlichen Grüßen, Elias
Dein ersters Problem lässt sich ganz einfach lösen, indem du als Dateiname nicht nur den Namen der ursprünglichen Datei verwendest, sondern zum Beispiel noch einen Timestamp einfügst, das könnte dann so aussehen:
<?php
$timestamp = time();
$name = $timestamp."_".$_FILES['file']['name'];
?>
Für das zweite Problem hat Luca eine Lösung gefunden: Es gibt eine Möglichkeit einen Upload einer "zu großen" Datei zu verhindern: <input type="hidden" name="MAX_FILE_SIZE" value="2097152" /> PHP überprüft automatisch diese POST-Variable bei einem Upload. Bindet man also dieses versteckte Input mit in den Code ein, so checkt PHP erst deren Wert. Sollte die Datei größer sein, so wird der Upload verweigert. (In diesem Fall 2MB) Diese Lösung ist zwar auch nur etwas halbes und nichts ganzes, da der HTML-Code ja vom Benutzer beeinflusst werden kann/könnte, aber schon einmal besser als nichts :-) Mehr dazu auf <a href=" http://www.php.net/manual/en/features.file-upload.post-method.php" target="_blank">php.net</a>.
vor langer ZeitPHP: Gibt es bei den Dateifunktionen (fopen, fclose, ect.) auch eine Funktion, die den bisherigen Inhalt der Datei einlesen und in eine Variable speichern?
von Philipp
Ja, die Funktion nennt sich <a href="http://php.net/manual/de/function.file-get-contents.php" target="_blank">file_get_contents</a>.
Danke für den Hinweis von einem User :-)
vor langer ZeitPHP: Wo liegt denn eigentlich der Unterschied zwischen Switch und If? Funktioniert nicht beides gleich?
von Leon
Jein. Sie funktionieren ähnlich, aber nicht gleich. Switch kann zB nur auf Gleichheit überprüfen (also ==), dafür ist es aber wesentlich praktischer, wenn du mehrere verschiedene Fälle überprüfen magst. if ist halt wesentlich vielseitiger, wird aber häufig unheimlich verschachtelt und unnötig kompliziert, wenn man auf switch verzichten würde.
vor langer ZeitPHP: Hallo Claudia Wenn man den UNIX-Timestamp mit date() formatiert, welche Zeitzone wird dafür verwendet? Gibt es dann immer nur GMT, die Zeit in London, an? Wie kann man das am besten umgehen?
date() greift immer auf die auf dem Server eingestellte Zeitzone zu. Welche das bei dir ist, kannst du entweder über eine PHP-Datei mit dem Inhalt phpinfo(); überprüfen - dort findest du einen Eintrag "Default timezone" -, oder über date_default_timezone_get(). Alternativ kannst du mit date("O") auch den Zeitzonenunterschied zu GMT abfragen.
Wenn du GMT brauchst, gibt es die Möglichkeit mit gmdate() zu arbeiten, oder die Zeitzone mit date_default_timezone_set zu setzen. Nähere Infos finden sich wie immer bei <a href="http://www.php.net" target="_blank">www.php.net</a> :-)
vor langer ZeitPHP: Ich übergebe meine Variablen genauso, wie du es beschreibst. Warum bekomme ich sie dennoch nicht angezeigt?
Sind alle Variablen wirklich exakt gleich geschrieben? Falls ja, ist auf deinem Server vielleicht noch eine ältere PHP-Version installiert. Diese kommt mit den Kurzformen nicht klar und benötigt längere: $HTTP_GET_VARS["Variablenname"] bzw. $HTTP_POST_VARS["Variablenname"] - je nachdem, ob die Variablen via Post oder via Get übertragen wurden. Bei aktuellen PHP-Versionen reichen die Kurzformen $_GET["Variablenname"] bzw. $_POST["Variablenname"].
vor langer ZeitPHP: Wie kann ich Dezimalzahlen verwenden?
PHP verwendet bei Dezimalzahlen anstatt dem Dezimalkomma einen Dezimalpunkt. Du musst also anstatt 3,5 3.5 verwenden. Wenn du die Ausgabe der Zahlen mit Komma haben möchtest, kann dir die Funktion number_format hilfreich sein - das solltest du aber nur verwenden, wenn du mit den Zahlen nicht mehr rechnen möchtest, da es Zahlen in Text umwandelt. Nährere Infos dazu findest du unter <a href="http://www.php.net" target=_blank>www.php.net</a>.
vor langer ZeitPHP: Wie kann ich PHP dazu bringen, gerade und ungerade Zahlen voneinander zu unterscheiden?
Mehr Informationen zu <a href="gerade_zahlen.php">Geraden und ungeraden Zahlen</a> findest du bei den Schnipseln.
vor langer ZeitPHP: Bei mktime klappt plötzlich etwas nicht - was ist da los?
Vermutlich hast du irgendwo in den Werten eine führende Null verwendet. Diese werden von PHP in diesem Fall falsch interpretiert, also bitte <strong>nie mktime(0,0,0,04,12,2007)</strong> verwenden, sondern <strong>mktime(0,0,0,4,12,2007)</strong>.
Weitere Informationen zu dem <a href="mktime_problem.php">Problem mit mktime</a> findest du bei den Schnipseln.
vor langer ZeitPHP: Ich brauche das Osterdatum. Wie berechne ich das?
Wie es berechnet wird kann ich dir auch nicht sagen, aber PHP hat eine nette Funktion um das <a href="osterdatum.php">Osterdatum</a> für dich zu berechnen. Eine Erklärung dazu findest du bei den Schnipseln.
vor langer ZeitMySQL (40)
MySQL: Wie kann ich aus einer TN-Datenbank (Neuzugänge ab einem bestimmten Datum) abfragen ob einzelnen TN keine Kurse zugeordnet sind. Hier handelt es sich um einen (neu) auftretenden Fehler, dem ich auf die Schliche kommen möchte. Leider habe ich keinen Admin mehr, seufz :(
von Izi Hoffmann
Das lässt sich leider ohne genaue Kenntnisse der Datenbankstruktur nicht exakt sagen. Grundsätzlich müsste nur überprüft werden, welche Kursteilnehmer keinen Kurs hinterlegt haben (also einfach, wo nichts in dem Feld Kurs steht). Für mich klingt das aber so, als wäre das nicht eine einzige, "kleine" Datenbank, in der man in einer Tabelle alles führt, sondern als wäre es über mehrere Tabellen aufgeteilt (ist sinnvoll, wenn Teilnehmer mehrere Kurse besuchen können), die dann verknüpft werden. Das funktioniert prinzipiell genauso, nur muss man in der Abfrage die Tabellen verbinden. Das Stichwort für weitere Informationen dazu ist "Join".
vor langer ZeitMySQL: Ich brauche dringend hilfe.
ganz dringent!
Ich habe problem mit sicherheitslücke.
Ich habe einen formular gecodet,und möchte gerne wissen wie man die gut schützen kann.
Kannst du das nicht hier aufschreiben. :D
Unter "Mysql".
Das hier ist ein Anfängertutorial, dass die grundlegende Funktionalität von PHP erklärt und es dir und anderen ermöglicht, sich selbständig vertiefendes Wissen -je nach persönlicher Notwendigkeit - anzueignen. Hilfe zu Sicherheitsthemen bekommst du auf vielen anderen PHP-Seiten im Internet, z.B:
<a href="http://www.php-faq.de/q-security-variablen.html">PHP-FAQ: Variablen überprüfen</a>
und
<a href="http://www.elexpress.de/347/php-und-mysql-sicherheitsmasnahmen/">PHP und MySQL-Sicherheitsmaßnahmen</a>
In diesem Zusammenhang bitte auch auf die Problematik mysql_real_escape_string und magic_quotes achten.
Mit Sicherheit gibt es noch zahlreiche weitere Quellen, die du aufgrund der Dringlichkeit deiner Situation vermutlich bereits selbst entdeckt hast.
vor langer ZeitMySQL: Hallo Claudia,
bei Dir habe ich vor vielen Jahren als Anfänger gelernt, dass man sich das Ergebnis einer MySQL-Abfrage mit mysql_fetch_object() holt.
Heute, nachdem meine Software an 1000en Stellen diesen Befehl enthält, habe ich gelernt, dass von allen Möglichkeit, die PHP hierfür bietet, das die langsamste Variante ist, und dass "Standard" eigentlich mysql_fetch_assoc() ist.
http://phpperformance.de/einen-datensatz-aus-einem-result-set-laden/
http://www.peterkropff.de/site/php/datenbanken.htm
Man lernt nie aus... nur zur Info!
Danke und Grüße
Michael
von Michael Sattler
Hallo Michael,
ich verwende mittlerweile am liebsten mysql_fetch_array, allerdings schlicht aus dem Grund, dass es oft hilfreich ist, bei einzelnen Abfragen die Wahl zu haben, ob ich Daten über Feldnamen, oder als numerisches Array ansprechen möchte. mysql_fetch_array bietet mir da die praktische Möglichkeit, direkt den gewünschten Result-Type anzugeben.
Grundsätzlch ist das einer dieser Punkte, wo ich vor der Entscheidung stehe, was ich empfehlen will, was ich selbst verwende und was anfängertauglich ist (und wenn ich es ändere, woher ich die Zeit nehme, es an allen Stellen zu ändern ;-)) - im Normalfall gehe ich davon aus, dass man mein Tutorial als Einstieg verwendet und setze voraus, dass man sich mit steigender Erfahrung und Anforderung selbst immer weiter mit dem Thema auseinander setzt und für sich selbst die besten Lösungen findet.
Trotzdem natürlich vielen Dank für deinen Hinweis!
vor langer ZeitMySQL: Hey Claudia :D
Habe ne Frage bin schon länger mit php am machen und kenne mich ziemlich gut aus
habe aber denoch nen Proplem
Habe ein Punktesystem auf MYSQL gemacht spallte ist
INT 11 soweit alles gut nur "Benutzer" können das auch in -00000000 komm wie bekomme ich es so hin das der code bei 0 aufhört zu zählen ?
von Phil
Es sollte helfen, wenn du dem Int-Feld zusätzlich das Attribut unsigned zuweist.
vor langer ZeitMySQL: Hallo,
ich habe das mit der Datenbank genau so gemacht wie in deiner Anleitung, meine DatenBank liegt auf meinem Rechner und dort habe ich die Datenbank mit der Tabelle links auch angelegt mit dbconnect.php komme ich auch auf die Datenbank.
Wenn ich aber die Abfrage mit
$abfrage = "SELECT * FROM links WHERE id < 5";
oder irengendeine andere Abfrage dann bekomme ich gar kein Ergebniss?????
Was könnte ich da Falsch machen ?????
Bitte um Hilfe
Schon mal Danke im Vorraus
von Degi
Das ist nur mit diesen Angaben schwierig zu beantworten. Hast du die Datenbank auch gefüllt? Gibst du die Daten aus z. B. über eine while-Schleife? Gibt es eine Fehlermeldung?
vor langer ZeitMySQL: Hallo,
ich bin etwas am verzweifeln mit dem Update.
Wenn ich Daten einlese also in Form von z.B. ?id=6 möchte ich genau diese Spalten
ändern.
Folgenden Code habe ich....
$sql="UPDATE text SET ueberschrift='$_POST[ueberschrift]', text='$_POST[text]'
So wird logischerweise alles geändert.
Wenn ich aber noch folgendes ransetze...
WHERE id='id'
.....wird nichts geändert, auch nicht mit
WHERE id='$id' etc..
Wo liegt mein Denkfehler ?
Vielen Dank
von Rizzo
Wie übergibst du denn die id? Sofern du sie nicht in der Datei direkt fest legst, sondern sie übergibst, musst du die id natürlich auch über eine Post- oder Get-Variable ansprechen, wie du es auch bei der Überschrift und dem Text machst. Ansonsten sehe ich da keinen möglichen Denkfehler.
vor langer ZeitMySQL: Hallo Rizzo hier wieder...
Folgendes Problemchen und ich komme einfach net drauf.
Möchte eine Db erstellen bzw. mehrere gleichzeitig.
Es wird aber immer nur eine erstellt.
Folgender Code:
$sql="CREATE TABLE `adressen` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nachname` VARCHAR( 150 ) NOT NULL ,
`vorname` VARCHAR( 150 ) NULL ,
`akuerzel` VARCHAR( 2 ) NOT NULL ,
`strasse` VARCHAR( 150 ) NULL ,
`plz` INT( 5 ) NOT NULL ,
`telefon` VARCHAR( 20 ) NULL
) ENGINE = MYISAM ;
)";
$sql="CREATE TABLE `adressen2` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nachname` VARCHAR( 150 ) NOT NULL ,
`vorname` VARCHAR( 150 ) NULL ,
`akuerzel` VARCHAR( 2 ) NOT NULL ,
`strasse` VARCHAR( 150 ) NULL ,
`plz` INT( 5 ) NOT NULL ,
`telefon` VARCHAR( 20 ) NULL
) ENGINE = MYISAM ;
";
Wo ist da mein Denkfehler, da immer nur eine erstellt wird (immer die 2.te) ?!?
Gruß
Rizzo
von Rizzo
Ich gehe mal davon aus, dass du am Ende noch mysql_query($sql); ausführen lässt. Dann liegt es daran, dass du für beide create-Anweisungen die gleiche Variable verwendest. Die zweite überschreibst also die erste und beim Ausführen wird logischerweise nur die zweite ausgeführt (und daher auch nur diese angelegt). Du musst also mysql_query auch zweimal aufrufen; entweder jeweils nachdem du die Variable gefüllt hast, oder du verwendest zwei verschiedene Variablen und rufst dann mysql_query zweimal mit den unterschiedlichen Variablen auf. (Oder du lässt die Variablen ganz weg und machst es jeweils direkt.)
vor langer ZeitMySQL: Hallo,
ich habe mittlerweile es hinbekommen das ich per Formular und tinymce-Editor
Daten in die DB bekomme.Also einmal die Ãœberschrift als Link und einen Text(Seite).
Ausgelesen werden sie auch korrekt, der Link wird klickbar als z.B. index.php?id=12 ausgegeben.
Alles schön und gut, nur bekomme ich es nicht hin den einzelnen
Text für die jeweilige id auszulesen wenn ich auf den entsprechenden Link klicke.
Also z.B. Startseite, dann wird nicht nur der Text von der id der Startseite ausgegeben, sondern alle die eingetragen wurden.
$query = "SELECT text From text";
$ergebnis = mysql_query($query);
if($ergebnis) {
$number = mysql_num_rows($ergebnis);
while ($row = mysql_fetch_array($ergebnis)) {
echo "".$row['text']."";
Wie kann ich das nun hier eingeben das nur der jeweilige Text zur Ãœberschrift (Link)
ausgegeben wird?
Das raff ich irgendwie nicht ganz.
Vielen Dank
von Rizzo
Du musst deine Abfrage ändern, so dass sie über eine where-Abfrage nur den gewünschten Datensatz abfragt und nicht alle (wenn du eine id übergibst).
vor langer ZeitMySQL: Hallo
Da mich PHP/MySQL sehr interessiert bin ich nun auch hier gelandet.
Ich habe folgendes Problem:
Ãœber ein Formular sollen url's eingetragen werden die beim auslesen
anklickbar sein sollen.
Einmal der Name (z.B. sonstiges) und natürlich die URL.
Beim auslesen wird der Name auch anklickbar ausgegeben, allerdings
wird immer auf index.php verweist und nicht auf die Url die mit eingetragen
worden ist.
wo liegt der Fehler ?
Hier der Code zum eintragen in die DB:
$sql="INSERT INTO linkliste (link,url) VALUES ('$_POST[name]', '$_POST[url]')";
if (mysql_query($sql)or die ('Fehler bei der Datenbankabfrage')) {
echo"<p>Eintrag erfolgreich</p>";
} else {
echo"<p>Eintrag <b>nicht</b> erfolgreich</p>";
}
mysql_close();
Hier der Code zum auslesen:
$query = "SELECT DISTINCT (link) FROM linkliste ORDER BY id";
$ergebnis = mysql_query($query);
if($ergebnis) {
$number = mysql_num_rows($ergebnis);
while ($row = mysql_fetch_array($ergebnis)) {
echo "<a href=\"".$row['url']."\"> ".$row['link']."</a><br />";
}
}
Vielen Dank
Du fragst bei deiner Abfrage nur die Spalte link ab, dadurch ist der Inhalt der Spalte url im Abfageergebnis nicht verfügbar und du bekommst ihn auch nicht angezeigt.
vor langer ZeitMySQL: Hey :-)
erstmal danke für diese Seite!
Hat mir wirklich sehr geholfen :-)
Mein "problem":
ich lasse mir eine datenbank ganz normal als schleife ausgeben und nach datum sortieren.
in der datenbank sind auch die wochentage eingetragen.
Wie kann ich mir denn beim sortieren ein absatz anzeigen lassen wo dann z.b.
"Mittwoch (100 einträge)"
steht?
Danke schon mal :-)
von Dääni
Ich kenne dafür leider keine wirklich schöne oder simple Lösung - nur eine ziemlich umständliche Variante, die ich nicht empfehlen würde.
Es gibt aber wohl eine Möglichkeit, das über <a href="http://dev.mysql.com/doc/refman/4.1/en/group-by-functions.html#function_group-concat">Group_concat</a> zu erreichen, oder die Daten in der Schleife einfach in ein (mehrdimensionales) Array schreiben zu lassen.
Vielleicht hilft dir das wenigstens bei der weiteren Suche.
vor langer ZeitMySQL: Halli, Hallo
Fehler
MySQL meldet:
#1045 - Access denied for user 'root'@'localhost' (using password: NO)
Verbindung für den controluser, wie er in Ihrer Konfiguration angegeben ist, ist fehlgeschlagen.
phpMyAdmin hat versucht eine Verbindung zum MySQL-Server aufzubauen, jedoch hat dieser die Verbindung zurückgewiesen. Sie sollten Ihre Einstellungen für Host, Benutzername und Passwort in Ihrer config.inc.php überprüfen und sich vergewissern, dass diese den Informationen, welche Sie vom Administrator erhalten haben, entsprechen.
Ich weiss einfach nicht mehr weiter.
Vielleicht bin ich doch zu alt dafür...
von Johannes, der schon 61 ist
MySQL kann die Verbindung zur Datenbank nicht herstellen, weil irgendetwas an den Verbindungsdaten falsch ist. Du musst überprüfen, ob die Daten, die du bei dem Befehl mysql_connect (scheinbar bei dir in der Datei config.inc.php) angegeben hast, korrekt sind.
Welche Daten dort stehen sollten, siehst du normalerweise entweder im Konfigurationsmenü deines Webspaces oder du hast sie per Mail von deinem Hoster bekommen (oder kannst sie erfragen).
Vielleicht hilft es dir auch weiter, dir meine Erklärung zur <a href="http://www.schattenbaum.net/php/verbindung.php">Verbindung mit der Datenbank</a> durchzulesen.
vor langer ZeitMySQL: Hallo, kann man eine MySQL Tabelle auch nach Datum oder Uhrzeit sotieren?
Wenn du eine Spalte hast, in der du Datum und Uhrzeit - am besten in Form eines Timestamps - angegeben hast, kannst du auch danach sortieren.
vor langer ZeitMySQL: Hallo Claudia,
kann man wenn z.B. wenn man ein Gästebuch hat das so sotieren das der neuste eintrag oben erscheint?
Du brauchst eine Spalte mit einem Timestamp. Dann kannst du deine Abfrage nach diesem Feld sortieren lassen. Um jetzt noch den neuesten Eintrag als erstes zu bekommen, musst du als Sortierreihenfolge DESC verwenden. Das sieht dann ungefähr so aus:
SELECT * FROM gaestebuch ORDER BY eintragszeit DESC
Achtung! Ohne "ORDER BY" funktioniert die Angabe "DESC" nicht.
vor langer ZeitMySQL: Hallo Claudia,
ich arbeite gerade an meinem ersten eigenen Forum und dementsprechend gibt es dort ja noch keinen gespeicherten Beitrag den man ausgeben lassen könnte. Jetzt gibt er mir allerdings das hier: "mysql_fetch_object(): supplied argument is not a valid MySQL result resource in..." - kann man das irgendwie absichtlich unterbinden oder muss ich nu damit leben?
von Bianca
Eigentlich sollte diese Fehlermeldung nur kommen, wenn ein Fehler im SQL-Befehl ist. Sind einfach keine Datensätze vorhanden, wird nur nichts ausgegeben. Du könntest aber mit mysql_num_rows die Anzahl der zurück gegebenen Datensätze prüfen und dementsprechend auf eine Nullmeldung reagieren.
vor langer ZeitMySQL: zwei datenbanken verknüpfen
von Uwe
join
vor langer ZeitMySQL: In dem letzten Kapitel von MySQL schreibst du: "Damit haben wir die wichtigsten Funktionen für MySQL durch und schauen uns zum Abschluss an, wie man eine Verbindung wieder beendet." aber danach kommt nix mehr.... Könntest du diese seite noch einfügen?
von Marcel
Stimmt. Verbindung beenden habe ich gelöscht, weil das nicht mehr notwendig ist (oder höchstens in Ausnahmefällen), da PHP das selbständig macht. Muss ich bei Gelegenheit mal entsprechend ändern.
vor langer ZeitMySQL: hallo,
ich hab da ein kleines problem, und zwar:
ich möchte daten in eine tabelle eintrage.
dazu benutze ich folgenden befehl:
mysql_query("INSERT INTO links (url, urlname, name, banner, beschreibung) VALUES ('$url', '$hpname', '$name', '$banner', '$beschreibung')");
die verbindung zur datenbank wurd hergestellt und in der tabelle ein neuer datensatz angelegt. das problem:
zb. in der spalte name wird nicht der wert eingetragen, der in der variabel $name steht, sondern der variabelname wird eingetragen.
so steht in der spalte name jetzt: $name
und in der spalte url steht jetzt: $url
könntest du mir da vielleicht helfen?
mfg Nico
von Nico Grau
Auf Anhieb leider nicht... wie füllst du denn die Variablen mit Werten? Und schau dir eventuell deine Query einmal via echo an, also so:
echo "INSERT INTO links (url, urlname, name, banner, beschreibung) VALUES ('$url', '$hpname', '$name', '$banner', '$beschreibung')";
Manchmal stechen einem dann Fehler geradezu ins Auge ;-)
vor langer ZeitMySQL: Hallo, hier ist noch einmal Florian. Ich habe die Datei jetzt in .php umbenannt, aber es klappt immer noch nicht. Dein Rat geht aber, glaube ich, in die richtige Richtung. Ich wette, es liegt an irgendetwas, dass allen völlig offensichtlich ist, und das deswegen nie erwähnt wird...
Ich schicke dir jetzt noch den gesamten Code:
<html>
<body>
<!-- Eingabe -->
<form
action = "Testlauf.php"
method = "post">
<label>
Name:
<textarea name = "Benutzername" rows = "1" cols = "20">
</textarea></label>
<input
type = "submit"
value = "Speichern"/>
</form>
<!-- Speichern der Eingabe in Datenbank -->
<?php
$_POST["Benutzername"] = $Eingabe;
//Verbindung mit MySQL herstellen
mysql_connect("localhost", "root", "passwort");
//Die Datenbank "Versuch" benutzen!
mysql_select_db("versuch");
//Füge etwas hinzu!
mysql_query("INSERT INTO versuch (Name) VALUES ($Eingabe)");
?>
</body>
</html>
Könnte es irgendetwas mit dem "action = "Testlauf.php" " zu tun haben ? Anstelle von "Testlauf.php" habe ich oft "$_SERVER['PHP_SELF']" vorgeschlagen bekommen. Das verstehe ich aber nicht so ganz, deswegen wollte ich es nicht benutzen. Außerdem klappt es damit auch nicht -.-
Vielen Dank im Voraus, gute Nacht!
von Florian
Bei der Speicherung in die Datenbank verwendest du die Zeile
$_POST["Benutzername"] = $Eingabe;
Damit weist du der Post-Variable Benutzername den Inhalt zu, der in der Variable Eingabe ist. Ich gehe davon aus, dass du es aber genau anders herum möchtest. Bei Variablen wird immer das, was rechts vom Ist-Gleich steht zum Inhalt der Variable, das links vom Ist-Gleich ist der Name der Variable, der du diesen Inhalt geben möchtest.
Das führt allerdings nicht dazu, dass in deiner Tabelle gar nichts eingetragen wird, dadurch würde ein Datensatz erzeugt werden, in dem aber das Feld leer bleibt.
Dein eigentliches Problem ist vermutlich, dass du die Values ohne Anführungszeichen übergibst. Verwende bitte noch in der Query (einfache) Anführungszeichen bei den übergebenen Werten (also bei allem was in der Klammer nach VALUES steht). So:
mysql_query("INSERT INTO versuch (Name) VALUES ('$Eingabe')");
Ansonsten: Das mit der PHP-Endung ist zwar offensichtlich, wird aber durchaus <a href="http://www.schattenbaum.net/php/anfang.php">erwähnt</a> ;-) und nein, es liegt nicht an der <i>action = "Testlauf.php"</i>. Du musst bei action nur auf die Datei verweisen, die durch das Formular aufgerufen werden soll, um die Formulardaten zu verarbeiten. <i>$_SERVER['PHP_SELF']</i> (allerdings über echo ausgegeben) verwendet man, damit die gleiche Datei, in der auch das Formular steht aufgerufen wird, egal wie die heißt. Durch diese Angabe setzt PHP den Dateinamen ein.
vor langer ZeitMySQL: Ich habe, wie in deinem MySQL Beispiel beschreiben, das Feld "spruch" mit Werten gefüllt. Wenn ich diese mit hilfe der While schleife ausgebe bekomme ich folgendes:
Wert1Wert2Wert3
bei der Funktion
while($row = mysql_fetch_object($ergebnis))
{
echo $row->spruch;
}
Ich würde gerne zwischen Wert1 und Wert2 z.b. ein umbruch oder mehr einfügen.
von Marcel
Ich glaube, dir fehlt das grundsätzliche Verständnis für das, was du da eigentlich machst. Überlege dir mal, was PHP aufgrund deiner Anweisungen macht, lies vielleicht auch mal nach, wie eine <a href="http://www.schattenbaum.net/php/while.php">While-Schleife</a> funktioniert, vielleicht verstehst du das Ganze dann.
Alles was innerhalb der Schleife steht, wird mit jedem Schleifendurchlauf einmal ausgeführt. Jede Zeile in deiner Tabelle (die durch die Abfrage abgerufen wird), erzeugt einen Schleifendurchlauf. Wenn in deiner Schleife also nur "echo $row->spruch;" steht, wird auch nur genau das mit jedem Schleifendurchlauf ausgeführt - also die Ausgabe des Wertes in der Spalte spruch. Danach kommt der nächste Schleifendurchlauf, der wiederum genau das ausgibt - du erhältst also genau dein Ergebnis Wert1Wert2Wert3. Wenn du dort also "mehr" haben möchtest, musst du es innerhalb der Schleife zusätzlich angeben.
vor langer ZeitMySQL: Ja das schon aber ich hab z.b. 10 werte in der einen spalte... und ich kann diese nur alle nacheinander ausgeben ohne . und , getrennt :( Habe schon versucht beim speichern der werte z.b. 12423152314 anzufügen und diese zahlen dann später durch <br /> oder ähnlichem zu erstezen... leider erfolglos.
Was ich will ist:
<div>wert 1 von Spalte 1</div><div> wert 1 von spalte 2</div>
<div>wert 2 von Spalte 1</div><div> wert 2 von spalte 2</div> usw.
von Marcel
Wenn du von "10 Werten in einer Spalte" sprichst, meinst du dann du hast 10 Zeilen mit je einem Wert oder du hast 10 Werte in einer einzigen Zeile, einer Spalte?
Wenn du 10 Zeilen mit Werten hast, dann sorgt die while-Schleife dafür, dass jeder Wert einzeln ausgegeben wird. Was du zwischen den einzelnen Werten machst, ist deine Sache. Wenn du einen Zeilenumbruch haben magst, musst du den in der Schleife zusätzlich angeben, ebenso die divs, Leerzeichen, was auch immer. Alles was innerhalb der Schleife steht, wird für jede Zeile deiner Tabelle, die ausgegeben wird, ausgeführt.
Falls du allerdings deine 10 Werte in einer einzelnen Zeile gespeichert hast, musst du entweder was an deiner Datenbankstrutur ändern, oder tatsächlich mit Trennern arbeiten.
vor langer ZeitMySQL: Danke für deine Antwort! Wollte dir als Feedback geben das es geklappt hat und wirklich an dem "ü" lag.
Jetzt habe ich allerdings ein neues Problem^^ Ich möchte die taten aus der spalte "spruch" einzeln ausgeben. Also jeden Wert einzeln in einem <div> {Hier der Wert aus der spalte "spruch"} </div> element oder ähnlichem ausgeben. Also so viele Elemente erstellen bis alle werte ausgegeben sind oder das Limit von dem
"SELECT * FROM links LIMIT 4, 10";
erreicht ist.
Grüße
Marcel
von Marcel
Danke für die Rückmeldung.
Bloß: Wo genau ist dein Problem? Unter <a href="http://www.schattenbaum.net/php/anzeigen.php">Daten ausgeben</a> ist doch erklärt, wie du die Daten aus deiner gewählten Spalte ausgibst. Genau das brauchst du, du musst es nur für deine Bedürfnisse anpassen (also z. B. die divs zusätzlich ausgeben).
vor langer ZeitMySQL: ich versuche gerade einen Eintrag in eine Datenbank per php zu
realisieren. Wenn die Verbindung hergestellt wird, entsteht keine
Fehlermeldung:
dbconnect.php
<?php
$link=mysql_connect("localhost", "web99", "Passwort");
mysql_select_db("usr_web99_1", $link);
if (mysql_errno($link)) echo mysql_errno($link) . ": " .
mysql_error($link). "\n";
echo("connected");
?>
result:
connected
Wenn ich jetzt aber etwas in die Datenbank schreiben möchte, erscheint
folgende Meldung:
<?php
$orte = "no1, no2, no3";
$values = "'$_POST[_001]', '$_POST[_002]', '$_POST[_003]'";
include("dbconnect.php");
$eintrag = "INSERT INTO tabelle ($orte) VALUES ($values)";
if (mysql_errno()) echo mysql_error();
result:
Table 'usr_web99_1.tabelle' doesn't exist
Diesen Fehler kann ich nicht nachvollziehen, da im phpMyAdmin die
Tabelle erstellt wurde und auch vorhanden ist. Einen Schreibfehler kann
ich im Namen nicht finden.
Können Sie sagen, woran das liegt?
Was mir auffällt ist, dass der Aufruf der Query fehlt (also das mysql_query($eintrag)), aber ich gehe mal davon aus, dass das hier weggefallen ist, denn sonst ist mir nicht klar, wie PHP zu der Fehlermeldung kommen kann.
Ansonsten weiß ich aber nicht, woran der Fehler in diesem Fall liegt. Ich hätte auch auf einen Schreibfehler im Tabellennamen getippt - das lässt sich in dieser verallgemeinten Form allerdings auch nicht überprüfen. Sind im Tabellennamen vielleicht Umlaute oder Sonderzeichen vorhanden?
vor langer ZeitMySQL: Hallo, ich bin es mal wieder :D
Bin gerade dabei auf deiner Seite MySQL zu lernen und habe bei dem Punkt "Daten ausgeben" ein Problem.
Anmelden kann sich die Datei auf meiner Datenbank. Die Tabelle heißt "Sprüche" und das Feld "spruch". Das ist mein Quelltext:
-
<?php
$ergebnis = mysql_query("SELECT * FROM Sprüche");
?>
<?php
$ergebnis = mysql_query("SELECT spruch FROM Sprüche");
while($row = mysql_fetch_object($ergebnis))
{
echo $row->spruch;
}
?>
-
Wenn ich das ganze ausgeben will kommt folgende Fehlermeldung:
-
<b>Warning</b>: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in <b>/mnt/webb/71/67/52608167/htdocs/my-facebook-likes/test.php</b>
-
ab Zeile 20 Steht:
-
while($row = mysql_fetch_object($ergebnis))
{
echo $row->spruch;
}
?>
-
von Marcel
"Supplied argument is not a valid MySQL result resource" heißt, dass deine Abfrage der Datenbank einen Fehler beinhaltet. Die Fehlermeldung wird für Zeile 20 ausgegeben, weil du dort auf die "result resource" also die Variable <i>$ergebnis</i> zugreifen möchtest. Für dich heißt das also: Du musst nicht schauen, was in Zeile 20 falsch sein könnte, sondern was an der Abfrage / dem Inhalt der Variable <i>$ergebnis</i> falsch sein könnte.
Ich vermute mal, dass der Fehler in deinem Fall an dem Umlaut im Tabellennamen liegt. Probiere mal, den Tabellennamen in einfache Anführungszeichen zu setzen, oder ihn in Sprueche zu ändern (ich würde letzteres machen).
Abgesehen davon führst du übrigens zwei Abfragen aus, die du in der gleichen Variable speicherst, wobei die zweite gar keinen Sinn macht, da die erste ja bereits alle Spalten abfragt.
vor langer ZeitMySQL: Hallo Claudia, also ich habe folgendes problem ich gebe die daten über ein formular in die datenbank. Wenn ich die tabelle dann aufruffe ist ein neuer wert drin also id = 3,4,5,6,7 aber die Felder sind leer !!
mein code also sieht wie folgt aus
$eintragen = "INSERT INTO links
(url, urlname, name, beschreibung)
VALUES
(" . mysql_real_escape_string($_POST['url']) . ", " . mysql_real_escape_string($_POST['urlname']) . ", " . mysql_real_escape_string($_POST['name']) . "," . mysql_real_escape_string($_POST['beschreibung']) . ")")
$eintragen = mysql_query($eintrag) or die (mysql_error());
if($eintragen == true)
{
echo "Eintrag war erfolgreich";
}
else
{
echo "Fehler beim Speichern";
}
Du führst die Query mit der Variable <i>$eintrag</i> aus, deine Abfrage schreibst du aber in die Variable <i>$eintrag<b>en</b></i> - das kann also nicht funktionieren.
PS: Wenn du mysql_real_escape_string verwendest, achte bitte darauf, ob dein Server magic_quotes benutzt. Sollte er das nämlich machen, wirst du fehlerhafte Einträge bekommen, wenn du die Post-Daten direkt in mysql_real_escape_string jagst, da durch magic_quotes + mysql_real_escape_string alles doppelt escaped wird.
vor langer ZeitMySQL: Moin Claudia XD
Wie kann man wenn man eine normale mysql-Abfrage durchgeführt hat, zählen ob und wenn ja wie viele Werte ausgegeben werden.
von Herry
Hi Herry, <a href="http://de.php.net/manual/de/function.mysql-num-rows.php">mysql_num_rows</a> hilft dir weiter. Einfach die Variable, in der dein Abfrageergebnis gespeichert sind als Wert übergeben, also so: $anzahl_datensaetze = mysql_num_rows($ergebnis_der_abfrage). Das "ob und wenn ja wie viele" kannst du dann mit einer if-Schleife dazu setzen, indem du überprüfst, ob die Anzahl größer als 0 war.
Wenn die Abfrage einen Fehler verursacht hat, wirft mysql_num_rows ebenfalls einen Fehler im Stil von "supplied argument ist not a valid result resource".
vor langer ZeitMySQL: servus
ich finde man sollte im bereich MySQL noch einen punkt über SQL Injections hinzufügen
bzw hier
http://www.schattenbaum.net/php/insert2.php
integrieren
naja aber warum ich eigentlich schreibe
ich bin auf der suche nach einer guten anleitung wie ich mit
mysql_real_escape_string
arbeite
lg simon
von Simon
Das mit mysql_real_escape_string ist so eine Sache... Es kollidiert mit magic_quotes, die auf den meisten Servern installiert sind, daher müssen diese eigentlich davor entfernt werden. Außer, sie sind eben nicht aktiv, was man also zunächst überprüfen muss und sie nur in diesem Fall deaktiviert, bevor man dann mysql_real_escape_string dazu wirft.
Für Anfänger - und für die ist dieses Tutorial ja gedacht - also reichlich umständlich. Der Vorteil ist aber, dass magic_quotes den gleichen Schutzmechanismus darstellen, wie mysql_real_escape_string. Sie ersetzen aber ein paar Zeichen weniger.
Ich rätsle schon eine ganze Weile, wie ich das am besten einbringe, auch weil mit PHP 6 die magic_quotes nicht länger vorhanden sein werden, was dann noch mehr Umstellungen mit sich bringen wird.
Ansonsten ist zu mysql_real_escape_string nicht viel zu sagen: Wenn du magic_quotes aktiv hast, musst du sie vorher mit stripslashes entfernen, danach musst du jede Variable, durch mysql_real_escape_string bearbeiten lassen, bevor du sie für Abfragen verwendest. Das war's schon.
vor langer ZeitMySQL: Hallo Claudia,
ich arbeite gerade an einem Script für eine Registration/Login und habe folgendes Problem: Ich möchte gerne dass das Script überprüft ob Benutzername und Email schon vergeben sind. Habe einmal $sql = "SELECT * FROM users WHERE UserName LIKE '$user'"; mit dem query und einem mysql_num_rows und das ganze nochmal als $sql2, $query2 und $row2 und seitdem gibt mir das Script weder einen Fehler noch etwas anderes aus, es macht einfach gar nichts mehr ... Kann man nicht 2 Sachen gleichzeitig über eine Abfrage machen?
Kannst Du mir da vielleicht helfen? Wäre super :)
Danke schon mal für deine Mühe und deine Zeit.
PS: Sry, für meinen Roman ...
von Bianca
Wenn du beides über eine Abfrage lösen möchtest, musst du nur die Bedingungen mit OR verknüpfen, also "SELECT * FROM users WHERE UserName LIKE '$user' OR email LIKE '$mail'".
Warum dein Script allerdings bei zwei Abfragen gar nichts macht, verstehe ich nicht. Eigentlich ist das auch möglich und es sollte im Zweifel zumindest eine Fehlermeldung ausspucken.
vor langer ZeitMySQL: Wie kann ich in MySQL die Tabelle(n) so konstruieren, dass für jeden neuen Nutzer, ein neuer Datensatz in einer ander Tabelle erstellt wird?
Also in tabelle:user registriert sich ein user mit der id 1, dann sollte in tabelle:usernew ein datensatz mit der selben id erstellt werden.
Bitte um Antwort
von Herry
Es gibt die Funktion <a href="http://de.php.net/mysql_insert_id">mysql_insert_id</a>, damit kannst du die id abfragen, die beim letzten Insert (in deinem Fall in der Tabelle user) verwendet wurde. Danach musste du nur noch einen weiteren Insert für die zweite Tabelle (usernew) machen und als id den Wert wählen, den die erste Tabelle dir gegeben hat.
Wichtig dabei ist aber, dass du genau darauf achtest, beim Löschen auch aus beiden Tabellen die Datensätze zu löschen, sonst hast du irgendwann das Problem, dass der Datensatz, den du eintragen möchtst in der 2. Tabelle schon vorhanden ist.
vor langer ZeitMySQL: Ich habe eine Datenbank mit der Spalte value. In dieser stehen z.B. mehrere gleiche Namen wie Claudia drin und in einer anderen Zeile Ihr Wohnort Berlin. Auch in der Spalte value.
Wie kann ich abfragen das ich nur die Claudia ausgegeben bekomme die auch aus Berlin kommt?
Folgendes habe ich wie im Tutorial versucht. Klappt leider nur ohne die Stadt:
<?php
$abfrage = "SELECT * FROM links WHERE value LIKE 'Claudia Unkelbach' AND value LIKE 'Berlin";
?>
Dankeschön im voraus!
Das kann so nicht funktionieren. Wenn du den Wohnort in einer anderen Zeile hast, hast du ja gar keine Claudia, die aus Berlin kommt. Du hast dann values mit "Claudia" und values mit "Berlin", aber es gibt keinen Datensatz, in dem beides verbunden ist.
Um das hinzubekommen musst du einen Datensatz haben, der beides beinhaltet. Dafür wiederum brauchst du dann aber zwei verschiedene Felder für diese Inhalte. Also zB eine Spalte "Name" und eine Spalte "Wohnort". Dann kannst du beide Spalten abfragen.
Grundsätzlich wäre es für dich vermutlich hilfreich, dich mit der (sinnvollen) Struktur von Datenbanken zu beschäftigen. Ich habe allerdings leider keinen hilfreichen Link für dich.
vor langer ZeitMySQL: hi wie kann man bei einem login server die db (das script) so schreiben das er sie alle paar sekunden von selbst neu einliest?
sprich ich erstelle in der db einen neuen account und muß bis jetzt den den login server immer neu starten damit die änderungen wirksam werden . und das nervt thx schon mal für ne antwort ps hab schon klein weinig was mit php gemacht bin aber trotz allem noch ein noob!!!!!!!!!!!!!1
von Maik
Ich kann mir nicht vorstellen, warum du den Loginserver jedes Mal neu starten musst. Eigentlich funktionieren MySQL-Datenbanken so, dass du die Daten hineinschreibst und bei der nächsten Abfrage sind diese vorhanden. Du musst halt danach nur die Abfrage neu starten. Wenn das bei dir so gar nicht funktioniert, solltest du dich mal an deinen Hoster wenden.
vor langer ZeitMySQL: Hallo Claudia,
bastel gerade an der php abfrage für die Wbesite unserer Stiftung. Hinbekommne habe ich das mir die Liste der Stifter/innen begninnend mit den neuesten Stiftern angezeigt wird, incl Prüfung das nur die angezeigt werden, die zugestimmt haben, dass ihr Name als Stifter/in auf der Website genannt wird. Gescheitert bin ich daran wie ich es hinbekommen das die chronologische Liste auch die Stifter enthält die nicht genannt werden möchten, dann jedoch anstelle des Vornamens "Stifter/in" und anstelle des Namens "möchte nicht genannt werden" in der Liste angezeigt wird.
Würden uns riesig freuen wenn Du mir helfen könntest.
Dank voraus
Peter
von Peter
Ich nehme an, du hast zur Zeit eine MySQL-Abfrage, die überprüft, ob die Stifter genannt werden wollen oder nicht und direkt nur die ausgibt, die zugestimmt haben. Ich würde die Abfrage so verändern, dass alle ausgegeben werden und in der Ausgabe-Schleife eine zusätzliche if-Abfrage einsetzen, mit der du überprüfst, ob eine Nennung gewünscht ist oder nicht. Wenn sie gewünscht wird, lässt du dann ganz normal den Namen ausgeben und wenn nicht, eben nur den Text "möchte nicht genannt werden".
vor langer ZeitMySQL: Hallo,
ich wollte gerade eine mySQL datenbank aufbauen,
es sollen darin mehrere personen eintragen können.
Als erstes habe ich die ID, die wird ja automatisch vergeben, danach kommt der "Ort"
da gibts im HTML Formular ein auswahlfeld, wo man den entsprechenden "wert" aus der Tabelle auswählen kann. und dann kommen noch n paar sachen.-
Nun Mein Problem,
wenn man versucht mehrere sacehn am selben Ort anzulegen, wird das nciht in die Tabelle eingetragen, Was mache ich falsch.
Taucht das Problem bei jedem Ort auf, den du mehrmals verwenden magst, oder nur bei (einem) bestimmten? Wenn es bei jedem vorkommt, würde ich sagen, dass du das Ort-Feld in der Tabelle als unique angelegt hast.
vor langer ZeitMySQL: Hey, ich habe ein Problem. Ich bin in Sachen SQL und MySql noch ein bissche unerfahren. Ich arbeite gerade ein einem Newssystem und komme nicht bei den Kommentaren weiter. Ich weiß nicht wie man die passend zur den News in die Datenbank speichert. In deinem Ratgeber ist es ja mit UPDATE beschrieben, aber mit einer festen id. Ich wollt jetzt fragen wie man es dynamisch machen kann, oder ob ich in die falsche Richtung denke.
Vielen Dank!
Einfach indem du statt id='festerWert' eine Variable verwendest, also id='$variablenname'.
vor langer ZeitMySQL: Ich hätte mal eine Frage: Kann man mit PHP auch DIV's (z.B. mit einer bestimmten ID) zählen und das dann darstellen?
z.B.: alle DIV's zählen mit der ID 'kommentar', dann anzeigen: "es gibt 5 Kommentare"
Vielleicht geht das ja auch anders..., ich würde gern darstellen lassen, wie viele Kommentare schon geschrieben wurden...
(Falls ich jetzt totalen Mist erzähle, weil das nicht funktionieren kann oder so, nicht wundern..., bin Neuling :-D)
von Max
Also grundsätzlich ist das schon möglich - indem du den Quelltext von PHP durchsuchen lässt und die Vorkommen des div-Befehls verbunden mit der ID prüfst. Erscheint mir aber für das, was du vorhast, etwas übertrieben.
Normalerweise löst man das Zählen der Kommentare über die Abfrage der Datenbank, die auch die Kommentare auswählt. Mit mysql_num_rows kannst du dann prüfen, wieviele Zeilen, sprich Datensätze deine Abfrage erhielt, also zB so:
<?php
$abfrage = mysql_query("SELECT * FROM kommentartabelle WHERE artikelid = '$id_des_artikels'");
$anzahl = mysql_num_rows($abfrage);
?>
Mehr dazu verrät dir auch (wie immer) <a href="http://php.net/manual/en/function.mysql-num-rows.php" target="_blank">php.net</a>.
vor langer ZeitMySQL: Ich habe zwei Tabellen mit Feldern, die sich teilweise überschneiden. Gibt es einen SQL-Befehl damit ich die relevanten Daten transferieren kann? Sowas wie INSERT INTO......IGNORE.... Oder gibt's ne andere Möglichkeit zum Datentransfer?
Ich könnte die Daten zwar per Hand umschreiben, aber bei über 2000 Sätzen ist das ne Mänge Arbeit. Ich hoffe du verstehst was ich meine und kannst mir vielleicht helfen.
Ich würde andersherum arbeiten und einfach nur die Daten, die du brauchst, als SQL-Statements exportieren (da gibt's eine Funktion in phpMyAdmin) und das dann in der anderen Tabelle importieren.
vor langer ZeitMySQL: hi - kann ich order by auch verkehrt chronologisch?
gruss, beat rueedi / beatrueedi.ch
von beat rueedi
Ja, sicher. Du brauchst halt ein Feld mit dem Timestamp und verwendest dann zusätzlich zum ORDER BY noch DESC als Sortierung. Steht bei den <a href="http://www.schattenbaum.net/php/abfrage2.php">Abfragen</a>, wie du es genau verwendest.
vor langer ZeitMySQL: Mein INSERT funktioniert einfach nicht. Was ist da los?
MySQL ist beim Insert ziemlich kleinlich. Ein falscher Spaltenname (nicht vorhanden oder falsch geschrieben) oder auch zuviele oder zuwenig Werte, die übergeben werden bringen MySQL dazu, gar nichts einzutragen. Wenn dein Insert also nicht klappt, schau am besten zuerst alles durch, ob du dich vielleicht irgendwo vertippt hast (vergleiche die Spaltennamen zur Sicherheit auch noch einmal mit denen in der Datenbank - auch wenn du dir dort sicher bist, dass sie so heißen, wie du sie genannt hast!) und schaue dann, ob du die gleiche Anzahl an Werten übergibst, wie du Spalten angegeben hast, vielleicht fügst du ja einen Wert doppelt ein oder Ähnliches.
vor langer ZeitMySQL: Wie kann ich mehrere Werte auf einmal in die Datenbank einfügen?
Um <a href="mehrere_daten_einfuegen.php">mehrere Daten</a> zugleich einzufügen findest du etwas bei den Schnipseln.
vor langer ZeitMySQL: Kann ich beim Suchen auch Platzhalter verwenden?
Auch <a href="platzhalter.php">Platzhalter in mySQL</a> findest du bei den Schnipseln.
vor langer ZeitMySQL: Kann ich meine Tabelle kopieren? Oder umbenennen?
Ja, auch das ist möglich. Mehr Informationen zum <a href="tabelle_kopieren.php">Kopieren einer Tabelle</a> wie immer bei den Schnipseln.
vor langer ZeitSchnipsel (14)
Schnipsel: Hallo Claudia,
ich finde Deine wirklich klasse!
Jetzt habe ich versucht, ein paar Teile zu übernehmen/zusammenzufügen und anzupassen. Leider klappt das nicht ganz und ich weiß einfach nicht, wo der Fehler liegt. :(
Ich möchte, daß sowohl an festen, wie auch an beweglichen Feiertagen, ein include ausgegeben wird. Mit den festen Feiertagen geht es, aber bei der Berechnung der beweglichen Feiertage ist wohl irgendwas nicht richtig. Da ich nicht rausfinde, wo der Fehler ist, weiß ich auch nicht, wie ich auf eine Lösung kommen soll. Immer wieder glaube ich, daß ich den Fehler gefunden habe, aber dann funktioniert es trotzdem nicht.
Da ich glaube, daß es keine große Sache ist für jemanden, der sich so gut auskennt wie Du, will ich Dich fragen/bitten, daß Du Dir das mal anguckst und mir vielleicht helfen kannst?!?!
So sieht es aus:
<?php
$day = date("d");
$month = date("m");
$year = date("Y");
$timestamp = time();
$heute = date("d.m.Y",$timestamp);
$tage = 86400;
$strtotime = date("d.m.Y");
$ostern_timestamp = easter_date($year);
$ostersonntag = date("d.m.Y",$ostern_timestamp);
// Feste Feiertage
// Neujahr
if($month=="01" and $day=="01") {include("menu2/neujahr.php");}
// 1. Mai
if($month=="05" and $day=="01") {include("menu2/erstermai.php");}
// Heiliger Abend
if($month=="12" and $day=="24") {include("menu2/weihnachten.php");}
// Silvester
if($month=="12" and $day=="31") {include("menu2/silvester.php");}
// Flexible Feiertage
// Ostern
if($heute==date("d.m.Y", $erster_advent)) {include("menu2/ostern.php");}
?>
Wäre echt klasse, wenn Du mir helfen könntest!
Viele Grüße
Angela
von Angela
Grundsätzlich der Tipp, dir für bewegliche Feiertage mal mein <a href="http://www.schattenbaum.net/php/adventssonntage.php">Beispiel zur Berechnung von Adventssonntagen</a> anzuschauen.
In deinem Beispiel fällt mir auf, dass du bei Ostern das aktuelle Datum mit dem vom ersten Advent vergleichst, ansonsten sollte das so funktionieren.
vor langer ZeitSchnipsel: Wie kann so eine Angabe programmieren wie bei Ihnen auf der Webseite ("Derzeit online:") ?
Werden da IPs gezählt?
Würde mich über eine Antwort freuen!
von Leonard
Nein, Sessions. Ich lasse die Sessions in ein festgelegtes Verzeichnis schreiben und lese dann die Anzahl an Dateien (= Sessions) in diesem Verzeichnis aus. Um die Genauigkeit etwas zu verbessern habe ich außerdem die Lebensdauer dieser Sessions etwas reduziert. 100 %ig stimmen die Angaben aber natürlich dennoch nicht.
vor langer ZeitSchnipsel: Liebe Claudia,
bei den PHP Schnipsel hast Du erwähnt daß man CSS Stylesheets mit PHP erstellen kann. Was kann man damit machen - mir fällt irgendwo keine Anwendung dazu ein.
von Thomas
Ich verwende es, um mir das Arbeiten mit Farbschemas zu vereinfachen. Dafür benutze ich Variablen statt Farbcodes und muss dann nur noch die Variable verändern und nicht jedes Vorkommen der gewünschten Farbe einzeln anpassen.
Daneben habe ich mit dem automatischen Anpassen aller Farben, wenn man nur einen Grundfarbton angibt, gearbeitet. Das funktioniert aber nicht 100 %ig - je nach Farbe ist das Ergebnis wirklich gut oder grottenschlecht.
vor langer ZeitSchnipsel: Hallo Claudia ich habe den Artikel über die Umfrage gelesen und möchte wissen wie man die auswertung macht.
von EvilTux
Die Antwort dazu findest du bei der <a href="http://www.schattenbaum.net/php/umfrageergebnis_grafisch.php">grafischen Auswertung der Umfrage</a>.
vor langer ZeitSchnipsel: Also ich würde gerne, wenn man die Zahl 5 eintippt das dann 1+2+3+4+5 gerechnet wird. Und im moment habe ich als Schleife:
$eingabe = $_POST[zahl] ;
$i = 1;
for ($i="1"; $i<=$eingabe ; $i++ )
{
}
Aber weiter komm ich einfach nicht.
Naja, du musst schon auch eine Anweisung schreiben, was in der Schleife getan werden soll. Die Schleife sorgt nur dafür, dass eine Anweisung wiederholt ausgeführt wird. In deinem Fall brauchst du also:
<pre><?php<br>$ergebnis = 0;<br>for($i = 1; $i <= $eingabe; $i++)<br>{<br> $ergebnis = $ergebnis + $i;<br>}<br>echo $ergebnis;<br>?></pre>Die Variable $ergebnis setzt du zu Beginn auf 0 (funktioniert auch, wenn du es nicht machst, aber es ist ordentlicher, sie festzulegen), in der Schleife lässt du sie dann jeweils neu berechnen, indem du zu dem Wert in der Variable $ergebnis noch den Wert der Variable $i hinzuzählst, die ja durch die Schleife automatisch jeweils um 1 erhöht wird. Somit hast du im ersten Schleifendurchlauf also die Rechnung 0 + 1 = 1, damit ist dann die Variable $ergebnis auf 1. Beim nächsten Schleifendurchlauf wird $i durch die Schleife um eins erhöht und steht somit auf 2. Dieses Mal wird also gerechnet 1 + 2 = 3. Im nächsten Durchlauf dann 3 + 3 = 6, dann 6 + 4 = 10 und so weiter.
vor langer ZeitSchnipsel: Guten Tag, Claudia!
Mich würde Mal interessieren, wie ich in PHP eine Zufallsentscheidung mit Wahrscheinlichkeiten realisiere. Das Programm soll also zwischen mehreren Möglichkeiten zufällig eine wählen, allerdings solle jede Möglichkeit eine bestimmte Wahrscheinlichkeit haben z.B. 30%, 10%, 50% etc. Außerdem sollte diese Entscheidung nur ein Mal pro Tag getroffen werden, aber das ist eine andere Geschichte...
von Sascha
Ohne Anspruch auf eine korrekte Lösung, aber ich würde eine Zufallszahl von 1 bis 100 bestimmen lassen und dann überprüfen, ob die Zahl zwischen 1 und 30 liegt um auf 30% zu bekommen, 31 bis 40 für 10% und immer so weiter.
vor langer ZeitSchnipsel: Huhu Claudia, ich habe mir ein login mit php und mysql gebaut(mit hilfe von scripten aus dem netz) und habe folgendes Prob. Wenn man sich ausloggt gibt meine logout.php aus sie sind eingeloggt und erst beim aktualisieren der seite schreibt er sie sind nicht eingeloggt.
Sowas passiert häufiger. Die genauen technischen Gründe dafür, kann ich dir nicht erklären, aber es hilft, wenn du von der Logout-Seite direkt weiter leitest, dadurch wird nach dem Ausloggen noch einmal eine neue Seite geladen und dann erkennt PHP korrekt, dass die Session beendet wurde.
Das funktoniert am besten über header("Location: adresse_der_seite.php"); - danach mit exit; alle weiteren Ausgaben unterbinden. Vor der header-Anweisung darf keine Ausgabe an den Browser erfolgen (also kein echo, print oder ähnliches, kein <html> davor usw.).
vor langer ZeitSchnipsel: Gilt dass, was du im CSS in PHP Schnipsel sagst, auch für JavaScript ect.?
von Philipp
JavaScript ist nicht so ganz mein Fall und ich mache nur selten etwas damit, daher kann ich es nicht mit Bestimmtheit sagen, glaube aber eher nicht, da es im Gegensatz zu PHP ja nicht schon vom Server geparsed und damit "fertig" an den Browser geliefert wird, sondern erst vom Browser ausgeführt werden muss. Aber probiere es doch einfach mal aus.
vor langer ZeitSchnipsel: Hallo Claudia. Bei deinem Schnipsel zum Thema CSS in PHP, dort hab ich eine kleine Frage.. Kann man dann später in der HTML bzw. PHP Datei diese format.php datei als CSS-Styleresource angeben?
von Philipp
Ja, klar, bringt ja sonst gar nichts.
vor langer ZeitSchnipsel: Gibt es solche Platzhalter wie bei MYSQL auch für PHP? Weil ich gerne überprüfen möchte ob etwas darin vorkommt aber da ist es halt so das If doch nur das Wort nimmt und auch überprüft ob z.b. 'Bla Blubb' da steht und wenn ich dann nach Blubb überprüfen lasse wird es doch nicht gefunden wegen dem 'Bla' Davor oder?
von Leon
Stimmt, das würde nicht gefunden werden. Aber nein, so etwas wie die Platzhalter in MySQL gibt es in PHP nicht direkt. Du kannst aber zB über die Funktion substr_count arbeiten. Die überprüft, wie oft ein (Wort-)Teil in einem String vorkommt. Wenn der Rückgabewert also größer als 0 ist, wurde dein Teilstring gefunden. Dann musst du das nur noch über if prüfen.
In deinem Fall wäre das dann also if(substr_count($variable, "Blubb") > 0)...
vor langer ZeitSchnipsel: Was sollte ich für meinen Blog verwenden wenn ich darauf hinweisen will das man sich erst Registrieren/Einloggen soll verwenden?
von Leon
Ich gehe mal davon aus, dass es dir darum geht, zu überprüfen, ob jemand bereits eingeloggt ist. Das ist eine ganz einfache Überprüfung einer einzelnen Bedingung, dafür reicht if absolut aus. Die Sache mit dem Einloggen und dann auch eingeloggt bleiben erfordert Sessions. Sorry, deine Frage ist ein bisschen sehr allgemein, da ist es schwierig, eine konkrete Antwort darauf zu geben.
vor langer ZeitSchnipsel: ähm ja weis garnich wie ich anfangen soll :) ich hab eine eigene homepage. und habe bei einer anderen gesehen, das man den layout code nicht bei jeder unterseite hinzufügen muss. sondern das die unterseiten nur den inhalt enthalten der dann beim klicken im menü im layout angezeigt wird. was den layoutwechsel sicher sehr erleichtert. Doch leider weis ich nicht wie das geht :( kannst du mir helfen ?!
von Maike
Das was du suchst, sind <a href="http://www.schattenbaum.net/php/includes.php">Includes</a>.
vor langer ZeitSchnipsel: Hallo Claudia, Deine Seite ist sehr hilfreich und hilft mir sehr im Unterricht als Pauker!!! :) Leider schaffe ich es nicht, Text und Grafik gleichzeitig aus einer Datenbank auszulesen und in einer Tabelle darzustellen ??? kannst du mir helfen?? Büdde
Nur mit den Infos ist das schwierig. Die Ausgabe von <a href="http://www.schattenbaum.net/php/daten_formatiert_ausgeben.php">Daten als Tabelle formatiert</a> ist bei den Schnipseln erklärt, wenn du aber die Grafiken tatsächlich als Grafik in deiner Datenbank gespeichert hast, wird das etwas komplizierter, weil du dann über Datei-Funktionen arbeiten musst.
vor langer ZeitSchnipsel: Hallo Claudia Was ist die beste Möglichkeit um ein Guestbook zu programmieren? Soll ich das mithilfe von MySQL hinbiegen?
Ja, MySQL ist dafür mit Sicherheit die beste Lösung. Dazu noch ein schönes Formular, überprüfen der übergebenen Variablen und seitenweise Ausgabe der Daten... ist ein schönes Projekt, um sich in MySQL hineinzufuchsen.
vor langer ZeitSonstiges (28)
Sonstiges: Hallo!
Zu allererst mal vielen Dank für diese wirklich informative Seite! :)
Sie hat mir schon sehr weitergeholfen.
Dennoch habe ich noch eine unbeantwortete Frage zum Thema PHP bzw. dem Befehl Include:
Wie muss ich vorgehen, wenn ich per Link den Inhalt eines DIV-Containers ändern möchte?
Und wäre es sogar möglich mit 1 Link 2 verschiedenen DIV-Containern einen neuen Inhalt zuzuweisen?
Mein Beispiel:
Ich habe ein Hauptmenü in meiner header.php Datei.
In diesem Menü sind 4 Links.
In meiner content.php Datei habe ich nun 2 DIV-Container nebeneinander.
Der linke DIV-Container soll als Untermenü fungieren, der rechte DIV-Container für den eigentlichen Inhalt.
Klicke ich nun im Hauptmenü (welches sich im Header befindet) z.B. auf den Link Info, dann soll (sofern möglich) im linken DIV-Container das entsprechende Info-Untermenü aufgerufen werden, im rechten DIV-Container gleichzeitig ein Standardinhalt.
Anschließend soll das Untermenü im linken DIV-Container genutzt werden können, welches sich dann lediglich auf den rechten DIV-Container auswirkt.
Wie müsste ich vorgehen, damit ich per Link (z.B. www.beispiel.de/index.php?info) die Include Funktion beeinflussen kann?
Vielen Dank im Voraus! :)
von Michi
PHP hat mit dem Ändern eines DIV-Containers nichts zu tun. Include bewirkt nur, dass beim Abruf der Seite der Inhalt einer Datei in einer anderen eingebunden wird. Um etwas mit PHP zu ändern musst du immer mit dem Server kommunzieren (da der PHP-Interpreter am Server arbeitet), d.h. im Normalfall, du rufst eine neue Seite auf, die dann vom Server übermittelt wird.
Das, was du machen möchtest, erfordert den Einsatz von JavaScript bzw. AJAX.
vor langer ZeitSonstiges: Hallo Claudia, ich habe eine frage die wie ich denke etwas mit Links zu tun hat. Ich würde gerne wissen wie oder ob es möglich ist mit einem Link die Seite runter zu scrollen. Ich denke es ist möglich da viele Seite das für ihr FAQ benutzen und das möchte ich auch machen. Ich hoffe du hast eine Antwort darauf da ich überall geguckt habe und nichts finde.
Ich bin mir nicht sicher, ob ich richtig verstehe, was du meinst, aber mir fallen spontan Anker ein. Das sind einfach in HTML hinterlegt "Sprungmarkierungen" (heißt eben Anker), die dann über Links angesprochen werden können. Hat aber nichts mit PHP zu tun.
vor langer ZeitSonstiges: Hallo,
ich finde es toll, wenn sich jemand die Mühe macht, um anderen etwas beizubringen. Von daher erstmal ein Lob an dich.
Leider sind mir jedoch an verschiedenen Stellen dieser Seite ein paar Schwachpunkte aufgefallen, die hin und wieder dafür sorgen, dass sich PHP-Anfänger falsches Wissen aneignen und somit unsichere Webseiten erstellen. Ich würde mich sehr freuen, wenn du diese Punkte anpassen bzw. erweitern könntest.
>> http://www.schattenbaum.net/php/verbindung.php
Hier verwendest du mysql_* statt mysqli_* oder PDO. Im PHP-Handbuch wird schon seit einiger Zeit davon abgeraten, noch die mysql_*-Funktionen zu verwenden, da sie als veraltet ("deprecated") gelten. (siehe http://www.php.net/manual/de/mysqlinfo.api.choosing.php)
Ich habe zwar den Hinweis zu MySQLi am unteren Rand der Seite wahrgenommen, jedoch ist dieser nicht auffällig genug. Er sollte direkt oben drüber stehen, oder noch besser: einfach mysql_* gegen mysqli_* im kompletten Code austauschen.
Für den Fall einer fehlerhaften Verbindung brichst du das Script komplett ab mit einem die(). Somit ist keine Fehlerbehandlung mehr möglich. Hier empfiehlt es sich, mit trigger_error() einen benutzerdefinierten Fehler zu werfen. Mit einem zuvor registrierten ErrorHandler kann man so den Fehler behandeln (Fehler loggen, Fehlermeldung für den User erzeugen). Warum das ganze mit dem "or die()" überhaupt funktioniert, wird ebenfalls nicht erwähnt, was ich sehr schade finde.
>> http://www.schattenbaum.net/php/abfrage2.php
Du verwendest folgendes Query:
$abfrage = "SELECT * FROM links WHERE name LIKE 'Claudia Unkelbach'";
Du suchst nach einem exakten Namen, ohne Platzhalter. Warum verwendest du LIKE? Es wird nicht erklärt, was LIKE genau macht und wo die Gefahren darin liegen. Das kann sehr schnell zu Fehlern führen, wenn Anfänger schlussfolgern, dass ein Vergleich immer mit LIKE erfolgen muss. Sie verwenden es dann für Logins und schon kann man sich als jeden User einloggen, wenn man Platzhalter als Benutzernamen wählt. Hier wäre also ein Vergleich mit "=" sinnvoller.
>> http://www.schattenbaum.net/php/insert2.php
Ich finde es grob fahrlässig, die Beispiele ohne MySQL-Escaping aufzuzeigen. Auch hier habe ich den Hinweis wahrgenommen. Aber Anfänger überlesen dies schnell, da hier kein Beispiel zu finden ist, wie man es richtig macht. Stattdessen weist du nur drauf hin und verlinkst zum Handbuch. Wenn schon ein Tutorial, dann auch richtig.
Außerdem hat das Escapen von Daten auch noch einen weiteren Grund. Die Daten können schließlich auch ohne böse Absichten Anführungsstriche enthalten. Dann knallt es ebenfalls an allen Ecken und Kanten. Das Escaping ist einfach unverzichtbar, auch wenn es sich um ein Anfänger-Tutorial handelt. PHP und MySQL interessieren sich nicht dafür, ob ein Anfänger den Code schreibt oder ein Fortgeschrittener.
>> http://www.schattenbaum.net/php/delete.php
$loeschen = "DELETE FROM links WHERE id = '3'";
Warum verwendest du Anführungsstriche, wenn die ID doch offensichtlich eine Zahl ist? Andere Datenbanken würden dir hier eine Fehlermeldung geben.
Zusammenfassung:
Bitte nimm es nicht persönlich. Du bist auch nicht die einzige, bei der mir solche Dinge auffallen ;)
Aber wer ein Anfänger-Tutorial erstellt, trägt auch eine gewisse Verantwortung. Anfänger wollen möglichst schnell große Dinge schaffen und ignorieren deshalb Hinweise wie die über SQL-Injections. Insbesondere, wenn sie kein Code-Beispiel auf dem Silbertablett serviert bekommen, wie man es richtig macht.
Woher ich weiß, dass diese Dinge gerne ignoriert werden? Ich treibe mich in meiner Freizeit in diversen deutschsprachigen PHP-Foren umher. Ich sehe sehr häufig, dass Anfänger mit genau solchen PHP-Schnipseln dort ankommen und nicht verstehen wollen, wie wichtig korrektes Escaping ist. Dann wollen sie Texte mit Anführungszeichen einfügen und wundern sich, dass sie Fehlermeldungen bekommen. Weist man sie auf das fehlende Escaping hin, bekommt man als Antwort, dass sie das nicht wussten oder aber dass sie es nicht brauchen, da die Seite nicht öffentlich ist und sie noch Anfänger sind. Und man kann es ihnen nicht mal übel nehmen, da du auf deiner Seite genau so argumentierst.
Ich würde mich jedenfalls sehr freuen, wenn du diese Kritikpunkte annimmst und das Tutorial entsprechend erweiterst. Gute (und halbwegs aktuelle) PHP-/MySQL-Tutorials sind nämlich sehr selten zu finden.
Viele Grüße
Es gibt Gründe, weswegen es nur Hinweise in Bezug auf mysqli und SQL-Injections gibt und diese Gründe werden noch eine ganze Weile existieren, weswegen ich beschlossen habe, dass die aktuelle Variante mit Hinweisen die bessere ist. Das hat nichts mit fehlendem Verantwortungs- oder Problembewusstsein zu tun.
Den anderen Punkten stimme ich jedoch zu.
vor langer ZeitSonstiges: Meine Frage hat sich erledigt aber irgendwie auch wieder nicht.
Also, dass das so verrutscht war kam durch html height 100% in der style.css ...
Das habe ich nun entfernt aber der Grund warum ich das überhaupt so gemacht habe war ein footer den ich im Internet gefunden habe.
Hast Du schon mal so einen Footer gemacht?
Gaaaaaaaaaanz liebe Grüße
und danke nochmal!
von Bianca W.
Hallo Bianca,
das ist meiner Meinung nach ein CSS-und kein PHP-Problem. PHP ändert nichts am Aussehen deiner Seite, es liefert nur Daten.
vor langer ZeitSonstiges: Joomla empfehlt, "display_errors" und "output buffering" off. Wenn ich php.ini veraendere moniert die Joomla Installation immer noch dass sie on sind. Ich verwende XAMPP fuer Windows.
Für Probleme mit fertigen Scripts oder Programmen/Programmpaketen wende dich bitte an den Programmieren/Vertreiber oder ein entsprechendes dazugehörendes Hilfeforum.
vor langer ZeitSonstiges: PHP-Anfängerfrage. Wie realisiert man Folgendes: von einer Website schickt man per Formular eine Preisanfrage mittels Angaben zu Größe, Qualität, Stückzahl usw. eines bestimmten Objekts an eine PHP-Datei, die daraus den Gesamtpreis berechnet und ihn auf der aufrufenden Seite in ein dafür reserviertes Feld schreibt, sobald der Submit-Button gedrückt wird. Die aufrufende HTML-Seite soll sich bis auf diese berechnete Summe nicht verändern. Ist das überhaupt möglich? Oder wie löst man diese oder ähnliche Aufgaben? Danke und Gruss - Hans.
von Hans73
Das funktioniert mit Ajax.
vor langer ZeitSonstiges: Moin, Claudia!^^
Für den Informatik-Kurs muss ich ein PHP-Programm schreiben, das den größten gemeinsamen Teiler zweier Zahlen berechnet. Ich habe jedoch keinen Plan wie das gehen soll... da muss man bestimmt eine Schleife erstellen, aber wie soll da der Inhalt der Schleife aussehen?
...Ich bin echt verzweifelt! Kannst du mir bitte helfen? Ein Ansatz und paar Tipps würden mir bestimmt schon helfen.
Beste Grüße
von Jas
Was du eigentlich brauchst ist eine rekursive Funktion. Der Wikipedia-Artikel zum <a href="http://de.wikipedia.org/wiki/Euklidischer_Algorithmus">Euklidischen Algorithmus</a> sollte dir ein ganzes Stück weiter helfen. Ungefähr in der Mitte ist der notwendige Code - wenn auch nicht in PHP - sehr gut beschrieben. Sofern ihr euch schon mit rekursiven Funktionen beschäftigt habt, sollte es dann kein Problem für dich sein, das in PHP umzusetzen.
vor langer ZeitSonstiges: Bin zwar nicht der Typ,der in Web 2.0 oft aktiv wird, aber deine Seite hier ist wirklich genial! Man kann den Link immer wieder Leuten schicken, die selbst PHP lernen wollen, es ist super einfach erklärt und man versteht es sofort!
Claudia, ein fettes, grosses Lob an dich! Deine Lektüre hat mir enorm bei meiner Website geholfen:
www.snouty.ch
Auf jeden Fall weiter so!!!
(Ich schreibe da hier in die FAQs damit es alle sehen können, auch die Schwachköpfe, die sich sonst nur über Antworten beschweren.)
von Snouty
Herzlichen Dank dafür :-)
vor langer ZeitSonstiges: Liebe Claudi,
ich habe keine fachbezogene frage sondern eine persönliche. wie sind sie auf Schattenbaum.net gekommen? gab es einen besonderen anlass?
mfg
von Sunny
Ich habe vor etlichen Jahren gelesen, dass Schattenbäume im ländlichen Indien der Ort sind, an dem sich Menschen versammeln, Geschichten erzählen, Rat suchen und finden und vieles mehr - quasi das, was bei uns der Dorfbrunnen war. Mich hat das sehr angesprochen und ich habe spontan gesagt: "Wenn ich mal eine Homepage mache, dann will ich das als Domain haben." - Nicht mal ein halbes Jahr später hab ich das dann auch tatsächlich gemacht.
vor langer ZeitSonstiges: Warum amchen sie Rechtschreibfehler in den Text???
Fall, weil wir nur EINEN einzige Anweisung (die echo-Anweisung) ausführen lassen. Möchten wir beispielsweise den Zeilenumbruch in eine extra echo-Anweisung schreiben müssen wir geschwungene Klammern verwenden um die Anweisung festzulegen.
*lach* Lieber Fragesteller, ich denke, DIE Frage kannst du dir gleich mal selbst beantworten, oder warum schreibst du "amchen"?
Rechtschreibfehler sind selbstverständlich nach einem ausgeklügelten System von mir quer über den gesamten Text verstreut worden. Damit lassen sich später Kopien der Seite problemlos wieder finden - man nennt das auch die Kanarienvogelfalle.
Nein, ernsthaft: Rechtschreibfehler passieren. Umso mehr Text man schreibst, umso eher tauchen natürlich auch Schreibfehler auf. Fehler wie der obige passieren meistens dadurch, dass ich zuerst etwas anderes geschrieben hatte und den Text danach noch einmal verändert habe. So hieß der Satz zum Beispiel ursprünglich "... nur einen einzigen Befehl ..." :-) Alles klar?
vor langer ZeitSonstiges: Hallo Claudia! Ich habe ein Script gebastelt, mit dem Bilder über ein Formular in eine Datenbank hochgeladen werden können. Wird der Formularinhalt abgeschickt, dauert es (je nach Bildgröße) einige Zeit, bis der SQL-Befehl fertig abgearbeitet ist. Der Benutzer sitzt nun während dieser Zeit vor dem Bildschirm und bekommt kein Feedback, warum es solange dauert - im schlimmsten Fall schließt er das Fenster. Wie kann ich die Wartezeit mit der Anzeige eines Textes (oder Bildes) überbrücken?
von Marc
Soweit ich weiß funktioniert das nur über Ajax. Alternativ sieht man häufig den ständigen Hinweis, dass man nach dem Upload bitte Geduld haben soll, da dieser eine Weile dauern kann.
vor langer ZeitSonstiges: Hallo,
Ich habe eine Frage oder eher gesagt eine Bitte.
Ich möchte gerne eine Fifaliga eröffnen und brauche dazu php Kentnisse.
Ich probiere seit mehreren Tagen das Programm auf der Internetseite zu intigrieren aber ich schaff es einfach nicht deshalb wollte ich fragen ob man mir vielleicht helfen könnte diesen Webserver zu konfigurieren oder sogar ganz konfigurieren kann?
wenn nicht ist auch kein Problem ;)
Also wenn es möglich ist möchte ich auf dieser Seite
http://www.funpic.de/
meine Internetseite einrichten.
Ich möchte dieses Programm dort einfügen
http://www.liga-manager-online.de/homepage/homepage/download/&sid=c3ec8a0b26a0e86709606f8f30c952d2
und am Ende sollte es am besten so ähnlich wie diese Internetseite aussehn.
http://germanfifaleague.com/
Wenn weitere Infos nötig sind einfach schreiben ;)
MfG,
Philipp
Hallo Philipp, diese Seite dient zum Erlernen von PHP und bietet demnach Hilfestellungen dafür an. Wenn du also PHP lernen und selbständig etwas damit programmieren (lernen) möchtest, bist du hier richtig.
Wenn du allerdings jemanden suchst, der dir PHP-Software einrichtet/installiert/anpasst, bist du hier leider falsch.
vor langer ZeitSonstiges: Hallo Claudia
ich hab da mal eine Frage:
Ich habe eine Tabelle in einer Datenbank. In dieser Datenbank sind Benutzer, Passwort und Status gespeichert. Ich möchte jetzt den Status (member oder administrator) in einer Variable namens $status speichern. Wenn der Status nun administrator ist, soll mich das script auf die Seite login_success.php weiterleiten. Sonst auf members.php. Jedoch leitet er mich immer auf members.php um. Was mache ich falsch?
$status="GET status FROM members WHERE username = '$myusername'";
if ($status == "administrator")
{
header("location:login_success.php");
}
else {
header("location:members.php");
}
PS: Deine Seite ist spitze! Super erklärt!
Wenn ein Fehler durch eine "falsch" ausgeführte if-Abfrage entsteht, ist es immer sinnvoll, die Bedingung selbst zu überprüfen, indem man überprüfte Variablen (also bei dir status) einfach mal per echo ausgeben lässt
In deinem Fall ist dein Status nämlich nicht "administrator" oder "member", sondern "GET status FROM usw."
Wenn du die Tabelle bereits abgefragt hast, kannst du den Status genauso abrufen, wie die anderen Tabellenspalten. Wenn du den Status in einer extra Abfrage haben möchtest, musst du zum einen dieses GET in eine ordentliche SELECT-Abfrage ändern und zum anderen die Abfrage auch mittels mysql_query ausführen (und dann noch das Ergebnis mittels mysql_fetch_object bearbeiten).
PS: Nicht alle Browser können den Header so verarbeiten, wie du ihn angibst. Location benötigt grundsätzlich absolute Pfadangaben (also http://www.domain.de/members.php). Siehe auch die Hinweise dazu auf <a href="http://de2.php.net/manual/de/function.header.php">php.net</a>.
vor langer ZeitSonstiges: Kann man mit PHP auch einen Drucker ansteuern?
Ich müßte Texte und Steuerzeichen ausgeben können (wie beim Assembler).
Oder kann man nur eine Datei auf einen Windowsdrucker ausgeben?
Die Aufgabe ist, Texte aus einer DB zu holen, in mehreren Zeilen zu sammeln und auszudrucken. Die Steuerzeichen wären dann ESC-Sequenzen für z.B. CR LF etc.
Ich hoffe, daß ich nicht allzu verworren geschrieben habe.
von Detlef
Ich habe damit leider überhaupt keine Erfahrung, habe aber mal ein bisschen herum gestöbert. Es gibt <a href="http://de2.php.net/manual/de/ref.printer.php">Printer-Funktionen</a> für PHP. Die sind aber wohl zum einen ziemlich umständlich und funktionieren zum anderen nur unter Windows und ob Steuerzeichen ausgegeben, weiß ich nicht (kenne mich da auch nicht aus).
Tut mir leid, wirklich weiter helfen kann ich da leider nicht.
vor langer ZeitSonstiges: Hi Claudia
Meine Seite ist in Frames unterteilt. Gibt es eine Möglichkeit, zwei oder mehr davon gleichzeitig in EINEM Link anzusprechen?
Danke im Voraus
von Herry
Meine letzte Erfahrung mit Frames liegt Jahre zurück. Damals war der einzige Weg, JavaScript dafür zu nutzen - ich vermute, dass das immer noch so funktioniert. PHP hat damit nichts zu tun.
vor langer ZeitSonstiges: Hallo Claudia!
Wie mein Vorredner möchte auch ich eine Datei aus einem Unterverzeichnis includen. Du hast bereits geschrieben, dass die Links der eingebundenen Datei dann als Ausgangspfad den Speicherort der includierenden Datei haben. Wie kann ich das umgehen? Die Links anpassen geht leider nicht so einfach, da es sich um ein komplexes Forum handelt. Könnte man mod_rewrite dafür benutzen (habe dazu leider nichts in Deinem Tutorial gefunden)?
Danke im Vorraus,
Elias
von Elias
Mit mod_rewrite habe ich leider nicht genug Erfahrung, um diese Frage zu beanworten. Was mir auf die Schnelle als Lösung einfällt wäre, im Head der Datei eine "base href"-Angabe zu machen. Die muss allerdings absolut gesetzt sein und wirkt sich auf alles aus, was du noch in Verzeichnisebenen etc. ansprichst. Könnte also mehr Probleme machen, als es an Nutzen bringt.
Ansonsten habe ich leider keine Idee.
vor langer ZeitSonstiges: Hallo, wie kann ich in xt commerce die ereg -Funktionen, ersetzen.
Ursache ist die Umstellung auf ein neues PHP.
Danke
von Jeanne
Fragen zu speziellen Scripts/Programmen stelle bitte an die entsprechenden Programmierer oder Vertreiber. Danke.
vor langer ZeitSonstiges: Hallo, ich habe eine Seite auf der sich die User registrieren können. jetzt möchte ich ienen Link einbinden, den man nur einmal alle 24 Stunden drücken kann. Also hab ich ein wenig gesucht. Mit cooki möchte ich das eigentlich nicht amchen, da manche Leute keine Cookies erlauben. Deshalb bin ich in die mysql db gegangen und habe eine zusätzliche spalte namens daily erstellt. Mein php-script zur abfrage sieht erst mal so aus:
<?php
$timestamp=time(); // Aktuellen Timestamp holen
$ergebnis = mysql_query("SELECT daily FROM users WHERE id = $user->id");
while($row = mysql_fetch_object($ergebnis))
if($timestamp-$row->daily >= 24*60*60)
{
echo "$row->daily <br> <hr>";
echo $ergebnis ;
}
?>
Jetzt ist es 3:29 In der db ist der User aber als 2010-03-30 03:11:00 eingetragen. Andere sind noch leer und als 0000-00-00 00:00:00 eingetragen. Das Problem ist, dass mir immer das Datum ausgegeben wird, egal welche Zeit drin steht!
PS: COOLE SEITE FÃœR NOOBS!!!
von Flx5
Wenn dein Datum in der Datenbank als 2010-03-30 03:11:00 eingetragen ist und du es mit einem über time() ermittelten "Datum" vergleichst, kann das nicht funktionieren. time() ermittelt die Zeit in Mikrosekunden und nicht so formatiert, wie du sie scheinbar in der Datenbank eingetragen hast. Das heißt, du vergleichst zwei ganz unterschiedliche Dinge miteinander. Ich würde das Datum in der Datenbank als Unix-Timestamp speichern oder (meiner Meinung nach der umständlichere Weg) so speichern wie bisher und dann vor dem vergleich über mktime umwandeln.
Ansonsten finde ich den Lösungsansatz mit Cookie-Verzicht aber richtig schön.
vor langer ZeitSonstiges: Wie siehts eigentlich aus wenn man anderen die hier Fragen haben auch gern helfen möchte und die durch deine Antwort auch nicht schlauer geworden sind, wie darf/kann ich das machen?
von Leon
Gar nicht. Das hier ist kein Forum und die Fragen sind auch ausschließlich für mich sichtbar. Wenn du gerne anderen weiter helfen möchtest, findest du zahlreiche PHP-Foren, wo die Hilfe untereinander gefragt ist.
vor langer ZeitSonstiges: Das mit dem Datum auf Deutsch will mir in meinem Blog-Template nicht gelingen, selbst mit den Hinweisen auf Deiner Seite. Das Original in meinem Script sieht so aus: <div class="author">Geschrieben von <?php the_author(); ?> am <?php the_time('jS F Y'); ?></div> und als Ausgabe kommt dann: Geschrieben von Andreas am 28th Februar 2010. Gibt es eine einfache Möglichkeit, hier das deutsche Datumsformat einzustellen?
von Andreas
So wie das aussieht, benutzt dein Blogscript eine eigene Funktion für die Ausgabe des Datums. Wenn da aber wirklich Februar steht und nicht February ist die Chance groß, dass es die Monatsnamen auf Deutsch ausgibt und nur dieses 28th falsch wäre. In dem Fall würde ich einfach mal bei the_time('jS F Y') das S durch einen Punkt ersetzen. Falls dadurch eine Fehlermeldung entsteht, probiere, den Punkt mit einem Backslash zu maskieren - the_time('j\. F Y'), aber es sollte eigentlich ohne Backslash funktionieren.
Falls die Monatsnamen auf englisch sind, müsstest du in deinem Blog die Stelle suchen, wo die Funktion the_time programmiert ist und dort Änderungen vornehmen.
vor langer ZeitSonstiges: Hallo Claudia... ich finde deine seite spitze, habe daher sehr viel wissen mitgenommen und bin immer wieder mal da... Ich würde mich freuen, wenn du für mich und andere User noch die Funktionen erklären könntest. Vielen Dank. Grüße Stefan
Danke :-) Was die Funktionen betrifft: Das Problem damit ist, dass es eigentlich kein Anfänger-Thema ist und damit nur bedingt dazu passt. Ich muss mir da mal was überlegen.
vor langer ZeitSonstiges: Ich möchte PHP lernen, kannst du es mir erklären?
Diese Seite dient als Erklärung. Ich helfe gerne bei der Lösung von spezifischen Problemen weiter, aber wenn du eine persönliche/extra Erklärung haben möchtest, dann nur gegen Bezahlung.
vor langer ZeitSonstiges: Kannst du mir mal eben xyz programmieren? Für dich ist das doch sicher ein Klacks!
"Mal eben" kann auch ich nichts aus dem Hut zaubern. Außerdem ist auch meine Zeit begrenzt und wenn ich jemandem einen "Gefallen" tue, dann sollte ich den davor auch kennen. Gegen Bezahlung kann man aber darüber reden.
vor langer ZeitSonstiges: Warum ist xyz bei dir nicht erklärt? Warum erweiterst du nicht um xyz? Wie wäre es, wenn du auch noch xyz erklären würdest?
Das kann verschiedene Gründe haben: Entweder, ich habe selbst noch nichts damit gemacht, oder ich hatte bisher keine Zeit, es zu erklären. Vielleicht fehlt mir auch einfach die Lust dazu, oder ich erachte etwas nicht für sinnvoll. In jedem Fall kann es sein, dass ich (irgendwann) eine Erklärung dazu schreibe, aber ich lasse mich weder auf einen Termin ein, noch garantiere ich dafür.
vor langer ZeitSonstiges: Warum erklärst du xyz so und nicht anders? Warum machst du das so und nicht anders?
Tja, entweder, weil ich es auf diese Art gelernt habe und keine andere kenne oder weil ich meine Art angenehmer finde als eine andere. Und auch wenn du etwas für super sinnvoll und toll hältst kann es sein, dass ich es nicht mag. Und hier wird nun mal so erklärt, wie ICH es bevorzuge.
vor langer ZeitSonstiges: Machst du das freiwillig/gratis/als Hobby?
Ja, mache ich. Daher freue ich mich natürlich auch immer über ein Danke. Ganz besonders, wenn es nicht nur deswegen kommt, weil man eine Frage gleich anhängt.
vor langer ZeitSonstiges: Ich hab von einem Kumpel/aus einem Forum/von einer Seite ein Script bekommen, aber es rennt nicht. Kannst du mir das mal eben anpassen/mir sagen, wo der Fehler liegt?
Bei einfachen/kurzen Scripts kann es durchaus sein, dass ich das tatsächlich mache, in den meisten Fällen werde ich dich aber bitten, deinen Kumpel/das Forum/den Seitenbetreiber/den Scriptprogrammierer zu fragen, oder es selbst auszuprobieren.
vor langer ZeitSonstiges: Hallo Claudia, ich hoffe es ist okay, wenn ich "du" sage...
Ja, sicher. Ich duze ja auch die Leser der PHP-Seite und habe daher absolut nichts dagegen einzuwenden, ebenfalls gedutzt zu werden. Wenn mich aber jemand mit Sie anredet, ist das genauso in Ordnung und ich werde in meiner Antwort ebenfalls das Sie verwenden.
vor langer ZeitNeue Frage stellenAutor: Claudia Unkelbach