Ich dachte PHP und mySQL hängen zusammen, aber wenn mySQL in diesem Forum nicht behandelt wird, stelle ich keine derartigen Fragen mehr.
Beiträge von MarkusBEO
-
-
Ich wollte mit
SET PASSWORD FOR 'username'@'hostname' = PASSWORD('new-password');
das Passwort ändern.
Erhielt aber leider die Fehlermeldung:
#1044 - Benutzer 'mas'@'%' hat keine Zugriffsberechtigung für Datenbank 'mysql'
Ich bin Benutzer mas, dieser ist auch in der php-Datei als Datenbankverbindung so eingetragen und ich habe die Datenbank eingerichtet. Wieso habe ich keine Zugriffsberechtigung? Was muss ich tun? -
Ok, aber dann müsste ich wohl meine Codezeile 2 aufteilen oder auseinander nehmen?
-
Früher hat man es so gelöst (Deutsche Anzeige: 16.12.2021, statt amerikanische Anzeige: 2021-12-16):
Wie macht man es aber mit der neuen Technik (OOP usw.)? - wo die Daten wie folgt abgefragt werden:
Code// Prepare the SQL statement and get records from our contacts table, LIMIT will determine the page $stmt = $pdo->prepare('SELECT * FROM contacts ORDER BY id LIMIT :current_page, :record_per_page'); $stmt->bindValue(':current_page', ($page-1)*$records_per_page, PDO::PARAM_INT); $stmt->bindValue(':record_per_page', $records_per_page, PDO::PARAM_INT); $stmt->execute(); // Fetch the records so we can display them in our template. $contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);
-
Vielen Dank!!! Es funktioniert!!!
-
Vielen Dank für die Tipps, ich habe das soweit mal angepasst,
ausser #6, erster Eintrag wegen Eingabefeld Name, weil mir nicht klar ist, was der Eintrag auf Zeile 7 genau bedeutet.
Die Fehlerabfrage muss ich noch lernen (ob gespeichert wurde oder nicht). Das Errorreporting habe in in der functions.php eingefügt.
Ich bin Anfänger und habe den Code aus dem Internet und will ihn für meine Bedürfnisse abändern.Mein Hauptproblem: Habe schon stundenlang geübt mit diesem und anderen Affenformularen und habe bisher nie erreicht dass
bei einer Fehleingabe des Users das Formular stehen bleibt, bis alles i.O. ist. - Hier stehe ich total auf dem Schlauch, was ich da ergänzen/anpassen müsste. -
Danke, das ist schon mal sehr aufschlussreich. Scheint das besagte Affenformular zu sein, nur dann verstehe ich deine ursprüngliche Frage nicht: Wenn der Benutzer die Fehlermeldung sieht, müsste er darüber auch wieder das Formular sehen und in der Lage sein, seine Eingabe(n) dort zu korrigieren? Oder verstehe ich den Code falsch?
Wenn der Benutzer die Fehlermeldung wegen falscher Emailangabe sieht, dann sind alle seine Angaben weg und wurden (richtigerweise) auch nicht gespeichert.
Das einzige Problem ist also scheinbar, wenn die Emailangabe falsch ist und der Benutzer unten links auf den Button "Erfassen" klickt, kommt zwar die Fehlermeldung (=richtig), aber alle Daten sind weg (=falsch).
Wenn alle Daten stimmen, wird der Eintrag gespeichert (=richtig). -
Als Anfänger und weil ich Ihre Fragen nicht sicher beantworten kann, erlaube ich mir, den Code der Seite einzustellen - dann zusätzlich den Code (funktion), welche inkludiert wird.
PHP
Alles anzeigen<?php include 'functions.php'; $pdo = pdo_connect_mysql(); // Check if POST data is not empty if (!empty($_POST)) { // Post data not empty insert a new record // Set-up the variables that are going to be inserted, we must check if the POST variables exist if not we can default them to blank $id = isset($_POST['id']) && !empty($_POST['id']) && $_POST['id'] != 'auto' ? $_POST['id'] : NULL; // Check if POST variable "name" exists, if not default the value to blank, basically the same for all variables $name = isset($_POST['name' ]) ? $_POST['name'] : ''; $email = isset($_POST['email']) ? $_POST['email'] : ''; $phone = isset($_POST['phone']) ? $_POST['phone'] : ''; $title = isset($_POST['title']) ? $_POST['title'] : ''; $created = isset($_POST['created']) ? $_POST['created'] : date('Y-m-d H:i:s'); //$errors = []; if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = true; $mse = 'Bitte korrekte Emailadresse eingeben'; } if (empty ($errors)) { // Insert new record into the contacts table $stmt = $pdo->prepare('INSERT INTO contacts VALUES (?, ?, ?, ?, ?, ?)'); $stmt->execute([$id, $name, $email, $phone, $title, $created]); // Output message $msg = 'Eintrag ist erfolgt'; //Created Successfully } } ?> <?=template_header('Create')?> <div class="content update"> <h2>Neuer Kontakt erfassen</h2> <form action="create.php" method="post"> <label for="id">ID</label> <label for="name">Name</label> <input type="text" name="id" placeholder="26" value="automatisch" id="id"> <input type="text" name="name" placeholder="" id="name"> <label for="email">Email</label> <label for="phone">Telefon</label> <input type="text" name="email" placeholder="" id="email"> <input type="text" name="phone" placeholder="" id="phone"> <label for="title">Title</label> <label for="created">Erfassen</label> <input type="text" name="title" placeholder="" id="title"> <input type="datetime-local" name="created" value="<?=date('Y-m-d\TH:i')?>" id="created"> <input type="submit" value="Erfassen"> </form> <?php if ($msg): ?> <p><?=$msg?></p> <?php endif; ?> <?php if ($mse): ?> <p><?=$mse?></p> <?php endif; ?> </div> <?=template_footer()?> Code für die Funktion:
PHP
Alles anzeigen<?php function pdo_connect_mysql() { $DATABASE_HOST = 'localhost'; $DATABASE_USER = 'phpcrud2-bn'; $DATABASE_PASS = 'npZ2i60?'; $DATABASE_NAME = 'phpcrud2'; try { return new PDO('mysql:host=' . $DATABASE_HOST . ';dbname=' . $DATABASE_NAME . ';charset=utf8', $DATABASE_USER, $DATABASE_PASS); } catch (PDOException $exception) { // Falls Verbindungsproblem exit('Datenbank nicht erreichbar'); } }
-
Guten Abend
Was muss ich beim folgenden Code ergänzen, damit nicht nur die Fehlermeldung erscheint, sondern das Script angehalten wird, damit der User seine Eingaben korrigieren kann?