Prüf Formular.

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

m.scatello

Senior HTML'ler
15 Februar 2017
1.355
163
63
Der Typ text ist doch auch Quatsch! Überlege, wie lang eine Seriennummer sein kann und dann nehme varchar mit definierter Länge
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hay. Bin endlich mit meinem umzug fertig und nun wider ready zum weiter schreiben.

Ich suche nun 3 dinge

-wie krige ich es sauber mit php hin das mein submit button erst nach dem vollständigen ausfüllen des formulars betätigt werden kann.

-wie würdet ihr eihne fortschrits anzeige gestalten meine funktioniert einfach nicht richtig.

-gibt es eine möglichkeit wie ich aus einen mysql eintrag automatisch eine pdf generieren kann?


Mfg
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
-wie krige ich es sauber mit php hin das mein submit button erst nach dem vollständigen ausfüllen des formulars betätigt werden kann.
Das ist gar nicht möglich, weil das PHP erst aktiv wird, nachdem Du den Submitbutton betätigt und das Formular abgeschickt hast. Was Du da vor hast, musst Du clientseitig durch den Browser erledigen lassen. Informiere dich über die HTML5-Formularvalidierung, das ist der erste Schritt dafür.

Fortschrittsanzeige habe ich früher mal programmiert, ich suche da ein Beispiel heraus ...
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
... gefunden:
Code:
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="utf-8">
    <title>File Upload</title>
</head>
<body>
    <div style="width:500px;margin:25px auto;">
        <form id="uploadForm" method="post" action="upload-progress-ajaxform-3.php">
            <div class="form-group">
                <label>File Upload</label>
                <input type="file" name="uploadFile" id="uploadFile" />
            </div>
            <div class="form-group">
                <input type="submit" id="uploadSubmit" value="Hochladen" class="btn btn-success" />
            </div>
            <div class="progress" id="progress">
                <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
            </div>
            <div id="tragetLayer"></div>
        </form>
        <div id="loader-icon" style="display:none">
            <img src="images/loader.gif" />
        </div>
    </div>
    <script src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.js"></script>

    <script>
        $(document).ready(function () {
            $('#uploadForm').submit(function (e) {
                if ($('#uploadFile').val()) {
                    e.preventDefault()
                    $('#loader-icon').show()
                    console.log("Loader Icon Show");
                    $(this).ajaxSubmit({
                        target: '#targetLayer',
                        beforeSubmit: function () {
                            $('.progress-bar').width('0%');
                            console.log("Progressbar 0%");
                        },
                        uploadProgress: function (event, position, total, percentComplete) {
                            console.log("Upload beginnt");
                            $('.progress-bar').width(percentComplete + '%');
                            $('.progress-bar').html('<div id="progress-bar-status">' + percentComplete + ' %</div>')
                        },
                        success: function () {
                            $('#loader-icon').hide();
                            $('#progress').hide();
                        },
                        error: function (jqXHR, textStatus, errorThrown) {
                            console.log(jqXHR, textStatus, errorThrown);
                        },
                        resetForm: true
                    });
                    return false;
                }
            });
        });
    </script>
</body>
</html>
Mit jQuery und Ajaxform, da es auf diese Weise einfacher ist. Es geht aber auch mit XMLHttpRequest.
Ich werde mal nachforschen, ob auch mit fetch.
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
-gibt es eine möglichkeit wie ich aus einen mysql eintrag automatisch eine pdf generieren kann?
Die gibt es. Mit TCPDF geht es, aber es ist ein wenig kompliziert. Siehe hier bei den Beispielen:
Statt die Daten aus einer Datei zu lesen, kannst Du sie auch aus der Datenbank genieren.

Einfacher wäre es, zunächst eine Tabelle mit datatables zu erzeugen, die kann der Benutzer dann als PDF speichern.
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Oki danke.

Ich arbeite gerade daran Bilder auf den Server hochzuladen mit php und den Datei Pfad in meiner db zu speichern das ich es anschliessend mit den anderen angaben wider abrufen kann.

Nun weiss ich jedoch nicht wie ich das anstellen soll :/

