Wenn du jetzt noch den Schalter PHP im Editor hier verwenden würdest anstatt den Code mit den Zitat-Tags einzufügen wäre er leichter lesbar.
Die meisten User geben den Container-Code in Kleinbuchstaben ein, womit du dann einen Fehler erhältst.
Ich würde es mit strtoupper auf Grossbustaben bringen, bevor ich es an die Funktion checkDigit übergebe.
Ausserdem solltest du prüfen ob die Parameter auch vom Formular kommen.
Ich würde es mit strtoupper auf Grossbustaben bringen, bevor ich es an die Funktion checkDigit übergebe.
Ausserdem solltest du prüfen ob die Parameter auch vom Formular kommen.
Auf mysqli hast du schon weiter oben hingewiesen und auf dieses habe ich danach auch sofort gewechselt.
Das EVA-Prinzip schaue ich mir auch heute mal an.
Ich danke vielmals!
Unten findest du meinen aktuellen PHP-Code. Bin auch soweit fast fertig. Werde nur noch beim abspeichern der Daten den Usernamen mit hinzufügen, damit man nachvollziehen kann, welcher User welchen Eintrag getätigt hat.
Natürlich noch ein paar Feinarbeiten, ein paar bessere Einrückungen und Kommentare, welche ich auch noch erledigen muss.
Am Ende kann ich dann die fertige Datei gerne auch wieder hochladen.
PHP-Code:
<?php
include("config.php");
session_start();
if(!isset($_SESSION['user'])) {
die('Bitte zuerst <a href="index.php">einloggen</a>');
}
$mark = strtoupper($_POST['cn']);
$kzzname = $_POST['kzname'];
$kzznummer = $_POST['kznummer'];
$kennzeichen =$kzzname.$kzznummer;
function checkDigit($mark){
$char2num = array('A'=>10, 'B'=>12, 'C'=>13, 'D'=>14, 'E'=>15,
'F'=>16, 'G'=>17, 'H'=>18, 'I'=>19, 'J'=>20, 'K'=>21, 'L'=>23,
'M'=>24, 'N'=>25, 'O'=>26, 'P'=>27, 'Q'=>28, 'R'=>29, 'S'=>30,
'T'=>31, 'U'=>32, 'V'=>34, 'W'=>35, 'X'=>36, 'Y'=>37, 'Z'=>38);
$acc=0;
$num=str_split($mark);
for($i=0;$i<10;$i++){
if($i<4) $acc+=($char2num[$num[$i]]*pow(2,$i));
else $acc+=$num[$i]*pow(2,$i);
}
$rem = $acc % 11;
if ($rem == 10) $rem = 0;
return (strlen($mark)==11 && $num[10]==$rem);
}
if(checkDigit($mark)==1) {
echo "Kennzeichen: $kennzeichen <br />";
echo "Containernummer: $mark <--- Richtig!<br /><br />";
$eintragen = mysqli_query($db, "INSERT INTO container (containernr, kennzeichen, datum) VALUES ('$mark', '$kennzeichen', NOW())");
if (!$eintragen)
echo "Hat nicht geklappt die Daten zur Datenbank zu senden!";
else {
echo "Daten wurden erfolgreich gesendet. <br/> Du wirst gleich weitergeleitet auf die Loginseite!";
session_destroy();
?>
<SCRIPT>
setTimeout("window.location.href='index.php'",5000);
</SCRIPT>
<?php
}
}
else
{
echo "Containernummer falsch. Bitte richtige Daten eingeben!";
?>
<SCRIPT>
setTimeout("window.location.href='ok.php'",1500);
</SCRIPT>
<?php
}
?>
Kommentar