• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MySQL Update Berechtigungsproblem

P51D

Mitglied
Hallo miteinander

Ich habe eine kleine Frage:
Mit dem xampp habe ich ein kleines update Problem festgestellt. Wenn ich ein Inhalt von phpMyAdmin aus einfüge, und diesen dann später über ein Formular ändern möchte, so wird kein Fehler ausgegeben, aber das Update geschieht auch nicht.
Sobald aber ein Inhalt von der selben Seite aus eingefügt wird, so kann ich diesen mit den gleichen Funktionen bearbeiten.
Gibt es da Berechtigungen oder so?

Besten Dank
MFG
P51D
 
Werbung:
Das hängt auch davon ab mit welchem MySQL-Nutzer Du im phpmyadmin und in deinem Script arbeitest. Wenn es andere sind, kann es durchaus zu diesem "Phänomen" kommen.
 
Werbung:
Bei xampp ist der default-Benutzer "root" und mit diesem verbinde ich vom Script her. Hat phpMyAdmin dort einen anderen Benutzer?

Bin momentan auf der Arbeit, habe also das Script nicht bei mir. Ich werde es heute abend noch nachliefern.
 
So, noch der versprochene Nachtrag: Ich verwende einerseits CodeMirror aber auch TinyMCE als Editoren auf der Seite, und beide speichern nicht...

Hier ist das als HTML ausgegebene Formular (wird von einer Klasse entsprechend des darzustellenden Inhaltes generiert):
HTML:
<form accept-charset="utf-8"  action="edit_content.php" method="post">
    <table cellspacing="2" cellpadding="5" style="border: 3px solid #aaaaaa; -moz-border-radius: 10px; -khtml-border-radius: 10px; padding: 5px">
        <colgroup>
            <col width="150"/>
            <col width="300"/>
        </colgroup>
        <tr bgcolor="#4F81BD" style="color:#FFFFFF">
            <th>Feld</th>

            <th>Details</th>
        </tr>
        <tr bgcolor="#E9EDF4">
            <td>Autor</td>
            <td><input type="text" size="50" maxlength="70" name="content_author" value="Administrator"/></td>
        </tr>
        <tr bgcolor="#D0D8E8">
            <td>Datum</td>

            <td>2011-07-10 21:49:07</td>
        </tr>
        <tr bgcolor="#E9EDF4">
            <td>Beschreibung</td>
            <td><textarea id="content_description" class="desc" name="content_description" cols="38" rows="5">Startseite</textarea></td>
        </tr>
    </table><br/>

    <br/>
    <table>
        <colgroup>
            <col width="150"/>
            <col width="150"/>
            <col width="150"/>
            <col width="200"/>
            <col width="250"/>
        </colgroup>

        <tr>
            <td>
                <a href="#" style="text-decoration: none" onClick="editor.setValue('')">
                    <img src="http://www.html.de/images/icons/blank.png" alt="Blank" title="Blank" border="0" style="margin:6px 0 -6px 6px"/> Inhalt löschen
                </a>
            </td>
            <td>
                <a href="#" style="text-decoration: none" onClick="editor.undo()">
                    <img src="http://www.html.de/images/icons/undo.png" alt="Undo" title="Undo" border="0" style="margin:6px 0 -6px 6px"/> Zurück
                </a>

            </td>
            <td>
                <a href="#" style="text-decoration: none" onClick="editor.redo()">
                    <img src="http://www.html.de/images/icons/redo.png" alt="Redo" title="Redo" border="0" style="margin:6px 0 -6px 6px"/> Vorwärts
                </a>
            </td>
            <td>
                <button type=button onclick="search()">Suchen</button>

                <input type=text style="width: 8em" id="query" value="">
            </td>
            <td>
                oder <button type=button onclick="replace()">Ersetzen</button> mit
                <input type=text style="width: 8em" id="replace">
            </td>
        </tr>
    </table>

    <br/>
    <textarea id="code_editor" name="code_editor">
        <h3>
            <center>Herzlich willkommen auf unserer Homepage</center>
        </h3>

    </textarea>
    <input type="hidden" name="id" value="1"/>
    <p><input type="submit" name="edit_content" value="Speichern"/>
    <input type="submit" name="edit_content" value="Abbruch"/></p>
