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

ThePretender

Cadet 2nd Year
Registriert
Sep. 2008
Beiträge
26
Servus,

ich verzweifle und der 1und1 Service gleich mit.

ich habe 2 1und1 Kundennummern (Privat und Firma). Unter dem Privaten habe ich eine mySQL Datenbank eingerichtet und php Dateien auf diesen Webspace gelegt und kann mit Hilfe eines Formulars auch die Daten in die Datenbank schreiben und auslesen und alles ist toll.

Mit den absolut identischen Dateien und Daten (mit Ausnahme der Verbindungsdaten zur Datenbank) im Firmen Webspace und der Firmendatenbank geht es nicht. Es kommt auch keine php Fehlermeldung. Es geht eifnach nicht. Das Erstellen der Tabelle funktioniert noch, aber das Eintragen von Daten mit Hilfe des Formulars (was unter Privat funktioniert) klappt under Firma nicht.

Ich Poste jetzt mal keine wilden Scripte, da Sie ja Identisch sind zwischen "Privat" und "Firma". Wenn ich was Posten soll, sagt bescheid.

Beide Versionen sind php5.4

Gibt es irgendeine eisntellung (die ich vieleicht vor Jahren auf dem Privaten gemacht habe) um mit php Daten in die mySQL Datenbank zu schreiben, was ich unter Firma noch nicht gemacht habe? Ich glaube mich an soetwas dunkel zu erinnern, finde aber nichts.

gruß
 
Ich würde mal in der Datei das Error-Reporting komplett aktivieren, damit er dir jeden Pups ausgibt, was ihm nicht passt. Vielleicht ist da ja dann eine Fehlermeldung bei, bzw. eher ein Hinweis.
Aktivieren kannst du das mal mit
PHP:
error_reporting(E_ALL);
ini_set('display_errors', true);
 
Vielleicht sind SQL Ports gesperrt bzw nur Port 80/8080 freigegeben. So ists in unserer Firma.
 
Servus,

danke für die schnellen, vielen Rückmeldungen.

wo muss ich das eintragen?

PHP:
1.error_reporting(E_ALL);2.ini_set('display_errors', true);

mit dem phpmyadmin den 1und1 ja zur verfügung stellt, kann ich auf die Datenbank und kann dort die Tabelle sehen (welche ich ebenfalls mit php Datei über den Webspace erstellt habe)

1und1 kann mir nicht helfen die sagen quasi nichts mehr.
 
Einfach ganz oben in die PHP-Datei einfügen, die das Problem macht oder eben eine PHP-Datei, die mit ausgeführt wird.
 
Hey,

einfach überall unter den

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

setzen?

grúß
 
Überall? Nein.

Wenn es mehrere Stellen sind, kannst du es einfach in die db.php eintragen. Direkt unter <?php
Dann führst du dein Formular nochmals aus. Wenn es dann Probleme gibt, zeigt er dir alles an, was ihm nicht passt.
 
mhhh...

habe das jetzt mal so in den 4 php Dateien stehen:

PHP:
<?PHP include("db.php");
error_reporting(E_ALL);
ini_set('display_errors', true);

beim Anzeigen der Daten in der Datenbank kommt kein Fehler (steht ja auch noch nichts drin), beim einfügen von Daten über das Formular in die Datenbank kommt auch kein fehler (aber die Daten werden nicht in die Datenbank geschrieben)

:(
 
sicher dass du alles auf die neue db umgemünzt hast?
ich hatte schon den doofen fehler, dass ich beim wechsel von test zu prod vergessen hab den DB namen im sqlstatement zu ändern. sprich anstatt

Code:
select * from test.table

zu

Code:
select * from [B]prod[/B].table

zu ändern, hab ich eben auch nur die DB-Connect Daten geändert aber das Statement vergessen.
 
ok, habe es mal wie folgt in die dp.php geschrieben

PHP:
<?

error_reporting(E_ALL);

ini_set('display_errors', true);

$dbname="db448721004";

$dbhost="db448721004.db.1and1.com";

$dbuser="dbo448721004";

$dbpass="****************";

mysql_connect($dbhost,$dbuser,$dbpass);

mysql_select_db($dbname);

?>

leider gleiches problem, keine fehlermeldung, formulardaten verschwinden, werden aber nicht in der Datenbank eingetragen.
Ergänzung ()

@schumischumi

sollte nicht sein, da alles identisch ist, bis auf die Connectdaten in der db.php, schaue aber wieder drüber.
 
Gut, dann kannst du das wieder entfernen.

Öffne nun mal die Datei wo der INSERT INTO-Befehl drin steht und ändere den Befehl wie folgt ab:
PHP:
<?
mysql_query('INSERT INTO ...') or die(mysql_error());

Dann führe das Script nochmals aus, so dass etwas in die DB eingetragen wird. Nun könnte er einen Fehler ausspucken.
 
Hey,

gleiches Phänomen.

Die Daten die ich ins Formular eingetragen habe, verschwinden, das Formular steht leer dort. Eigendlich sollte es nach dem Eintragen wieder auf die Ausgabe springen und dann Zeiten was drin steht. Aber Er leert nur das Formular und ende. Es werden keine Daten übertragen und er springt auch nicht weiter.
 
Hey,

hier mal die Codes aus der dp.php, anzeigen.php und eintragen.php. Ich weiß das ist sicher keine Glanzleistung aber es ist das was ich brauche mit möglichst wenig aufwand und schnickschnack.

Was halt echt ein Witz ist, auf dem einen Webspace und der einen Datenbank gehts, auf dem anderen nicht. Es sind zwar unterschiedliche Tarife aber sonst, finde ich keinen Unterschied und 1und1 sagt auch es gäbe keinen.

gruß


dp.php
PHP:
<?

$dbname="db448721004";

$dbhost="db448721004.db.1and1.com";

$dbuser="dbo448721004";

$dbpass="*****************";

mysql_connect($dbhost,$dbuser,$dbpass);

mysql_select_db($dbname);

?>

anzeigen.php
PHP:
<html>

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

<script type="text/javascript">

function ask_first(link, question)
{

if (typeof(question) == 'undefined')

question = 'Wirklich löschen?'

return window.confirm(question);

}
</script>


<body>

<div id="Position">

<div id="Überschrift">Terminverwaltung<br><br></div>

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

<tr div id="TabellenÜberschrift">

<td width="90">Date</td>

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

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

<td width="230">Veranstaltung</td>

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

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

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

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

</tr /div>

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

$query = "SELECT * FROM Termine ORDER BY Date DESC";

$result = mysql_query($query);

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

<tr div id="TabellenInhalt">

<td width="90"><?PHP echo $line[Date];?></td>

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

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

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

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

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

<td width="80"><a href="bearbeiten.php?id=<?PHP echo $line[id];?>">Bearbeiten</a></td>

<td width="80"><a href="entfernen.php?id=<?PHP echo $line[id];?>" onclick="return ask_first(this, 'Wirklich Löschen?');">Löschen</a></td>

</tr /div>

<?PHP }

