wieso kann ich keine Daten in meine 1und1 mySQL Datenbank mit php eintragen

Servus,

ja scheint zu laufen so.

OK, das heißt ab php5.4 geht das garnicht mehr? bin mir recht sicher, das ich php5.4 auf beiden laufen habe und es wie gesagt, auf meinem geht. Wo kann ich das deaktivieren oder aktivieren?

Warum Zeigt er mir das "Löschen" nicht mit "ö" an?

Würdest du dir folgende Codes ebenfalls noch anschauen und endsprechend verbessern?

tabelleerstellen.php
PHP:
<?

include ("db.php");

mysql_query("CREATE TABLE Termine (

id int(255) NOT NULL auto_increment,

Date varchar(100),

Datum varchar(100),
 
Ort varchar(100),

Veranstaltung varchar(100),

Link varchar(100),

Anzeigen varchar(100),

PRIMARY KEY (id) );");

mysql_close();

echo "Die Tabelle wurde angelegt";

?>

ausgabe.php
PHP:
<html>

<link href="styls.css" rel="stylesheet" type="text/css" />

<body>

<table width="470" border="0">

<tr div id="TabellenÜberschrift">

<td width="80">Datum</td>

<td width="100">Ort</td>

<td width="220"></td>

<td width="70"></td>
 
</tr /div>

<?PHP include ("db.php");

$query = "SELECT * FROM Termine WHERE Anzeigen LIKE 'Ja' ORDER BY Date DESC";

$result = mysql_query($query);

while ($line = mysql_fetch_array($result)) { ?>

<tr div id="TabellenInhalt">

<td width="80"><?PHP echo $line[Datum];?></td>

<td width="100"><?PHP echo $line[Ort];?></td>

<td width="220"><?PHP echo $line[Veranstaltung];?></td>

<td width="70"><?PHP echo $line[Link];?></td>
 
</tr /div>

<?PHP }

mysql_free_result($result);

mysql_close();

?>

</table>

</body>

</link>

</html>

bearbeiten.php
PHP:
<html>

<link href="styls.css" rel="stylesheet" type="text/css" />

<body>

<div id="Position">

<?PHP include("db.php");

if ($button==" OK ") {

mysql_query("UPDATE Termine SET Date='$Date',  Datum='$Datum',  Ort='$Ort',  Veranstaltung='$Veranstaltung',  Link='$Link',  Anzeigen='$Anzeigen' WHERE id='$id'");

mysql_close();

?>

Der Termin wurde bearbeitet.

<META HTTP-EQUIV="Refresh" CONTENT="1; URL=anzeigen.php">

<? } else {

$query = "SELECT * FROM Termine WHERE id='$id'";

$result = mysql_query($query);
$line = mysql_fetch_array($result)

?>

<form method="post" action="bearbeiten.php?id=<?PHP echo $id; ?>">

<div id="Überschrift">Termin bearbeiten<br><br></div>

<table>

<tr>

<td>Date:</td>

<td><input type="text" name="Date" value="<?PHP echo $line[Date]; ?>"><br></td>

</tr>

<tr>
 
<td>Datum:</td>

<td><input type="text" name="Datum" value="<?PHP echo $line[Datum]; ?>"><br></td>

</tr>

<tr>
 
<td>Ort:</td>

<td><input type="text" name="Ort" value="<?PHP echo $line[Ort]; ?>"><br></td>

</tr>

<tr>
 
<td>Veranstaltung:</td>

<td><input type="text" name="Veranstaltung" value="<?PHP echo $line[Veranstaltung]; ?>"><br></td>

</tr>

<tr>
 
<td>Link:</td>

<td><input type="text" name="Link" value="<?PHP echo $line[Link]; ?>"><br></td>

</tr>

<tr> 
 
<td>Anzeigen:</td>

<td><input type="checkbox" name="Anzeigen" value="Ja"><br></td>

</tr>

<tr>

<td><input type="submit" name="button" value=" OK "></td>
 
</tr>

</table>

</form>

<? } ?>

</body>

</html>
 
Zuletzt bearbeitet:
Huhu,

OK, das heißt ab php5.4 geht das garnicht mehr? bin mir recht sicher, das ich php5.4 auf beiden laufen habe und es wie gesagt, auf meinem geht.
Jap, genau. Auf Server mit PHP 5.4 oder höher gibt es diese Funktionalität gar nicht mehr. Die wurde komplett herausgenommen. Das heißt, dass auf deinem Server eine ältere PHP-Version läuft.

