Prüf Formular.

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

basti1012

Senior HTML'ler
26 November 2017
1.476
158
63
39
Minden
sebastian1012.bplaced.net
ist meine erste haha :D bin mich hier noch am einlernen
Was soll das heißen ?
Da du hier ja das geschrieben hast
Es hatte geklappt nun habe ich etwas weiter geschrieben und bekomme nun diesen Fehler beim eintragen
gehe ich von aus das du deine neuen Spalten nicht mit der Db angeglichen hast .
Dann solltest du hier vieleicht auch mal zählen
Code:
$absenden->bind_param('dein bla bla code');
In beiden Fällen solltes du eine Error Meldung von Php bekommen,
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Oooof peinliiiich lesen müsste man können. Haha. Ich hatte eine funktionierende version, dann als ich für die bildpfade die tabelle erweitert habe unds im code ergänzte erhielt ich das erste mal diesen Fehler.

Bin gerade unterwegs poste bald die aktuelle struktur.

Ps:Was ich oben sagen wollte war das es meine ersten versüche mit php ukd mysql sind
 

basti1012

Senior HTML'ler
26 November 2017
1.476
158
63
39
Minden
sebastian1012.bplaced.net
Hast du zwischenzeitig schon was am Code geändert ?
Wie sieht der jetzt aus ?
Hast du die Zeile schon geändert?
PHP:
 $absenden->bind_param('iisssssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
oder die
PHP:
$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])");

Ich bin mir gerade nicht sicher , aber [value-1] ist glaube ich kein erlaubter( ich sage mal Platzhalter ) dafür.

 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hay,
habe an den Zeilen etwas rumprobiert aber dann gab es immer nur noch mehr Probleme darum sind sie nun wider gleich,

Ich habe denn teil mit dem insert ehrlich gesagt so direkt aus meiner sql Datenbank ausgeben lassen und da wahr es so haha.
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
hier wäre noch mals mein aktueller code:
Code:
<div class="content">
            <form action="" method="post" enctype="multipart/form-data">
                <label class="test-function">Kontroliert von:</label>
                <select name="User" onchange="aktualisiere_progressbar()" class="test-function">
                    <option value="" disabled selected hidden>Auswählen</option>
                    <option>Andrin</option>
                    <option>Dario</option>
                    <option>David</option>
                    <option>Martin</option>
                </select><br><br>
                <label class="test-function">Gebaut von:</label>
                <select name="Creator" class="test-function" onchange="aktualisiere_progressbar()">
                    <option value="" disabled selected hidden>Auswählen</option>
                    <option>Andrin</option>
                    <option>Dario</option>
                    <option>David</option>
                    <option>Martin</option>
                </select><br><br>
                <label class="test-function">Produkt:</label>
                <select name="Object" class="test-function" onchange="aktualisiere_progressbar()">
                    <option value="" disabled selected hidden>Auswählen</option>
                    <option>94003</option>
                    <option>58052</option>
                    <option>51315</option>
                    <option>51317</option>
                </select><br>
                <label class="test-function">Serien Nummer</label>
                  <input class="test-function" onchange="aktualisiere_progressbar()" type="number"            name="Serial-number-Text">
                <br>
                <label class="test-function">Sicht Prüfung</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="visual-inspection">
                <br>
                <label class="test-function">Schrauben</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="screw">
                <br>
                <label class="test-function">Kabel Verschraubungen</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="cable-gland">
                <br>
                <label class="test-function">Zugkontroller</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="plugs">
                <br>
                <label class="test-function">Durchgangsprüfung</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="beep">
                <br>
                <label class="test-function">Säckli</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="bag">
                <br>
                <label class="test-function">Serien Nummer</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="Serial-Number">
                <br>
                <label class="test-function">Legende</label>
                <input class="test-function" onchange="aktualisiere_progressbar()" type="checkbox"         name="Type-label">
                <br>
                <label class="test-function">Innen</label><input class="test-function" onchange="aktualisiere_progressbar()" type="file"                               name="inside-Img" accept="image/*" capture/>
                <br>
                <label class="test-function">Deckel Geöffnet</label><input class="test-function"    onchange="aktualisiere_progressbar()" type="file"                 name="top-Img" accept="image/*" capture/>
                <br>
                <label class="test-function">Stecker + Legende</label><input class="test-function"    onchange="aktualisiere_progressbar()" type="file"                 name="plug-legend-img" accept="image/*"/ capture>
                <br>
                <label class="test-function">Seriennummer</label><input class="test-function"    onchange="aktualisiere_progressbar()" type="file"                 name="Serial-number-Img" accept="image/*" capture/>
                <br>
                <label class="test-function">Deckel mit Säckli</label><input class="test-function"    onchange="aktualisiere_progressbar()" type="file"                  name="Top-Bag-img" accept="image/*" capture/>
                <br>
                <progress id="fortschritt" value="0" max="15"></progress>
                <br><br>
                <input type="submit" name="submit" value="Absenden">
            </form>
           
        </div>
    </body>
