Einfach mal $_POST debuggen... so wie ich das sehe, gibt es kein Formelement mit dem Namen "rang".
Ankündigung
Einklappen
Keine Ankündigung bisher.
Dropdown Liste um Daten zu ändern
Einklappen
Neue Werbung 2019
Einklappen
X
-
Hab ein wenig rum probiert.
Die id wird nun ganz normal übertragen, der Rang jedoch noch nicht. Den hab ich als Test aber einfach mal in meiner Rang.php vorgegeben.
PHP-Code:<?php
require __DIR__.'/pdo.php';
$_POST['rang'] = 'Leader';
if (isset($_POST['rang']) and isset($_GET['id'])) {
$rang = $_POST['rang'];
$id = (int) $_GET['id'];
$stmt = $db->prepare('UPDATE member (id, rang) VALUES (?, ?)');
$stmt->bindParam(1, $id);
$stmt->bindParam(1, $rang);
$stmt->execute();
echo 'Update erfolgreich.';
} else {
echo 'Ungueltiger Aufruf - Rang und ID muessen korrekt angegeben werden.';
}
?>
Fatal error: Call to a member function prepare() on a non-object in /users/ddgamer/www/rang.php on line 15
Ich hab mal Google gefragt und kam zu folgender Seite: http://www.homepage-forum.de/showthread.php?t=49853
Das ganze einmal ausprobiert, nun jedoch sagt er mir:
Fatal error: Call to a member function bindParam() on a non-object in /users/ddgamer/www/rang.php on line 19
Hat das etwas mit pdo zutun?
Kommentar
-
Änder mal $db in $dbh.
PHP ist ein bisschen wie Mathe. Auch dort gibt es Variablen. Und auch dort kannst du nicht den Wert einer Variablen abfragen, die du vorher nicht definiert hast. In PHP kann das implizit erfolgen, indem du einer Variable etwas zu weißt. Wurde $db vor Zeile 15 in rang.php etwas zugewiesen? Nun innerhalb von rang.php nicht. Wie wäre es also mit pdo.php? In Zeile vier steht:
PHP-Code:$dbh = new PDO('...');
Weißt du, nur weil dir jemand Code schickt, muss der nicht richtig sein. Fehler passieren.
Kommentar
-
Nein, deine SQL-Syntax ist falsch.
http://www.peterkropff.de/site/mysql/aendern.htm
Zitat von Tropi Beitrag anzeigenDas deine Eingabe nicht übernommen wird liegt übrigens daran, das dein Feld keinen Namen hat.[COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
[URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]
Kommentar
-
Zitat von monolith Beitrag anzeigenIch glaube hier reicht es, INSERT INTO durch UPDATE zu ersetzen (da du keine neuen Datensätze anlegen können musst) - das ändert aber den Aufbau des Statements. Deine Aufgabe ist nun, herauszufinden, wie du das SQL-Statement umbauen musst.
Kommentar
-
Okay.. hab verstanden was du meinst mit Aufbau des Statements.
PHP-Code:if (isset($_POST['rang']) and isset($_GET['id'])) {
$rang = $_POST['rang'];
$id = (int) $_GET['id'];
$stmt = $dbh->prepare('UPDATE member SET rang = $rang WHERE id = $id');
$stmt->bindParam(1, $id);
$stmt->bindParam(1, $rang);
$stmt->execute();
echo 'Update erfolgreich.';
} else {
echo 'Ungueltiger Aufruf - Rang und ID muessen korrekt angegeben werden.';
}
?>
wird aber trotzdem immer noch nicht in der Datenbank aktualisiert.
Kommentar
-
DD-Gamer, zwar hast du nun ein SQL-Statement erzeugt, dass der Struktur einer UPDATE-Operation entspricht. Aber dafür klappt das Parameter binden nicht mehr. Lektüre dazu: http://php.net/manual/de/pdo.prepared-statements.php
Kommentar
-
Fortschritt. Es wird nun nach meinen wünschen eingespeichert, nur der Rang wird noch nicht passend mit übertragen.
PHP-Code:echo '<table border="1">';
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
echo "<tr>";
echo "<td>". $zeile['id'] . "</td>";
echo "<td>". $zeile['vorname'] . "</td>";
echo "<td>". $zeile['nachname'] . "</td>";
echo "<td>". $zeile['geburtstag'] . "</td>";
echo "<td>". $zeile['email'] . "</td>";
echo "<td>". $zeile['nickname'] . "</td>";
echo "<td>". $zeile['anwerber'] . "</td>";
echo "<td>". $zeile['geschlecht'] . "</td>";
echo "<td>". $zeile['steamnick'] . "</td>";
echo "<td>". $zeile['handy'] . "</td>";
echo '<td><form action="rang.php?id='.$zeile['id'].'" method="post"><input type="text" value="'. htmlentities($zeile['rang']) . '"><input type="submit"></form></td>';
echo "</tr>";
}
echo "</table>";
mysqli_free_result( $db_erg );
PHP-Code:$rang = $_POST['rang'];
Kommentar
-
Zitat von lstegelitz Beitrag anzeigenEinfach mal $_POST debuggen... so wie ich das sehe, gibt es kein Formelement mit dem Namen "rang".Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
Kommentar
-
wie wärs mal mit ner sinnvollen Antwort? Ich bekomme die ganze zeit nur Genörgel oder Falsche Tipps? Es hat schon nen Grund das ich im Bereich "PHP Anfänger" geschrieben habe! Wenn ich doch um Rat frage, dann hat das nen Grund weil ich was nicht verstanden hab oder noch nicht soweit bin. Vorallem wenn man sich klar ausdrückt was man will und dann einer meint "Nein nein das ist falsch mach das so: *zeile code*" und dann ankommt das kannst du so nicht machen weil bla bla.. Sag mir einfach wo der Fehler liegt, wie ich ihn behebe oder bei Ratschlägen einen etwas deutlicheren Hinnweis. Was weis ich wie man PHP debuggt?!
Kommentar
-
Mein Tipp ist weder Genörgel noch falsch.
Debuggen heisst für dich erstmal, Variableninhalte anschauen (aka auf dem Bildschirm ausgeben). var_dump() ist dein Freund.
Damit schaust du dir nun den Inhalt von $_POST an, nachdem du Daten eingegeben hast und du wirst feststellen, das dein Formular keine Daten unter dem Schlüssel "rang" sendet. Schlussfolgerung überlass ich jetzt wieder dir.
Und kein Grund gleich ausfallend zu werden...Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
Kommentar
-
Er müsste ja jetzt eigentlich aus dem Array "zeile" dem rang übergeben. Die id wird übergeben mit <form action="rang.php?id='.$zeile['id'].'" method="post"> ist das method="post" denn jetzt auch wichtig beim Array oder ist das übergreifend? Andernfall kann ich zwischen
PHP-Code:<input type="text" value="'. htmlentities($zeile['rang']) . '" method="post">
PHP-Code:<input type="submit"></form></td>';
Kommentar
-
Hm, ich verstehe nicht, warum hier zwingend mit Datenbanken gearbeitet werden muss, wenn HTML noch nicht mal sitzt,
Beschäftige dich mal bitte mit der korrekten Syntax für die Erstellung eines Formulars. Alles was innerhalb von
PHP-Code:<form action="deinScript.php" method="post">
<input name="keyName" type="text" required="required" placeholder="Hier muss was drin stehen!" />
</form>
PHP-Code:echo $_POST['keyName'];
Beim Programmieren sollte man gemütlich schlendern, damit man möglichst viel sieht und lernt, und nicht sprinten.
Tante Edith:
Sehe jetzt erst, dass es der gleiche Foren-User mit 2x dem ähnlichen Problem wie im anderen Thread hier ist. Bekräftigt nochmal die Aussage: Basics lernen
Kommentar
Kommentar