Wo kann ich das deaktivieren oder aktivieren?
Du hast auf deinem Webspace vielleicht eine .htaccess-Datei liegen. Darin kann man das aktivieren/deaktivieren. Wenn es aber eine neue PHP-Version gibt, würde ich mir die aufspielen lassen. Dies muss dann 1&1 machen. Bei meinem Hoster machen die das immer automatisch auf allen Servern die die anbieten und das kostenlos und ohne Aufforderung. Das ist ein Traum.

Warum Zeigt er mir das "Löschen" nicht mit "ö" an?
Habe dein Script auf UTF-8 umgestellt. Im Anhang habe ich es korrigiert, da sollte das Ö wieder anzeigt werden.

Würdest du dir folgende Codes ebenfalls noch anschauen und endsprechend verbessern?
Aber nur, weil heute der letzte Freitag in der Woche ist. ;) :D

Bitte einmal komplett testen, ob das funktioniert.


Edit: Aktueller Anhang in diesem Post.
 
Zuletzt bearbeitet: (Anhang aktualisiert)
Hey,

Probiere es gleich mal aus, gut das heute der letzte Freitag der Woche ist und zugleich, der 1. des Jahres! ;)

Danke!

Die Globale PHP Version ist 5.4 warum das doch noch greift, keine Ahnung.
 
Gerne.

Schau mal in die .htaccess-Datei (mit Punkt vorn) auf deinem Server. Darin kann man die PHP-Version auch verstellen. Vielleicht steht da ja was drin. Falls du dir unsicher bist, poste sie ruhig. Ich sage dir dann, was du ändern kannst.
Diese Datei kann entweder in Root-Verzeichnis (Stammverzeichnis, da wo wahrscheinlich auch eine index.xxx Datei liegt) liegen oder in dem Verzeichnis selbst, wo du deine Scripte hast.
 
Hey,

2 Sachen klappen nicht richtig.

1. Die Löschen Datei fehlt, oder muss an der nichts angepasst werden?
2. Die CSS Styls werden nur teilweise übernommen. Die Schrift, -farbe und größe wird nicht angepasst.

ne idee?
Ergänzung ()

OK, ich hab ja auch vergessen, den code der entfernen.php zu posten. sorry!

PHP:
<html>

<link href="styls.css" rel="stylesheet" type="text/css" />

<body>

<div id="Position">

<?php include ("db.php");

mysql_query("DELETE FROM Termine WHERE id='$id'");

mysql_close();

?>

Der Termin wurde gelöscht.

<META HTTP-EQUIV="Refresh" CONTENT="1; URL=anzeigen.php">

<body>

<html>
 
Hier wäre die entfernen.php Datei.

Es ist immer schlecht mit Umlauten zu arbeiten. In den Dateien gibt es z.B. ...id="Überschrift"...
Ersetze das mal gegen ein Ue oder so in der Art sowohl in den PHP-Dateien als auch in den CSS-Dateien!

Anschließend mit Strg+F5 mal aktualisieren. Dann sollte es gehen.


Edit: Aktueller Anhang in diesem Post.
 
Zuletzt bearbeitet: (Anhang aktualisiert)
Hey,

supper, es funktioniert alles. Mittlerweile funktioniert auch auf meinem Privaten SQL und PHP die Eingabe nicht mehr (hier ist endlich die umstellung auf PHP5.2 erfolgt). Jetzt bin ich wieder sicher! ;)

Danke!

Wenn ich schon dabei bin, hätte ich noch eine weitere Programmiertechnische frage.

Ich nutze die Spalte "Date" beim erstellen als "int" ändere das manuel dann auf Date zum Sortieren der Ausgabe nach Datum. Leider ist hier ja dieses doofe "Englische" Format 2013-02-03 aber wir Deutschen benutzen ja eigendlich 03.02.2013. Deswegen arbeite ich mit 2 Spalten "Date und Datum" in dem Einen gebe ich 2013-02-03 und dem anderen 03.02.2013 ein. Eigendlich wollte ich nur das Deutsche eineben und er sollte es automatisch ins Englische ändern und dort eintragen, leider habe ich das nie hinbekomen zu Programmieren.

Habt ihr da ne gute idee oder anleitung?

gruß Sven
 
Huhu,

ist eigentlich total einfach und man sollte das von MySQL zu Verfügung gestellt DATE/DATETIME-Feld nehmen. Du kannst deine deutsche Speicherung löschen und einfach nur ein Feld vom Typ DATE nehmen. Dann speichert er, wie du schon sagtest, das Datum so ab 2013-01-07.

