 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
03.11.2005, 08:41
|
#1
|
|
TP-Junior
Registriert seit: Oct 2005
|
Dynamisieren einer Website (PHP und MySQL)
Hallo Leute,
ich habe folgendes Problem:
Ich habe eine Website lokal erstellt, apache, MySql sowie PHP laufen winwandfrei. Meine SQL-Abfragen funktionieren kolan auch einwandfrei. So weit so gut.
Jetzt habe ich die gesamte Site auf eine Strato Domain hochgeladen. Dort geht auf einmal nur noch das Anzeigen der Datenbankinhalte und das problemlos. Ich kann aber über meine Eingabeformulare keine Datenbankinhalte mehr erstellen, löschen oder ändern. Nur das Anzeigen geht. Habe ich was falsch gemacht?
Ich habe die Site folgendermaßen veröffentlicht:
SQL Datenbanken mit PHPMyAdmin angelegt dann alles hochgeladen via FTP, anschließend Dynamisiert neue Datenquelle angegeben, und den Ordner Config hochgeladen, friends.php angepasst und ebenfalls hochgeladen. Die Datenbabktests im Assistenten waren jedenfalls erfolgreich. 
|
|
|
03.11.2005, 09:49
|
#2
|
|
TP-Insider
Registriert seit: Dec 2004
Ort: Braunschweig
|
Hmm-- dazu kann man erstmal nicht so viel sagen - dies kann verschiedene Gründe haben ..
Die Datenbank scheint ja zu laufen, wenn die deine Seite die Inhalte aus der DB auslesen kann..
Vlt könntest du uns ja mal einen Teil deines Scriptes (bspw. das Eintragen der Daten in die DB inkl der übergebenen Variablen ) hier posten ..
Ich tippe einfach mal darauf, dass Strato register_globals auf off gestellt hat - versuch mal die Variablen aus den Formularen via $_POST['feldname'] auszulesen..
SteffenR
|
|
|
03.11.2005, 10:59
|
#3
|
|
TP-Junior
Registriert seit: Oct 2005
|
Script für das Eintragen
<?php require_once("../config/include/utils.runtime6.php") ?>
<?php require_once("../config/include/mysql.runtime6.php") ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>Leue Lage in die Datenbank eintragen</title>
<?php // GoLive Content Source
$lagen = WrapMySQLDatabaseResults("lagen", "select * from lagen order by lage", "block=1","lagen");
?>
<link href="../layouts/center.css" rel="stylesheet" media="screen">
</head>
<body bgcolor="#ffffff">
<p></p>
<form action='../config/actions/mysql.actions6.php?<?php echo URLArgs(array())?>' method="post" name="FormName">
<table width="375" border="1" cellspacing="2" cellpadding="0">
<tr>
<td width="87">Lage:</td>
<td><input type="text" name='lage(<?php echo $lagen->AbsolutePosition()?>)' value='<?php echo fixHTMLquotes($lagen->Value("lage")) ?>' size="44" border="0"></td>
</tr>
</table>
<p><input type="submit" name="_AddRecord" value="Neue Lage anlegen" border="0" <?php SetupMySQLAdd("ok.php", "nix.php", $lagen) ?>></p>
<p></p>
<?php SetupMySQLForm($lagen); ?>
</form>
<p></p>
</body>
</html>
<?php if (false) { ?><!-- Mock Content
"lagen/lage" text {}
--><?php } ?>
|
|
|
03.11.2005, 11:20
|
#4
|
|
TP-Insider
Registriert seit: Dec 2004
Ort: Braunschweig
|
hmm.. welches System setzt du denn auf deiner Seite ein ?
Mir sind einige Funktionaufrufe ein Rätsel
SteffenR
|
|
|
03.11.2005, 11:45
|
#5
|
|
TP-Junior
Registriert seit: Oct 2005
|
Adobe GoLive 6
Ich setze GoLive6 ein
Hier ist noch das fertige Script mysql.actions.php von GoLive.
Ich habeübrigens bei Strato nachgefragt, Es ist so, dass meine Testumgebung in der es gehtr mit PHP 4.1.2 und register globals off betrieben wird. Die endgültige Domain läuft (Komisch) mit 4.4.1 und register globals on.
<?php
require_once("../include/utils.runtime6.php");
require_once("../include/mysql.runtime6.php");
// *****************************************************************************
//
// actions/mysql.actions6.php
//
// GoLive actions for MySQL datasources.
//
// ADOBE SYSTEMS INCORPORATED
// Copyright 2000-2002 Adobe Systems Incorporated. All Rights Reserved.
//
// NOTICE: Notwithstanding the terms of the Adobe GoLive End User
// License Agreement, Adobe permits you to reproduce and distribute this
// file only as an integrated part of a web site created with Adobe
// GoLive software and only for the purpose of enabling your client to
// display their web site. All other terms of the Adobe license
// agreement remain in effect.
//
// *****************************************************************************
// UTILITIES
//
// -----------------------------------------------------------------------------
// Data collection from <form>
function getDataFromForm($firstRecord, $lastRecord)
{
global $datatypes;
$data = array();
for ($i = $firstRecord; $i <= $lastRecord; $i++) {
$record = array();
reset($datatypes);
while (list ($fieldName,) = each($datatypes)) {
$value = GetFormValue("$fieldName($i)");
if ($value != "_no_form_value") {
$record[$fieldName] = $value;
}
}
$data[] = $record;
}
global $RuntimeDebug;
if ($RuntimeDebug) {
$msg = "Data from form\n";
$msg .= "<table border=\"1\">\n";
while (list($k, $dataArray) = each($data)) {
while (list($key, $value) = each($dataArray)) {
$msg .= "<tr><td>$k</td><td>$key</td><td>$value</td></tr>\n";
}
}
$msg .= "</table>\n";
RuntimeDebugMessage($msg);
}
return $data;
}
function getKeysFromForm($firstRecord, $lastRecord)
{
global $cswName;
$keys = array();
for ($i = $firstRecord; $i <= $lastRecord; $i++) {
$keyString = "RECORD_KEY({$cswName})=" . GetFormValue("_key($i)");
$keys[] = queryStringToArray($keyString);
}
global $RuntimeDebug;
if ($RuntimeDebug) {
$msg = "Keys from form\n";
$msg .= "<table border=\"1\">\n";
while (list($k, $keyArray) = each($keys)) {
while (list($key, $value) = each($keyArray)) {
$msg .= "<tr><td>$k</td><td>$key</td><td>$value</td></tr>\n";
}
}
$msg .= "</table>\n";
RuntimeDebugMessage($msg);
}
return $keys;
}
// -----------------------------------------------------------------------------
// SQL utilities
function getTableNameFromSQL($sql)
{
$tableName = "";
$tokens = explode(" ", $sql);
for ($i = 0; $i < sizeof($tokens); $i++) {
if (strtoupper($tokens[$i]) == "FROM") {
$tableName = $tokens[$i+1];
break;
}
}
return $tableName;
}
// -----------------------------------------------------------------------------
// wrapSQLValue
//
// Inserts provider-specific annotations (quotes, brackets, etc.) around values
// based on their type and use.
function wrapSQLValue($fieldName, $value)
{
global $datatypes;
global $GL_str_replace;
$type = $datatypes[$fieldName];
if ($type == "string" || $type == "blob"
|| $type == "text" || $type == "date")
{
if (function_exists('mb_internal_encoding')) {
if (strtoupper(mb_internal_encoding()) == 'SJIS') {
$value = addslashes($value);
}
}
$value = $GL_str_replace("'", "''", $value);
return "'$value'";
}
return $value;
}
function setClause($data)
{
$fields = array();
while (list($fieldName, $value) = each($data)) {
$fields[] = "$fieldName = " . wrapSQLValue($fieldName, $value);
}
return " SET " . join(", ", $fields);
}
function whereClause($key)
{
global $cswName;
global $GL_strlen;
$fields = array();
reset($key);
while (list($fieldName, $value) = each($key)) {
if ($fieldName != "RECORD_KEY(".$cswName.")" && $GL_strlen($value) > 0) {
// need to remove CSN from field name here
$simpleField = explode ("(", $fieldName);
$simpleField = $simpleField[0];
$fields[] = "$simpleField = "
. wrapSQLValue($simpleField, $value);
}
}
return " WHERE " . join(" AND ", $fields);
}
function columnList($data)
{
$fields = array();
reset($data);
while (list($fieldName,) = each($data)) {
$fields[] = $fieldName;
}
return " (" . join(", ", $fields) . ") ";
}
function valuesClause($data)
{
$fields = array();
reset($data);
while (list($fieldName, $value) = each($data)) {
$fields[] = wrapSQLValue($fieldName, $value);
}
return " VALUES (" . join(", ", $fields) . ") ";
}
// -----------------------------------------------------------------------------
// Record navigation utilities
function join_url($parts)
{
return $parts["scheme"] . "://" . $parts["host"] . ":" . $parts["port"]
. $parts["path"] . "?" . $parts["query"];
}
function addParams($url, $params)
{
global $cswName;
$parts = parse_url($url);
$args = queryStringToArray(@$parts["query"]);
if ((isset($args["RECORD_INDEX({$cswName})"]))||
(isset($args["RECORD_INDEX%28{$cswName}%29"]))) {
$args = resetRecordNavigation($args, $cswName);
}
while (list($key, $value) = each($params)) {
$args[$key] = $value;
}
$parts["query"] = queryArrayToString($args);
return join_url($parts);
}
function deleteParams($url)
{
$urlparts = explode("?", $url);
return $urlparts[0];
}
function decrementRecordIndex($url)
{
global $cswName;
global $GL_strlen;
$parts = parse_url($url);
$rx = "RECORD_INDEX({$cswName})";
$rx2 = "RECORD_INDEX%28{$cswName}%29";
if (!isset($parts["query"])) {return $url;}
$query_part = $parts["query"];
if ($GL_strlen($query_part) == 0) {return $url;}
$args = queryStringToArray($query_part);
if (isset($args[$rx])) {
$recordIndex = $args[$rx];
$args = resetRecordNavigation($args, $cswName);
$args[$rx] = max(1, $recordIndex - 1);
} else if (isset($args[$rx2])) {
$recordIndex = $args[$rx2];
$args = resetRecordNavigation($args, $cswName);
$args[$rx2] = max(1, $recordIndex - 1);
}
$parts["query"] = queryArrayToString($args);
return join_url($parts);
}
// *****************************************************************************
// SERVER SIDE ACTIONS
//
// -----------------------------------------------------------------------------
// Action handler functions
function SubmitChanges($tableName)
{
global $cswerr;
global $RuntimeDebug;
global $cswName;
$firstRecord = GetFormValue("_firstRecord");
$lastRecord = GetFormValue("_lastRecord");
$position = GetFormValue ("_position");
$keys = getKeysFromForm($firstRecord, $lastRecord);
$data = getDataFromForm($firstRecord, $lastRecord);
$firstInserted = -1;
if (count($keys) > 0 && indexof($keys[0]["RECORD_KEY(".$cswName.")"], "_newRecord") == 0) {
// new record case - do a SQL insert
$keys = getKeysFromForm($position, $position);
$data = getDataFromForm($position, $position);
for ($i = 0; $i < sizeof($data); $i++) {
$sql = "INSERT INTO $tableName "
. columnList($data[$i])
. valuesClause($data[$i]);
if ($RuntimeDebug) {
RuntimeDebugMessage("SQL = [$sql]<p>\n");
}
mysql_query($sql);
if (mysql_errno()) {
$m = mysql_errno(); $s = mysql_error();
$cswerr->dollar['__ERROR'] =
"Database error $m [$s]";
Redirect(GetFormValue("_update_failure"),
$cswerr);
}
else
$firstInserted = mysql_insert_id();
}
}
else {
for ($i = 0; $i < sizeof($data); $i++) {
$sql = "UPDATE $tableName"
. setClause($data[$i])
. whereClause($keys[$i]);
if ($RuntimeDebug) {
RuntimeDebugMessage("SQL = [$sql]<p>\n");
}
mysql_query($sql);
if (mysql_errno()) {
$m = mysql_errno(); $s = mysql_error();
$cswerr->dollar['__ERROR'] =
"Database error $m [$s]";
Redirect(GetFormValue("_update_failure"),
$cswerr);
}
}
}
$url = GetFormValue("_update_success");
if ($firstInserted >= 0) {
global $cswName;
$keys = array();
$keys["RECORD_KEY({$cswName})"] = "ID";
$keys["ID({$cswName})"] = $firstInserted;
Redirect(addParams($url, $keys));
} else {
Redirect($url);
}
}
function AddRecord($tableName)
{
global $cswerr;
global $RuntimeDebug;
$position = GetFormValue ("_position");
$keys = getKeysFromForm($position, $position);
$data = getDataFromForm($position, $position);
$firstInserted = -1;
if (sizeof($keys) != 1) { // block data is not supported
$n = sizeof($keys);
$cswerr->dollar['__ERROR'] =
"$n items were selected;
AddRecord $tablename can handle only one item at a time.";
Redirect(GetFormValue("_add_failure"), $cswerr);
}
for ($i = 0; $i < sizeof($data); $i++) {
$sql = "INSERT INTO $tableName "
. columnList($data[$i])
. valuesClause($data[$i]);
if ($RuntimeDebug) {
RuntimeDebugMessage("SQL = [$sql]<p>\n");
}
mysql_query($sql);
if (mysql_errno()) {
$m = mysql_errno(); $s = mysql_error();
$cswerr->dollar['__ERROR'] =
"Database error $m [$s]";
Redirect(GetFormValue("_add_failure"),
$cswerr);
}
else
$firstInserted = mysql_insert_id();
}
$url = GetFormValue("_add_success");
if ($firstInserted >= 0) {
global $cswName;
$keys = array();
$keys["RECORD_KEY({$cswName})"] = "_lastRecord";
Redirect(addParams($url, $keys));
} else {
Redirect($url);
}
}
function DeleteRecord($tableName)
{
global $cswerr;
global $RuntimeDebug;
$keys = getKeysFromForm(GetFormValue("_firstRecord"),GetFormValue("_lastRecord"));
if (sizeof($keys) != 1) { // block data is not supported
$n = sizeof($keys);
$cswerr->dollar['__ERROR'] =
"$n items were selected;
_DeleteRecord $tablename can handle only one item at a time.";
Redirect(GetFormValue("_delete_failure"), $cswerr);
}
// delete last record in a block
$i = sizeof($keys) - 1;
$sql = "DELETE FROM $tableName " . whereClause($keys[$i]);
if ($RuntimeDebug) {
RuntimeDebugMessage("SQL = [$sql]<p>\n");
}
mysql_query($sql);
if (mysql_errno()) {
$m = mysql_errno(); $s = mysql_error();
$cswerr->dollar['__ERROR'] = "Database error $m [$s]";
// error_log($cswerr->dollar['__ERROR'], 0);
Redirect(GetFormValue("_delete_failure"), $cswerr);
}
else if (sizeof($keys) > 1) {
// Records are still visible in this block: don't move cursor
Redirect(GetFormValue("_delete_success"));
}
else {
$url = GetFormValue("_delete_success");
Redirect(decrementRecordIndex($url));
}
}
function ClearFormData($tableName)
{
global $cswerr;
global $RuntimeDebug;
$data = getDataFromForm(GetFormValue("_firstRecord"),GetFormValue("_lastRecord"));
if (sizeof($data) != 1) { // block data is not supported
$n = sizeof($keys);
$cswerr->dollar['__ERROR'] =
"$n items were selected;
ClearFormData $tablename can handle only one item at a time.";
if ($RuntimeDebug) {
RuntimeDebugMessage("SQL = [$sql]<p>\n");
}
Redirect(GetFormValue("_clear_failure"), $cswerr);
}
else {
global $cswName;
$url = GetFormValue("_clear_success");
$url = deleteParams($url) . "?RECORD_KEY({$cswName})=_newRecord"; //TODO: use AddParams after it's fixed.
Redirect($url);
}
}
function CopyFormData($tableName)
{
global $cswerr;
$keys = getKeysFromForm(GetFormValue("_firstRecord"),GetFormValue("_lastRecord"));
if (sizeof($keys) != 1) { // block data is not supported
$n = sizeof($keys);
$cswerr->dollar['__ERROR'] =
"$n items were selected;
CopyFormData $tablename can handle only one item at a time.";
Redirect(GetFormValue("_copy_failure"), $cswerr);
}
else {
global $cswName;
$rk = "RECORD_KEY({$cswName})";
$rk2 = "RECORD_KEY%28{$cswName}%29";
$url = GetFormValue("_copy_success");
$url = deleteParams($url);
if (isset($keys[0][$rk])) {
$keys[0][$rk] = "_copyRecord," . $keys[0][$rk];
}
if (isset($keys[0][$rk2])) {
$keys[0][$rk2] = "_copyRecord," . $keys[0][$rk2];
}
Redirect(addParams($url, $keys[0]));
}
}
// -----------------------------------------------------------------------------
// Dispatch
$r = GetFormValue("_database");
$ds = unobscure($r); // it is datasource name
GL_mysql_connect($ds);
$sql = unobscure(GetFormValue("_sql"));
$tableName = getTableNameFromSQL($sql);
$cswerr = NewError();
$datatypes = queryStringToArray(unobscure(GetFormValue("_datatypes")));
$cswName = unobscure(GetFormValue('_cswName'));
global $RuntimeDebug;
if ($RuntimeDebug) {
debugAddHtmlHead();
debugPrintQueryString();
debugPrintFormData();
debugPrintObscuredData();
}
if (GetFormValue("_SubmitChanges") != "_no_form_value") {
SubmitChanges($tableName);
} elseif (GetFormValue("_AddRecord") != "_no_form_value") {
AddRecord($tableName);
} elseif (GetFormValue("_DeleteRecord") != "_no_form_value") {
DeleteRecord($tableName);
} elseif (GetFormValue("_ClearFormData") != "_no_form_value") {
ClearFormData($tableName);
} elseif (GetFormValue("_CopyFormData") != "_no_form_value") {
CopyFormData($tableName);
} else {
// default action
SubmitChanges($tableName);
}
?>
Geändert von Sam65 (03.11.2005 um 11:52 Uhr).
|
|
|
03.11.2005, 12:37
|
#6
|
|
TP-Insider
Registriert seit: Dec 2004
Ort: Braunschweig
|
hmm - muss es denn unbedingt dieser GoLive Code sein ? ich würde dies mit einem kleinen eigenen Script lösen - dann weisst du auch genau, was die Scripte tun  und suchst nicht ewig nach Fehlern ..
Schau doch dir einfach mal das Tutorial ;
http://tut.php-q.net/ an . dort lernst du eigentlich recht schnell, wie man mit PHP und MySQL umgeht..
SteffenR
|
|
|
03.11.2005, 12:47
|
#7
|
|
TP-Junior
Registriert seit: Oct 2005
|
Ok
Ich werde es mal probieren,
bin ein Neuling was solche Sachen betrifft, daher habe ich es erst einmal mit GoLive probiert. Trotzdem vielen, vielen Dank für Deine Geduld.
Thomas
|
|
|
04.11.2005, 08:16
|
#8
|
|
TP-Junior
Registriert seit: Oct 2005
|
Hallo Steffen,
wie gesagt ich bin blutiger Anfänger, daher habe ich mir das von Strato gelieferte Programm genommen und damit angefangen. Das dieses aufgrund der PHP-Version nicht funktioniert war mir nicht klar.
Kannst Du mir mal ein Beispiel geben, wie das Formular und das Script aussehen muss, damit ich in eine SQL-DB schreiben kann.
Über ein anders Formular will ich ändern und löschen
Danke
Thomas
|
|
|
04.11.2005, 09:54
|
#10
|
|
TP-Junior
Registriert seit: Oct 2005
|
|
|
|
04.11.2005, 16:48
|
#11
|
|
TP-Junior
Registriert seit: Oct 2005
|
Hallo Steffen,
ich habe es bereits geschafft, erste Füllversuche waren erfolgreich, die Tutorials sind nicht schlecht.
Ich möchte jetzt noch einen Schritt weiter gehen, ich möchte in meinem Eingabeformular Popupmenüs einbauen, deren Inhalte aus einer MySyl Datenbank geladen werden und der Ausgewählte Wert soll dann übergeben werden.
Anbei mein erstes selbsgebasteltes (grins) Script, bin richtig stolz....! (War gar nicht so schwer)
Das Formular war kein Hexenwerk, die Daten übergebe ich mit "GET"
<?php
include("zugriff.inc.php");
$continu=1;
if ($ukname == "")
{
print("Bitte einen Unterkunftsnamen eingeben<br>");
$continu=0;
}
if ($bildpfad == "")
{
print("Bitte einen Dateinamen eingeben<br>");
$continu=0;
}
if ($continu == 1)
{
$sql="INSERT INTO ukbilder (ukname, bildpfad) VALUES '$ukname', '$bildpfad')";
mysql_query($sql, $db);
print("1");
}
else
{
print("2");
}
mysql_close();
?>
</body>
</html>
Gruß Thomas
|
|
|
04.11.2005, 17:11
|
#12
|
|
TP-Insider
Registriert seit: Dec 2004
Ort: Braunschweig
|
Dazu müsstest du eigentlich nur ein SELECT auf die betreffende Tabelle "machen" und dies dann zum Beispiel mit der Funktion mysql_fetch_array() dem "Popupmenu übergeben" ..
>kurz umrissen ungefähr so:
- SELECT auf die Menupunkte
- Werte in Array "packen" mithilfe von mysql_fetch_array
- for-Schleife durch das Array laufen lassen und die einzelnen Punkte des Popup Menus auffüllen (dazu müsste der betreffende HTML Code natürlich innerhalb der for-Schleife "stehen")
Interessant wäre an dieser Stelle vlt auch die Funktion print_r() - damit kannst du dir immer die aktuellen Werte anzeigen lassen, die beim Abschicken des Formulars mit übergeben werden ..
> bei method="get" > bei method="post" Ich hoffe ich konnte dir mit diesem Posting ein wenig helfen und wünsche schon einmal ein schönes Wochenende
SteffenR
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 05:59 Uhr.
|
 |