</html>
<script>
function aktualisiere_progressbar() {
    var anteil = 0;
    for (var k = 0; k < document.forms[0].elements.length; k++) {
        if (document.forms[0].elements[k].value != '') anteil++;
    }
    document.getElementById('fortschritt')
        .value = anteil;
}
</script>
<?php
    $db = new mysqli('localhost','root','','protokol');
   
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
   
if (!mysqli_query($db, "SET a=1")) {
    printf("Error message: %s\n", mysqli_error($db));
}

   
    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`)");
    $absenden->bind_param('iisssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
   

    $absenden->execute();
       
    endif;
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hay.

Danke ich schaue mir das mal an.

Wiso der crosspost, ganz einfach weil ich versuche mit google lösungen zu finden und wen ich nix finde etwas vergleichbares, damit ich etwas habe zum ausprobieren und tüfteln.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.355
163
63
Ein Text, den ich in einem anderen Forum zum Thema Crossposting gelesen habe:
Crossposting bedeutet, dass ein und dieselbe Frage in mehreren Foren oder Newsgroups gleichzeitig gestellt wird. Ein solches Verhalten wird von den meisten Helfern nicht toleriert, denn damit stellst Du einerseits die Kompetenz der Helfer jedes einzelnen Forums und Newsgroup in Frage und bewirkst zudem, dass ein zig-faches an Stunden aufgewendet wird, um nur ein einziges Problem zu lösen, denn überall werden sich die Helfer daran setzen, eine Lösung für Dich zu finden. Das ist ganz klar ein Missbrauch an dem kostenlosen und freiwilligen Support, der hier angeboten wird. Wenn Deine Frage klar und deutlich gestellt wurde, dann wirst Du ganz bestimmt innerhalb kürzester Zeit eine Antwort erhalten. Sollte dies auch nach mehreren Tagen nicht der Fall sein, dann versuche bitte die Frage besser zu formulieren. Falls Du dennoch in einem zweiten Forum posten solltest, erwähne bitte, dass Du die Frage schon woanders gestellt hast, und dass Du es tust, weil keine Lösung gefunden werden konnte.
Außerdem sind häufig Crossposting laut Forenregeln nicht erlaubt.
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Oki gut.
Ich werde mich daran halten und nun hier weiter fahren.

Würdest du dann vorschlagen content den ich in anderen foren finde denn mir hier nützlich erscheint einfach zu verlinken?
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hast du zwischenzeitig schon was am Code geändert ?
Wie sieht der jetzt aus ?
Hast du die Zeile schon geändert?
PHP:
 $absenden->bind_param('iisssssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
oder die
PHP:
$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])");

Ich bin mir gerade nicht sicher , aber [value-1] ist glaube ich kein erlaubter( ich sage mal Platzhalter ) dafür.



Hay ich habe etwas gearbeitet.

Ich habe versucht die die mysql datenbank umzugestalten das keine Grossbuchstaben - etc mehr vorkommen und da stellte sich mir die frage wie würdet ihr sie aussehen lassen bzw was sollte ich anderst machen?


Unbenannt.PNG

anschliessend habe ich die values rausgeschmissen und das ganze sieht nun so aus:

PHP:
$absenden = $db->prepare("INSERT INTO `kontrolliert`(`id`, `seriennummer`, `type`, `kontrolliert`, `gebaut`, `innen`, `oben`, `stecker`, `snummer`, `obensäckli`, `datum`) Values (?,?,?,?,?,?,?,?,?,?,NOW())");
    $absenden->bind_param('iisssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
    

    $absenden->execute();


Jedoch bekomme ich so diesen Fehler:

Number of variables doesn't match number of parameters in prepared statement


Verstehe ich das richtig das die anzahl der von mir definierten Variablen die hier:

PHP:
$absenden = $db->prepare("INSERT INTO `kontrolliert`(`id`, `seriennummer`, `type`, `kontrolliert`, `gebaut`, `innen`, `oben`, `stecker`, `snummer`, `obensäckli`, `datum`) Values (?,?,?,?,?,?,?,?,?,?,NOW())");

Anzahl mässig nicht mit dem hier überein stimmt? :

Code:
'iisssssss'


Wen Ja ich weiss nicht ob ich zu dumm zum zählen bin aber das müsste doch so aufgehen oder nicht?


MFG
 

tk1234

Mitglied
2 September 2020
49
10
8
Ich habe versucht die die mysql datenbank umzugestalten das keine Grossbuchstaben - etc mehr vorkommen und da stellte sich mir die frage wie würdet ihr sie aussehen lassen bzw was sollte ich anderst machen?
Ich würde als Spaltentype den Typ nehmen (auch von der Größe her) der zum Inhalt passt - deine Seriennummer z.B. wird wohl kaum 16MB haben, oder? Bei den Spaltennamen dann ggf. noch Umlaute weglassen oder sogar englische Begriffe verwenden. Und ganz wichtig: verwende kein latin sondern immer und überall utf8!

Wen Ja ich weiss nicht ob ich zu dumm zum zählen bin aber das müsste doch so aufgehen oder nicht?
Nein, das geht nicht auf, es sind 10 Fragezeichen, aber nur 9 Parameter.
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hay hab mir die zeit genommen und es deinen Vorschlägen entsprechend angepasst.

NEU:
PHP:
    $db = new mysqli('localhost','root','','protokol');
    
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
    
if (!mysqli_query($db, "SET a=1")) {
    printf("Error message: %s\n", mysqli_error($db));
}

und die daten bank:

[ATTACH type="full"]5503[/ATTACH]
    
    if(isset($_POST['submit'])):
        $seriennummer         = $_POST['Serial-number-Text'];
        $object             = $_POST['Object'];
        $user                 = $_POST['User'];
        $creator             = $_POST['Creator'];
        $innenJpg            = "images/".$object."/".$seriennummer."-Innen.jpg";
        $obenJpg            = "images/".$object."/".$seriennummer."-oben.jpg";
        $steckerJpg            = "images/".$object."/".$seriennummer."-stecker.jpg";
        $seriennummerJpg    = "images/".$object."/".$seriennummer."-seriennummer.jpg";
        $deckelJpg            = "images/".$object."/".$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
    $absenden = $db->prepare("INSERT INTO `kontrolliert`(`id`, `serialnumber`, `type`, `controller`, `build`, `inside`, `top`, `stickr`, `snumber`, `topbag`, `date`) Values (?,?,?,?,?,?,?,?,?,NOW())");
    $absenden->bind_param('iisssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
    

    $absenden->execute();
        
    endif;



Nun erhalte ich dafür nun wieder diesen error:

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

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    62,8 KB · Aufrufe: 6

tk1234

Mitglied
2 September 2020
49
10
8
Hay hab mir die zeit genommen und es deinen Vorschlägen entsprechend angepasst.
Naja, nicht wirklich: in das Feld für die Seriennummer passen immer noch 16MB rein …
PHP:
$db = new mysqli('localhost','root','','protokol'); […]
if (!mysqli_query($db, "SET a=1")) {
    printf("Error message: %s\n", mysqli_error($db));
}
Entweder objektorientiert oder prozedural, aber mischen ist nicht.
PHP:
$seriennummer         = $_POST['Serial-number-Text']; […]
move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "images/".$seriennummer."-Innen.jpg");
Vertraue niemals Daten die von außen kommen - die Daten in $_POST sind als gefährlich anzusehen und dürfen niemals und unter keinen Umständen einfach übernommen werden (immer Kontextwechsel beachten!). btw: die Pfade die du in die Datenbank schreibst und die an die du die Bilder verschiebst stimmen nicht überein …
PHP:
$absenden = $db->prepare("INSERT INTO `kontrolliert`(`id`, `serialnumber`, `type`, `controller`, `build`, `inside`, `top`, `stickr`, `snumber`, `topbag`, `date`) Values (?,?,?,?,?,?,?,?,?,NOW())");
Das mit dem Zählen musst du unbedingt noch üben: ich zähle hier 11 Spalten aber nur 9 Parameter plus einen festen Wert - vielleicht einfach die Spalte id weglassen?
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in […]
RTFM. Wenn prepare fehl schlägt bekommst du ein false zurück worauf sich ein bind_param natürlich nicht anwenden lässt - frage die Datenbank nach der Fehlermeldung.
 

Spitzer

Mitglied
23 März 2020
51
0
6
21
Hay. Scheint als ob ich noch viel lernen darf haha.

Das mit dem 16mb hab ich allerdings im stress überlessen ich ändere es so gut wies geht und melde mich nochmals.

An dem mit dem ofaden bastle ich noch konnte es nochnicht mal testen ob das so überhaupt stimmt was ich geschriben habe.

Danke für die hinweise