Mein bisheriger code für upload und eintragen in die DB:
PHP:
<?php
    $db = new mysqli('localhost','root','','protokol');
    
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
    
    if(isset($_POST['submit'])):
        $seriennummer     = $_POST['Serial-number-Text'];
        $object         = $_POST['Object'];
        $user             = $_POST['User'];
        $creator         = $_POST['Creator'];
    //Bilder Upload
        move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "images/".$seriennummer."-Innen.jpg");
        move_uploaded_file($_FILES["top-Img"]["tmp_name"], "images/".$seriennummer."-Oben.jpg");
        move_uploaded_file($_FILES["plug-legend-img"]["tmp_name"], "images/".$seriennummer."-Stecker.jpg");
        move_uploaded_file($_FILES["Top-Bag-img"]["tmp_name"], "images/".$seriennummer."-Oben-mit-Stecker.jpg");
    //
    $absenden = $db->prepare("INSERT INTO kontrolliert (seriennummer,type,kontrolliert,gebaut,datum) Values(?,?,?,?,NOW())");
    $absenden->bind_param('iiss',$seriennummer,$object,$user,$creator);
    

    $absenden->execute();
        
    endif;


Mein code zum auslessen:
PHP:
    $db = new mysqli('localhost','root','','protokol');
    
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
    
$abfrage = $db->query("SELECT * From kontrolliert ORDER BY datum DESC");

while($ausgabe = $abfrage->fetch_object()){
    echo '
    <div class="content">
        <b>Gebaut am:</b>          '.$ausgabe->datum.'<br>
        <b>Seriennummer:</b>      '.$ausgabe->seriennummer.'<br>
        <b>Type:</b>              '.$ausgabe->type.'<br>
        <b>Kontrolliert von:</b> '.$ausgabe->kontrolliert.'<br>
        <b>Gebaut von:</b>          '.$ausgabe->gebaut.'<br><br><hr>
    </div>
         ';   
}
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
hatte so ne idee würdet ihr es anderst machen?

PHP:
$db = new mysqli('localhost','root','','protokol');
   
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
   
    if(isset($_POST['submit'])):
        $seriennummer     = $_POST['Serial-number-Text'];
        $object         = $_POST['Object'];
        $user             = $_POST['User'];
        $creator         = $_POST['Creator'];
        $innen            = "images/".$seriennummer."-Innen.jpg";
    //Bilder Upload
        move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "images/".$seriennummer."-Innen.jpg");
        move_uploaded_file($_FILES["top-Img"]["tmp_name"], "images/".$seriennummer."-Oben.jpg");
        move_uploaded_file($_FILES["plug-legend-img"]["tmp_name"], "images/".$seriennummer."-Stecker.jpg");
        move_uploaded_file($_FILES["Top-Bag-img"]["tmp_name"], "images/".$seriennummer."-Oben-mit-Stecker.jpg");
    //
    $absenden = $db->prepare("INSERT INTO kontrolliert (seriennummer,type,kontrolliert,gebaut,innen,datum) Values(?,?,?,?,?,NOW())");
    $absenden->bind_param('iisss',$seriennummer,$object,$user,$creator,$innen);
   

    $absenden->execute();
       
    endif;


und wie kann ich das nun nicht als dateipfad sondern als bild widergeben?
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
Funktioniert denn das Hochladen der Bilder und das Eintragen der anderen Wert in die Datenbank? Wenn ja, dann kannst Du die Dateinamen der Bilder wieder aus der Seriennummer zusammen setzen und die Bilder anzeigen:
Code:
while($ausgabe = $abfrage->fetch_object()){
    $seriennummer = $ausgabe->seriennummer;
    echo '
    <div class="content">
        <b>Gebaut am:</b>          '.$ausgabe->datum.'<br>
        <b>Seriennummer:</b>      '.$ausgabe->seriennummer.'<br>
        <b>Type:</b>              '.$ausgabe->type.'<br>
        <b>Kontrolliert von:</b> '.$ausgabe->kontrolliert.'<br>
        <b>Gebaut von:</b>          '.$ausgabe->gebaut.'<br><br><hr>
    </div>
    <img src="images/' . $seriennummer . '-Innen.jpg">
         '; 
}
 

basti1012

Senior HTML'ler
26 November 2017
1.476
158
63
39
Minden
sebastian1012.bplaced.net
Auch wenn die letzte Frage etwas anders ist als wie hier
solltest du es vieleicht in einen Thema belassen.
So wird das alles nur ein hin und her weil keiner weiß was du gerade im anderen Thema machst.
Ich sehe das gerade nicht als Crossposting , du solltest aber vieleicht doch bescheid geben damit die User dir dann auch besser helfen können und nicht Kuddelmuddel gibt
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Funktioniert denn das Hochladen der Bilder und das Eintragen der anderen Wert in die Datenbank? Wenn ja, dann kannst Du die Dateinamen der Bilder wieder aus der Seriennummer zusammen setzen und die Bilder anzeigen:
Code:
while($ausgabe = $abfrage->fetch_object()){
    $seriennummer = $ausgabe->seriennummer;
    echo '
    <div class="content">
        <b>Gebaut am:</b>          '.$ausgabe->datum.'<br>
        <b>Seriennummer:</b>      '.$ausgabe->seriennummer.'<br>
        <b>Type:</b>              '.$ausgabe->type.'<br>
        <b>Kontrolliert von:</b> '.$ausgabe->kontrolliert.'<br>
        <b>Gebaut von:</b>          '.$ausgabe->gebaut.'<br><br><hr>
    </div>
    <img src="images/' . $seriennummer . '-Innen.jpg">
         ';
}