</form>
und in "edit_content.php" steht unter anderem dies:
PHP:
if(isset($_POST["edit_content"])){
    if($_POST["edit_content"] == "Speichern"){                                // Inhaltsänderung speichern
        $content->edit_content(
            $_POST["id"],
            $content->get_title($_POST["id"]),
            $_POST["content_author"],
            $_POST["content_description"],
            $content->get_url($_POST["id"]),
            $content->get_type($_POST["id"]),
            $_POST["code_editor"]);
    }
    $relaod = true;
}
und in der content-Klasse sind diese Teile wichtig:
PHP:
function content_DB_connect(){
    //     Mit MySQL Datenbank verbinden
    //    Im Fehlerfall wird der Rest nicht ausgeführt     
    global $GLOBAL;                                                        // Variable in Klasse bekannt machen
    $host = $GLOBAL["db_Host"];                                            // Host der Datenbank
    $user = $GLOBAL["db_User"];                                            // Benutzer der Datenbank
    $password = $GLOBAL["db_Password"];                                    // Passwort
    $db = $GLOBAL["db_Name"];                                            // Tabellenname
    
    $this->link = mysql_connect("$host","$user","$password");            // Verbindung speichern
    if(!$this->link) exit(mysql_error());
    
    $error = mysql_select_db("$db",$this->link);
    if(!$error) $error = mysql_error();
    
    return $error;
}
// Eintrag löschen
function delete_content($id){
    global $GLOBAL;                                                        // Variable in Klasse bekannt machen    
    $db = $GLOBAL["db_content"];                                        // Datenbankname sichern
    
    // Eintrag löschen
    $sql = "DELETE FROM $db WHERE `id`='$id'";
    $error = mysql_query($sql);
    if(!error) exit(mysql_error());
    
    // Lücke schliessen -> folgende Einträge nach oben schieben
    $sql = "UPDATE $db SET `id`=`id`-1 WHERE `id`>'$id' ORDER by `id` ASC";
    $error = mysql_query($sql);
    if(!error) exit(mysql_error());
}

// Eintrag hinzufügen
function add_content($title, $author, $description, $url_id, $type, $content){
    global $GLOBAL;                                                        // Variable in Klasse bekannt machen    
    $db = $GLOBAL["db_content"];                                        // Datenbankname sichern
    
    // Werte zusammenstellen und an MysQL streamen
    $error = mysql_query("INSERT INTO $db (`title`, `author`, `description`, `url`, `type`, `content`) VALUES
        (\"$title\", \"$author\", \"$description\", \"$url_id\", \"$type\", \"$content\");");

    if(!$error) return mysql_error();
    else return true;
}

// Eintrag bearbeiten
function edit_content($id, $title, $author, $description, $url_id, $type, $content){
    global $GLOBAL;                                                        // Variable in Klasse bekannt machen    
    $db = $GLOBAL["db_content"];                                        // Datenbankname sichern

    $sql = "UPDATE $db SET `title`=\"$title\", `author`=\"$author\", `description`=\"$description\", `url`=\"$url_id\", `type`=\"$type\", `content`=\"$content\" WHERE `id`='$id'";
    $error = mysql_query($sql);
    if(!error) exit(mysql_error());
}
Alles ausser das Edit funktionieren vom Script her, auch wenn die entsperchende Zeile in phpMyAdmin hinzugefügt wurde.

Ich steh auf dem Schlauch: Einerseits gibt es keine Fehlermeldung (der querry gibt true zurück), aber nur bei denn Zeilen, die vom Script selber hinzugefügt wurden geht das update.
Die $_POST Werte stimmen alle, sogar bis zur edit-Funktion werden die neuen Inhalte weitergegeben, aber das update klappt nicht.

EDIT:
Ah, hab noch was herausgefunden: Es funktioniert nur bei importierten Tabellen nicht. Aber wieso?
 
Zuletzt bearbeitet:
Vlt. weil die Tabellenrechte für die betreffenden Tabellen für den MySQL-Nutzer nicht gesetzt sind?
 
Werbung:
Jeder MySQL-Nutzer kann folgende Rechte haben oder nicht haben:
- Serverspezifische Rechte
- Datenbankspezifische Rechte
- Tabellenspezifische Rechte

Letzteres wird eher selten genutzt, bei einem Import von Datenbanktabellen könnten die Zugriffsrechte auf diese, je nachdem wie der MySQL-Server eingerichtet ist und wie der Import durchgeführt wird, auch so gesetzt werden, dass die Zugriffsrechte für den normalen Zugriff ungünstig/falsch sind.

Ohne genauere Infos über die Tabellen, den Import sowie deine MySQL-Nutzer kann man das aber auch nur raten und dich ggfs. in die Zielrichtung weisen.
 
Ok, ich versuche mal die offenen Fragen, sofern mir möglich, zu beantworten.

- Der Benutzer ist der standart Benutzer von xampp (root)
- Importiert habe ich die Tabelle über phpMyAdmin als sql Datei (und dabei nicht irgendwelche Rechte vergeben, da diese mir nicht aufgefallen sind)
- Tabllen sind normal über TABLE CREATE ertellt worden

Den Rest kann ich ich leider nicht beantworten, da ich nicht genau weiss, was du wissen möchtest.
 
Werbung:
Zurück
Oben