Beim Eingabeformular schreibt der Benutzer nun wie gewohnt 07.01.2013 rein und mit der PHP-Funktion explode() kannst du das Datum nun in drei Teile zerlegen. Du erhältst dann einmal 03 als Variable, einmal 01 als Variable und 2013 als Variable. Die kannst du dann einfach in dem richtigen Format in die Datenbank schieben.

Beim Auslesen geht das einfacher, du kannst einfach die Funktion DATE_FORMAT() in deinem SQL-Statement verwenden. Das sehe dann z.B. so für das deutsche Format aus:

PHP:
<?
$query = mysql_query('SELECT DATE_FORMAT(`date`, "%d.%m.%Y") AS `datum` FROM `veranstaltungen`');
$row = mysql_fetch_assoc($query);
echo $row['datum']; //Ergebnis wäre dann 07.01.2013

Kannst du ja mal ausprobieren. Wenn du Probleme hast, einfach melden, ich helfe dir dann gerne.
 
mhhh... prinzipiell verstehe ich es, hab aber probleme mit der umsetzung.

Mir wäre am liebsten ich gebe bei Datum 07.02.2013 ein und der speicher im hintergrund verwandelt in die date.

weiß nur nicht, wo ich das in den beiden eintragen.php und bearbeiten.php unterbringen muss und wie ich es ausprogrammieren muss.

Hier mal mein versuch.

erstellen.php
PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href="styls.css" rel="stylesheet" type="text/css">
<title>Eintragen</title>
</head>

<body>

<div id="position">

<?php

if(isset($_POST['button']))
{
	require_once('db.php');

	$anzeigen = isset($_POST['Anzeigen']) ? 'Ja' : 'Nein';
	$query = mysql_query('INSERT INTO `Termine` (`Date`, `Datum`, `Ort`, `Veranstaltung`, `Link`, `Anzeigen`) VALUES (
			"'.mysql_real_escape_string($_POST['Date']).'",
			"'.mysql_real_escape_string($_POST['Datum']).'",
			"'.mysql_real_escape_string($_POST['Ort']).'",
			"'.mysql_real_escape_string($_POST['Veranstaltung']).'",
			"'.mysql_real_escape_string($_POST['Link']).'",
			"'.$anzeigen.'"
		)') or die(mysql_error());

			$query = mysql_query('SELECT DATE_FORMAT(`Datum`, "%y-%m-%d") AS `Date` FROM `Termine`');
			$row = mysql_fetch_assoc($query);
			
	echo $query ? 'Der Termin wurden eingetragen.<meta http-equiv="refresh" content="1; URL=verwaltung.php">' : 'Der Termin konnte nicht eingetragen werden! [<a href="eintragen.php">Erneut versuchen</a>]';
}
else
{
?>
	<div id="ueberschrift">Termin eintragen<br><br></div>
	<form method="post" action="eintragen.php">
	<table style="border:none;">
		<tr>
			<td>Date:</td>
			<td><input type="text" name="Date"></td>
		</tr>
		<tr>
			<td>Datum:</td>
			<td><input type="text" name="Datum"></td>
		</tr>
		<tr>
			<td>Ort:</td>
			<td><input type="text" name="Ort"></td>
		</tr>
		<tr>
			<td>Veranstaltung:</td>
			<td><input type="text" name="Veranstaltung"></td>
		</tr>
		<tr>
			<td>Link:</td>
			<td><input type="text" name="Link"><br></td>
		</tr>
		<tr>
			<td>Anzeigen:</td>
			<td><input type="checkbox" name="Anzeigen" value="Ja"></td>
		</tr>
		<tr>
			<td><input type="submit" name="button" value="OK"></td>
			<td></td>
		</tr>
	</table>
	</form>
<?php
}
?>
</div>

</body>
</html>

eintragen.php
PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href="styls.css" rel="stylesheet" type="text/css">
<title>Bearbeiten</title>
</head>

<body>
<div id="position">
 
<?php
require_once('db.php');

$id = (int)$_GET['id'];

