Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql Abfrage mit $_GET['id'] in Textfeld wieder geben.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mysql Abfrage mit $_GET['id'] in Textfeld wieder geben.

    Guten Tag liebe Forennutzer,

    zuvor etwas zu mir: Ich bin kein gelernter IT-Mensch oder habe mir das Wissen über Jahre angeeignet. Ich betreibe ein kleines Gewerbe nebenbei. Dafür wollte ich mir einige Sachen systematisieren und vereinfachen.
    Ich bin grad dabei mir ein kleines "Lager-/Warenwirtschaftsprogramm" zu basteln.

    Ich habe bereits eine Oberfläche gemacht wo man Produkte "einfügen" kann, diese Daten werden dann in eine Datenbank geladen:

    PHP-Code:
    <?php

    # Zugangsdaten
    $db_server 'XY';
    $db_benutzer 'XY';
    $db_passwort 'XY';
    $db_name 'XY';

    # Verbindungsaufbau
    if(mysql_connect($db_server$db_benutzer$db_passwort)) {
    echo 
    'Server-Verbindung erfolgreich, wähle Datenbank aus...
    '
    ;
    if(
    mysql_select_db($db_name)) {
    echo 
    'Datenbank erfolgreich ausgewält, alle Tests abgeschlossen.';
    }
    else {
    echo 
    'Die angegebene Datenbank konnte nicht ausgewählt werden, bitte die Eingabe prüfen!';

    }
    }
    else {
    echo 
    'Verbindung nicht möglich, bitte Daten prüfen!';
    echo 
    'MYSQL-Fehler: '.mysql_error();
    }

    if(isset(
    $_POST['submit'])):
    $asin $_POST['asin'];
    $lagercode $_POST['lagercode'];
    $artikel $_POST['artikel'];
    // $einlagerungsdatum = date;
    $quelle $_POST['quelle'];
    $einkaufsdatum $_POST['einkaufsdatum'];
    $bezahlungsart $_POST['bezahlungsart'];
    $zahlungsdatum $_POST['zahlungsdatum'];
    $ankunftsdatum $_POST['ankunftsdatum'];
    $verkaeufer $_POST['verkaeufer'];
    $einkaufspreis $_POST['einkaufspreis'];


    $abspeichern "INSERT INTO lagerbestand
    (asin, lagercode, artikel, einlagerungsdatum, quelle, einkaufsdatum, bezahlungsart, zahlungsdatum, ankunftsdatum, verkaeufer, einkaufspreis)

    VALUES
    ('
    $asin','$lagercode','$artikel',NOW(),'$quelle',' $einkaufsdatum','$bezahlungsart','$zahlungsdatum', '$ankunftsdatum','$verkaeufer','$einkaufspreis')";

    $abschicken mysql_query($abspeichern);

    if(
    $abspeichern == true) {
    echo 
    "Artikel wurde gespeichert";
    } else { 
    "Artikel konnte nicht gespeichert werden"; }

    endif;
    ?>
    das funktioniert soweit, erstmal.
    Danach habe ich eine Oberfläche gemacht die eine Übersicht des Lagers anzeigt:

    PHP-Code:
    <?php
    # Zugangsdaten
    $db_server 'XY';
    $db_benutzer 'XY';
    $db_passwort 'XY';
    $db_name 'XY';

    # Verbindungsaufbau
    if(mysql_connect($db_server$db_benutzer$db_passwort)) {
    echo 
    'Server-Verbindung erfolgreich, wähle Datenbank aus...
    '
    ;
    if(
    mysql_select_db($db_name)) {
    echo 
    'Datenbank erfolgreich ausgewält, alle Tests abgeschlossen.';
    }
    else {
    echo 
    'Die angegebene Datenbank konnte nicht ausgewählt werden, bitte die Eingabe prüfen!';

    }
    }
    else {
    echo 
    'Verbindung nicht möglich, bitte Daten prüfen!

    '
    ;
    echo 
    'MYSQL-Fehler: '.mysql_error();
    }

    # Abfrage bei der Datenbank
    $sql "SELECT * FROM lagerbestand";
    $query mysql_query($sql) or die(mysql_error());

    echo 
    '<section class="content">';
    echo 
    '<div class="row">';
    echo 
    '<div class="col-xs-12">';
    echo 
    '<div class="box">';
    echo 
    '<div class="box-header">';
    echo 
    '<h3 class="box-title">Lagerbestand Übersicht</h3>';
    echo 
    '</div>';
    echo 
    '<div class="box-body">';
    echo 
    '<table id="example1" class="table table-bordered table-striped">';

    echo 
    '<thead>';
    echo 
    '<tr>';
    echo 
    '<th>ID</th>';
    echo 
    '<th>ASIN</th>';
    echo 
    '<th>Lagerort</th>';
    echo 
    '<th>Artikel</th>';
    echo 
    '<th>Einlagerungsdatum</th>';
    #echo '<th>Quelle</th>';
    echo '<th>Einkaufsdatum</th>';
    #echo '<th>Bezahlungsart</th>';
    #echo '<th>Zahlungsdatum</th>';
    echo '<th>Ankunftsdatum</th>';
    #echo '<th>Verkäufer</th>';
    echo '<th>Einkaufspreis</th>';
    echo 
    '<th>Status</th>';
    echo 
    '</tr>';
    echo 
    '</thead>';

    while(
    $fetch mysql_fetch_assoc($query)) {



    echo 
    "<tr>";


    echo 
    "<td><a href='produkt.php?id=".$fetch['id']."'>"$fetch['id']. "</a></td>";
    echo 
    "<td>"$fetch['asin'] . "</td>" ;
    echo 
    "<td>"$fetch['lagercode'] . "</td>";
    echo 
    "<td>"$fetch['artikel'] . "</td>";
    echo 
    "<td>"$fetch['einlagerungsdatum'] . "</td>";
    #echo "<td>". $fetch['quelle'] . "</td>";
    echo "<td>"$fetch['einkaufsdatum'] . "</td>";
    #echo "<td>". $fetch['bezahlungsart'] . "</td>";
    #echo "<td>". $fetch['zahlungsdatum'] . "</td>";
    echo "<td>"$fetch['ankunftsdatum'] . "</td>";
    #echo "<td>". $fetch['verkaeufer'] . "</td>";
    echo "<td>"$fetch['einkaufspreis'] . "</td>";
    echo 
    "<td>"$fetch['status'] . "</td>";
    echo 
    "</tr>";
    }
    echo 
    "</table>";

    echo 
    '</div>';
    echo 
    '</div>';
    echo 
    '</div>';
    echo 
    '</div>';
    echo 
    '</section>';

    ?>
    funktioniert auch soweit alles. Zuletzt gibt es keine Detailseite für jedes Produkt, welche über die ID generiert wird:

    PHP-Code:
    <?php

    # Zugangsdaten
    $db_server 'YX';
    $db_benutzer 'XY';
    $db_passwort 'XY';
    $db_name 'XY';

    # Verbindungsaufbau
    if(mysql_connect($db_server$db_benutzer$db_passwort)) {
    echo 
    'Server-Verbindung erfolgreich, wähle Datenbank aus...
    '
    ;
    if(
    mysql_select_db($db_name)) {
    echo 
    'Datenbank erfolgreich ausgewält, alle Tests abgeschlossen.';
    }
    else {
    echo 
    'Die angegebene Datenbank konnte nicht ausgewählt werden, bitte die Eingabe prüfen!';

    }
    }
    else {
    echo 
    'Verbindung nicht möglich, bitte Daten prüfen!

    '
    ;
    echo 
    'MYSQL-Fehler: '.mysql_error();
    }
    ?>

    $id = mysql_escape_string($_GET['id']);
    $sql = "SELECT * FROM lagerbestand where id = '$id'";
    $query = mysql_query($sql) or die(mysql_error());

    echo '<section class="content">';
    echo '<div class="row">';
    echo '<div class="col-xs-12">';
    echo '<div class="box">';
    echo '<div class="box-header">';
    echo '<h3 class="box-title">Lagerbestand Übersicht</h3>';
    echo '</div>';
    echo '<div class="box-body">';
    echo '<table id="example1" class="table table-bordered table-striped">';

    echo '<thead>';
    echo '<tr>';

    echo '<th>ASIN</th>';
    echo '<th>Lagerort</th>';
    echo '<th>Artikel</th>';
    echo '<th>Einlagerungsdatum</th>';
    echo '<th>Quelle</th>';
    echo '<th>Einkaufsdatum</th>';
    echo '<th>Bezahlungsart</th>';
    echo '<th>Zahlungsdatum</th>';
    echo '<th>Ankunftsdatum</th>';
    echo '<th>Verkäufer</th>';
    echo '<th>Einkaufspreis</th>';
    echo '</tr>';
    echo '</thead>';

    while($fetch = mysql_fetch_assoc($query)) {



    echo "<tr>";



    echo "<td>". $fetch['asin'] . "</td>" ;
    echo "<td>". $fetch['lagercode'] . "</td>";
    echo "<td>". $fetch['artikel'] . "</td>";
    echo "<td>". $fetch['einlagerungsdatum'] . "</td>";
    echo "<td>". $fetch['quelle'] . "</td>";
    echo "<td>". $fetch['einkaufsdatum'] . "</td>";
    echo "<td>". $fetch['bezahlungsart'] . "</td>";
    echo "<td>". $fetch['zahlungsdatum'] . "</td>";
    echo "<td>". $fetch['ankunftsdatum'] . "</td>";
    echo "<td>". $fetch['verkaeufer'] . "</td>";
    echo "<td>". $fetch['einkaufspreis'] . "</td>";

    echo "</tr>";
    }
    echo "</table>";

    echo '</div>';
    echo '</div>';
    echo '</div>';
    echo '</div>';
    echo '</section>';

    ?>
    In der Tabelle werden die Werte wiedergegeben.
    Nun möchte ich aber das die Werte zu der jeweiligen ID in einem Formular ins besondere in einem Textfeld wiedergegeben werden damit ich beim nächsten Schritt den Datensatz bearbeiten bzw. in der Datenbank aktualisieren kann.

    Das klappt aber nicht und da bräuchte ich Hilfe.
    So sieht der Code zu dem aus:

    PHP-Code:
    <input type="text" class="form-control" name="asin" value="<?php echo $fetch['asin'] ; ?>">
    Vielen Dank schon mal im Voraus.

  • #2
    Als erstes solltest Du eine aktuelle PHP-Version verwenden, wenn Du das produktiv einsetzen willst.
    Damit fliegt dann schon mal als erstes die mysql_-Extension raus. Stell gleich um auf MySQLi oder, was ich eher empfehle: PDO ( Einführungstutorial ).
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Eben, vorher geht es hier nicht weiter.

      Kommentar


      • #4
        Okay, ich werde mich heute Abend dran setzten und auf PDO umstellen

        Kommentar


        • #5
          https://php-de.github.io/jumpto/pdo/ zur Ergänzung noch. Wenn du die die beiden mal durchschaust, denk ich hast du eine guten Überblick über PDO und Prepared Statments und bist auf der aktuellen und sicheren Seite - bei richtiger Anwendung.
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von Konrad Ne Beitrag anzeigen
            Guten Tag liebe Forennutzer,

            zuvor etwas zu mir: Ich bin kein gelernter IT-Mensch oder habe mir das Wissen über Jahre angeeignet. Ich betreibe ein kleines Gewerbe nebenbei. Dafür wollte ich mir einige Sachen systematisieren und vereinfachen.
            Ich bin grad dabei mir ein kleines "Lager-/Warenwirtschaftsprogramm" zu basteln.
            Da hast Du Dir ja was vorgenommen. Du musst auch kein IT-Mensch sein. Einfach nur Mensch reicht, mit viel Geduld und Ausdauer und etwas Systematik.
            Wie sieht denn Dein Datenbankentwurf aus?

            bitcoin.de <- Meine Freelancerwährung

            Kommentar


            • #7
              Zitat von Alpha Beitrag anzeigen

              Da hast Du Dir ja was vorgenommen. Du musst auch kein IT-Mensch sein. Einfach nur Mensch reicht, mit viel Geduld und Ausdauer und etwas Systematik.
              Wie sieht denn Dein Datenbankentwurf aus?
              Ich denke auch, dass alles machbar ist
              Was meinst du genau mit Datenbankenentwurf?

              Kommentar


              • #8
                Entweder dein Create Statement oder eine Grafik mit allen Tabellen und Spalten, wobei ein Create-Statement (SQL Dump) besser ist.

                Kommentar


                • #9
                  Momentan habe ich nur eine Tabelle erstellt
                  datenbank.jpg

                  Kommentar


                  • #10
                    Man merkt das du keine Erfahrung hast und so kommt man langsam vom hundertstel ins tausendstel.
                    Stell erst mal auf PDO um. Ein Schritt nach dem anderen, sonst wird das unübersichtlich.

                    Kommentar


                    • #11
                      Ich verstehe nicht, warum man nicht klein anfängt. Beispielsweise eine minimale Namensverwaltung nur mit den Feldern name und vorname. Am besten mit PDO, SQlite und MemoryDB´s. Hat man das im Griff, erweitert man es entsprechend und hat ein vernünftige Codebasis.

                      So kämpft man sich durch zig Zeilen Code, mit zig Fehlermöglichkeiten.

                      Hier mal ein Beispiel, als Grundlage:

                      PHP-Code:
                      <?php
                      function HtmlOut ($val){
                        return 
                      htmlspecialchars($valENT_COMPAT ENT_HTML5"UTF-8");
                      }

                      function 
                      ArrayToTable($data){
                          
                      $MyTable '<table><thead><tr>';
                          foreach(
                      array_keys($data[0]) as $key)
                            
                      $MyTable.='<th>'.HtmlOut($key);
                          
                      $MyTable.='<tbody>';
                          foreach (
                      $data as $row){
                            
                      $MyTable.='<tr>';
                            foreach(
                      $row as $col)
                              
                      $MyTable.='<td>'.HtmlOut($col);
                          }
                          
                      $MyTable.='</table>';
                          return 
                      $MyTable;
                      }

                      $sqlCreate = <<<ENDSQL
                      CREATE TABLE testdata (id INTEGER PRIMARY KEY, name TEXT, vorname TEXT);
                      INSERT INTO testdata (name, vorname) VALUES
                      ("Merkel", "Angela"),
                      ("Seehofer", "Horst"),
                      ("Trump", "Donald"),
                      ("Duck", "Donald"),
                      ("Putin", "Wladimir"),
                      ("Gysi", "Gregor"),
                      ("Nahles", "Andrea");
                      ENDSQL;

                      $memDB = new PDO('sqlite::memory:');
                      $memDB->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
                      $memDB->exec($sqlCreate);

                      $statement $memDB->prepare(
                        
                      "INSERT INTO testdata (
                          name,
                          vorname
                          )
                          VALUES
                          (
                          :name,
                          :vorname)
                        "
                      );

                      $result $statement->execute(
                        array(
                          
                      ':name' => 'Merz',
                          
                      ':vorname' => 'Friedrich'
                        
                      )
                      );

                      $result $memDB->prepare("SELECT id, name, vorname FROM testdata ORDER BY name");
                      $result -> execute();
                      $myResult $result->fetchAll(PDO::FETCH_ASSOC);
                      $myResult $myResult ArrayToTable($myResult) : 'keine Daten!';

                      $getThird $memDB->prepare(
                        
                      "SELECT id, name, vorname
                        FROM testdata
                        WHERE name LIKE 'M%'
                        ORDER BY name"
                        
                      );
                      $getThird -> execute();
                      $getResult $getThird->fetchAll(PDO::FETCH_ASSOC);
                      $getResult $getResult ArrayToTable($getResult) : 'keine Daten!';
                      ?>
                      <!doctype html>
                      <html lang="en">
                        <meta charset="UTF-8">
                        <title>Document</title>
                        <style>
                       table {
                          border-collapse: collapse;
                          font-family: "Calibri", sans-serif;
                        }
                        table caption {
                          font-weight:bold;
                        }
                        thead tr{
                          background: #ddd;
                        }
                        td, th {
                          border: 1px solid #bbb;
                          width: 120px;
                          text-align:left;
                          line-height:160%;
                        }
                        </style>
                      <?=$myResult;?>
                      <br>
                      <?=$getResult;?>

                      Kommentar

                      Lädt...
                      X