Hay.

Es hatte geklappt nun habe ich etwas weiter geschrieben und bekomme nun diesen Fehler beim eintragen (habe die zeile 107 markiert).

Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\taru\pages\test.php:107 Stack trace: #0 C:\xampp\htdocs\taru\index.php(11): require_once() #1 {main} thrown in C:\xampp\htdocs\taru\pages\test.php on line 107



PHP:
$db = new mysqli('localhost','root','','protokol');
    
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
    
    if(isset($_POST['submit'])):
        $seriennummer         = $_POST['Serial-number-Text'];
        $object             = $_POST['Object'];
        $user                 = $_POST['User'];
        $creator             = $_POST['Creator'];
        $innenJpg            = "images/".$seriennummer."-Innen.jpg";
        $obenJpg            = "images/".$seriennummer."-oben.jpg";
        $steckerJpg            = "images/".$seriennummer."-stecker.jpg";
        $seriennummerJpg    = "images/".$seriennummer."-seriennummer.jpg";
        $deckelJpg            = "images/".$seriennummer."-deckel.jpg";
    //Bilder Upload
        move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "images/".$seriennummer."-Innen.jpg");
        move_uploaded_file($_FILES["top-Img"]["tmp_name"], "images/".$seriennummer."-Oben.jpg");
        move_uploaded_file($_FILES["plug-legend-img"]["tmp_name"], "images/".$seriennummer."-Stecker.jpg");
        move_uploaded_file($_FILES["Serial-number-Img"]["tmp_name"], "images/".$seriennummer."-Seriennummer.jpg");
        move_uploaded_file($_FILES["Top-Bag-img"]["tmp_name"], "images/".$seriennummer."-Oben-mit-Stecker.jpg");
    //
    $absenden = $db->prepare("INSERT INTO `kontrolliert`(`id`, `seriennummer`, `type`, `kontrolliert`, `gebaut`, `Innen-Bild`, `Oben-Bild`, `Stecker-Bild`, `Seriennummer-Bild`, `Oben-mit-Stecker-Bild`, `datum`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11])");
//zeile 107   
 $absenden->bind_param('iisssssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
    

    $absenden->execute();
        
    endif;
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
Die Fehlermeldungen von PHP beschreiben i. allg. sehr gut, was das Problem ist: Die Funktion bind_param wird nicht auf einem Objekt aufgerufen sondern auf einer Variablen vom Typ boolean. Das ist dann $absenden und sie kann nur auf false stehen, weil der Befehl davor fehl geschlagen ist. Du musst dir diesen Befehl genau ansehen und u. U. die Fehler von mysqli anzeigen lassen, wie hier beschrieben:
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.355
163
63
@Sempervivum
Eigentlich ist die Fehlermeldung schon eindeutig genug.
Call to a member function bind_param() on boolean
betrifft
PHP:
$absenden = $db->prepare
also kann ja nur $absenden ein boolscher Wert sein und somit ist klar, dass
PHP:
$absenden = $db->prepare("...");
in die Hose geht.
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hay hab's mir jetzt laaaange angesehen und kann den Fehler nicht entdecken. irgendjemand eine idee?
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
Nicht nur ansehen, sondern auch Infos über den Fehler beschaffen:
genau ansehen und u. U. die Fehler von mysqli anzeigen lassen, wie hier beschrieben:

PHP: mysqli::$error - Manual


www.php.net
www.php.net
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
kenn mich nicht so aus mit php habs so verstanden:

PHP:
if (!mysqli_query($db, "SET a=1")) {
    printf("Error message: %s\n", mysqli_error($db));
}

dann kriege ich das ausgegeben:

Error message: Unknown system variable 'a'
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.103
408
83
67
Da Du auf der objektorientierten Schiene fährst, müsste das Auslesen der Fehlerinfos so aussehen:
Code:
echo $db->error;