if(isset($_POST['button']))
{
	$anzeigen = isset($_POST['Anzeigen']) ? 'Ja' : 'Nein';
	$query = mysql_query('UPDATE `Termine` SET
				`Date` = "'.mysql_real_escape_string($_POST['Date']).'",
				`Datum` = "'.mysql_real_escape_string($_POST['Datum']).'",
				`Ort` = "'.mysql_real_escape_string($_POST['Ort']).'",
				`Veranstaltung` = "'.mysql_real_escape_string($_POST['Veranstaltung']).'",
				`Link` = "'.mysql_real_escape_string($_POST['Link']).'",
				`Anzeigen` = "'.$anzeigen.'"
			WHERE `id` = '.$id);

			$query = mysql_query('SELECT DATE_FORMAT(`Datum`, "%y-%m-%d") AS `Date` FROM `Termine`');
			$row = mysql_fetch_assoc($query);

	echo $query ? 'Der Termin wurde bearbeitet.<meta http-equiv="refresh" content="1; URL=verwaltung.php">' : 'Der Termin konnte nicht bearbeitet werden!';
}
else
{
	$query = mysql_query('SELECT * FROM `Termine` WHERE `id` = '.$id.' LIMIT 1');
	$line = mysql_fetch_assoc($query);
?>
	<div id="ueberschrift">Termin bearbeiten<br><br></div>
	<form method="post" action="bearbeiten.php?id=<?PHP echo $id; ?>">
	<table>
		<tr>
			<td>Date:</td>
			<td><input type="text" name="Date" value="<?PHP echo $line['Date']; ?>"></td>
		</tr>
		<tr>
			<td>Datum:</td>
			<td><input type="text" name="Datum" value="<?PHP echo $line['Datum']; ?>"></td>
		</tr>
		<tr>
			<td>Ort:</td>
			<td><input type="text" name="Ort" value="<?PHP echo $line['Ort']; ?>"></td>
		</tr>
		<tr>
			<td>Veranstaltung:</td>
			<td><input type="text" name="Veranstaltung" value="<?PHP echo $line['Veranstaltung']; ?>"></td>
		</tr>
		<tr>
			<td>Link:</td>
			<td><input type="text" name="Link" value="<?PHP echo $line['Link']; ?>"></td>
		</tr>
		<tr>
			<td>Anzeigen:</td>
			<td><input type="checkbox" name="Anzeigen" value="Ja"<?PHP echo $line['Anzeigen'] == 'Ja' ? ' checked' : NULL; ?>></td>
		</tr>
		<tr>
			<td><input type="submit" name="button" value="OK"></td>
			<td></td>
		</tr>
	</table>
	</form>
<?php
}
?>
</div>
</body>
</html>
 
Hey,

ich habe dir das im gesamten Script einmal angepasst, wie man es normalerweise Datenbankkonform abspeichert.
Du müsstest dazu bitte einmal die Tabelle mit der Datei "tabelleerstellen.php" neu kreieren lassen, damit die Felder alle korrekt sind.

Ich habe konkret die Spalte "Datum" gelöscht und komplett auf das Feld "Date" vom Typ DATE umgeschwenkt. Du hast also nur noch ein Feld für das Datum über das alles geregelt wird.

Den Typ der Spalte "Anzeigen" habe ich durch BOOLEAN ersetzt, dass heißt, anstatt "Ja" und "Nein" darin zu speichern, wird nur eine "0" oder "1" gespeichert. Das spart unheimlich viel Platz auf Dauer. Im Script wird aber natürlich trotzdem "Ja" und "Nein" angezeigt.

Bitte ALLE Dateien ersetzen, da ich eigentlich überall etwas anpassen musste (außer db.php und entfernen.php, da habe ich nichts dran gemacht)

Bitte um kurze Rückmeldung, ob das so funktioniert. Sonst einfach melden.

Fürti
 

Anhänge

Hey,

ich bin ja dankbar für das erstellen der Scripte, möchte es aber auch verstehen.

Ist es nicht so, dass er aus 16.10.2013 die Strings machen muss 16 10 2013 und sie dan wieder umgebaut zusammen setzt 2013-10-16?

Wo passiert das? bei der eintragen.php findet sich folgende:
PHP:
STR_TO_DATE("'.mysql_real_escape_string($_POST['Date']).'", "%d.%m.%Y"),

dort wird ihm doch gesagt. das er aus 16.10.2013 --> 16 10 2013 machen soll in 3 strings. aber wo wird ihm gesagt, dass er diese zu 2013-10-16 zusammen setzten soll?

gruß Sven
 
Die Funktion STR_TO_DATE() ist quasi das explode was ich eben erklärt habe nur in einer Funktion direkt.
Ich gebe zuerst das Datum in deutschen Format ($_POST['Date']) an und sage mit dem zweiten Wert (%d.%m.%Y) in welchem Format er das Datum von mir bekommt. Nun weiß der MySQL-Server das als erstes (also %d) der Tag ist, mit einem Punkt getrennt %m für den Monat steht und nochmals mit einem Punkt getrennt das Jahr komme (%Y). Der MySQL-Server schiebt es sich dann seöbst zurecht, wie er es dann braucht. Er macht sich dann daraus also 2013-01-07 beispielsweise.

Die Funktion DATE_FORMAT() macht es dann genau andersherum beim Auslesen. Erst gebe ich an, welche Spalte ich konvertieren möchte, danach mein gewünschstes Format und mit dem Wort AS `feld` sage ich ihm, worin er das Ergebnis speichern soll. Würde ich das nicht mit AS woanders speichern, könnest du nachher nicht ORDER BY nutzen, da er so nach dem deutschen Format sortieren würde und das kennt der Server ja nicht.

Ich hoffe, dass das verständlich erklärt ist.
 
Hey,

ja, so versteh ich das diese "funktionen" sind dafür gemacht. Prima!

Bei der bearbeiten.php ist ein problem, wenn dort der Hacken bei Anzeigen gesetzt wird oder von vorher übernommen wird, wird keine "1" in die Datenbank übertragen, und somit ein Nein ausgegeben.

Dachte es liegt an:
<td><input type="checkbox" name="Anzeigen" value="Ja"<?PHP echo $line['Anzeigen'] == 1 ? ' checked' : NULL; ?>></td>

value="Ja" und habe das durch "1" ersetzt, hat aber nicht geholfen.

gruß
 
Oh, stimmt. Das habe ich übersehen. Einmal bei value, woe du schon sagtest, das Ja durch eine 2 ersetzen.

Dann oben die Zeile 19 bitte durch folgendes ersetzen
PHP:
<?php
$anzeigen = isset($_POST['Anzeigen']) ? 1 : 0;

Dann sollte es klappen.
 
Hey,

Prima!

jetzt gehts und ich glaube ich hab es auch verstanden!

Ich danke dir, werde das Forum weiterempfehlen, falls mich mal jemand fragt!

Du hast mir sehr geholfen! Danke!

gruß Sven
 
Hallo Janniboy,

du hattest mir hier mal mit einem Formular für eine SQL Datenbank geholfen. Würde das gerne erweitern und komme nicht weiter.

Würde gerne ein Eingabefeld mit großen Datensätzen (ganze Texte, mit Zeilenumbrüchen, usw.) Einbauen und nach möglichkeit sogar ein Upload für ein Bild mit Link diesen Texten.

kannst du mir da wieder helfen?

gruß
 
Hey,

ja, wo stehst du denn gerade?

Für ein Textfeld kannst du in deinen Formularen ja schon einmal eine Textarea erstellen, wo du den Text eingeben und nachher wieder bearbeiten möchtest.

In der Datenbank musst du dann ein Feld vom Typ TEXT hinzufügen. Damit ist es möglich, große Texte in der Datenbank zu speichern.

Was genau hat es mit den "großen Texten" denn auf sich?
Gehören die schon irgendwo zu oder brauchen wir dort eine ganz neue Tabelle, weil es ein anderer Sachverhalt ist?!
Vielleicht kannst du das ja einmal bitte erläutern. Wir müssen nämlich die Datenbank (DB) nämlich normalisieren, damit die DB nicht inkonsistent wird (durch so genannte "Anomalien", also ein Fehlverhalten der DB)

LG Janniboy
 
Hey,

ehrlich gesagt, bin ich nicht weiter als du gerade schreibst.

dachte auch an Textarea aber stehe komplett auf dem schlauch, wo und wie und für die Bilder habe ich garkeine Ahnung.

Am Ende soll es eine Art Newsbereich für meinen kleinen Verein werden.

Dachte an eine Tabell mit (ID, Datum, Betreff, News und Bild)
- klar ID als Fortlaufende Nummer
- Datum von wann die News ist
- Betreff um was in der News geht
- News der eigendliche News text
- Bild dachte ich das Bild was ich in der News dazu haben möchte

Hier mal meine Scripte bis her. Klar texte habe ich noch icht geändert, geht im Moment mehr um die PHP/MYSQL Codes.
Anhang anzeigen newsscript.zip

schon mal danke für die Hilfe.

gruß
 
Zurück
Oben