mysql_free_result($result);

mysql_close();

?>

</table>

<br><a href="eintragen.php">neuer Eintrag</a>

</div>

</body>

</html>

eintragen.php
PHP:
<html>

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

<div id="Position">

<?PHP

if ($button==" OK ") {

include("db.php");

mysql_query("INSERT INTO

Termine(Date,Datum,Ort,Veranstaltung,Link,Anzeigen)VALUES('$Date','$Datum','$Ort','$Veranstaltung','$Link','$Anzeigen')") or die(mysql_error());

mysql_close();

?>

Der Termin wurden eingetragen.

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

<?PHP

} else { ?>

<form method="post" action="eintragen.php">

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

<table>

<tr>

<td>Date:</td>

<td><input type="text" name="Date" value=""><br></td>

</tr>

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

<td><input type="text" name="Datum" value=""><br></td>

</tr>

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

<td><input type="text" name="Ort" value=""><br></td>

</tr>

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

<td><input type="text" name="Veranstaltung" value=""><br></td>

</tr>

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

<td><input type="text" name="Link" value=""><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>

<?PHP

} ?>

</div>

</body>

</html>
 
Zuletzt bearbeitet:
Hi ThePretender,

ich habe mir das Script einmal angesehen und optimiert. Das Problem wird glaube ich sein, dass du auf deinem Server die Funktion Register_globals aktiviert hast, auf deinem Firmen-Server allerdings deaktiviert (deaktiviert ist sicherer!)

Ich habe dir das Script, bzw. die 3 Dateien einmal umgeschrieben, kleine Fehler korrigiert und als Anhang an diesen Post gehangen. Bitte nutze die Dateien und probiere es damit einmal aus. Auf meinem Test-Server läuft das Script nun rund. Also einfach mal testen und bescheid geben, ob es nun läuft.

Edit: Aktueller Anhang in diesem Post.
 
Zuletzt bearbeitet: (Ahang aktualisiert)
wow, vielen dank für die Mühe.

Hab mir den Code angeschaut, leider verstehe ich sogut wie nichts davon.

Was sind Register_globals und wie kann ich die auf dem andern Server umschalten. Jetzt mit dem "Wort" Register_globals kann ich mich auch dran erinnern, das ich daran "rumgefuscht" hatte. Glaube mich zu erinnern, dass das irgendwo stand und die gefahr nicht so groß wäre, da man auf die Datenbank nur vom 1und1 Webspace kommt.

Was meinst du?
 
Hey,

Register_global ist dafür da, die Übergaben aus einem Formular direkt in eine Variable zu packen. Das heißt, wenn du ein Input-Feld hast, gibst du diesem Feld ja einen Namen, z.B. so: <input type="text" name="Datum">
Auf die Daten kannst du dann mit $Datum zugreifen, dank register_globals. Das funktioniert seit PHP 5.4 nicht mehr, da es extrem unsicher ist. Ich kann den Formularnamen problemlos über den Browser ändern und so Variablen in dein Script einschleusen. Von daher empfehle ich dir, das auf jeden Fall zu deaktivieren, wenn die PHP-Version kleiner als 5.4.0 ist!

Um nun auf den Formularinhalt zuzugreifen, nimmer man $_POST['Datum']. Das siehst du auch in der eintragen.php. Zusätzlich habe ich die Funktion mysql_real_escape_string() noch darum geschnallt, damit keine SQL-Injections möglich sind. Aber das ist ein anderes Thema. :D

Funktioniert es denn damit jetzt oder gibt es noch Probleme?
 
Zurück
Oben