"auto_increment" Wert nach Anmeldung ausgeben

louS

Mitglied
Hallo,
ich weiss nicht wie ich am besten anfangen soll, damit ihr das versteht :)

Also ich hab eine Registrations Seite mit folgendem Code:
PHP:
    <td height="100%" style="padding:10px" class="content">&nbsp;</td>
    <td align="right" style="padding-right:10px" class="content">&nbsp;</td>
  </tr>
</table>
<? include('admin/config.php'); ?>

<? @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die(mysql_error());

mysql_select_db(DB_DATABASE) OR die(mysql_error());

$sql = "SELECT * FROM `conferences` WHERE ID=".intval($_GET['inhalt']);

$ausgabe = mysql_query($sql);

?>
<?
while($result = mysql_fetch_assoc($ausgabe))
{
?>
</td>
  </tr>
  <tr>
    <td valign="top">
<table class="content" width="532" align="center" cellpadding="0" cellspacing="0" id="table">
    <tr>
      <td style="padding:5px" width="456" bgcolor="#5f92ac" class="Headlines"><div align="center">Register for <?=$result['topic']?></div></td>
    </tr>
    <tr>
      <td>
        <table width="532" align="center" cellpadding="0" cellspacing="0" id="rundum">
        <form action="index.php?inhalt=send.php" method="post">
          <tr>
            <td width="73" valign="middle" bgcolor="#f5f5f5" style="padding:5px"><b>Company:</b></td>

      <td width="372" bgcolor="#f5f5f5" style="padding:5px"><input name="company" type="text" size="50" id="company">
      </input><input name="conference" value="<?=$result['topic']?>" type="hidden" size="50" id="conference"></input></td>
    </tr>
 <tr>

      <td valign="middle" bgcolor="#e9e9e9" style="padding:5px"><b>Department:</b></td>

      <td bgcolor="#e9e9e9" style="padding:5px"><input name="department" type="text" size="50" id="department">
      </input></td>
    </tr>
    <tr>

      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>First Name:</b></td>

      <td bgcolor="#F5F5F5" style="padding:5px"><input name="first" type="text" size="50" id="first">
      </input></td>
    </tr>
    <tr>
      <td valign="middle" bgcolor="#E9E9E9" style="padding:5px"><b>Last Name:</b></td>
      <td bgcolor="#E9E9E9" style="padding:5px"><input name="last" type="text" size="50" id="last">
      </input></td>
    </tr>
    <tr>
      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>Street:</b></td>
      <td bgcolor="#F5F5F5" style="padding:5px"><input name="street" type="text" size="50" id="street">
      </input></td>
    </tr>
     <tr>
      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>ZIP Code:</b></td>
      <td bgcolor="#F5F5F5" style="padding:5px"><input name="zip" type="text" size="50" id="zip">
      </input></td>
    </tr>
     <tr>
      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>City:</b></td>
      <td bgcolor="#F5F5F5" style="padding:5px"><input name="city" type="text" size="50" id="city">
      </input></td>
      </tr>
       <tr>
      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>State:</b></td>
      <td bgcolor="#F5F5F5" style="padding:5px"><input name="state" type="text" size="50" id="state">
      </input></td>
      </tr>
      <tr>
      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>Country:</b></td>
      <td bgcolor="#F5F5F5" style="padding:5px"><select name="country">
<option selected="selected"> Country</option>
<option> Germany</option>
<option> United States</option>
<option> United Kingdom</option>
<option> France</option>
</select></td>
      </tr>
    <tr>
      <td valign="middle" bgcolor="#E9E9E9" style="padding:5px"><b>Phone:</b></td>
      <td bgcolor="#E9E9E9" style="padding:5px"><input name="phone" type="text" size="50" id="phone">
      </input></td>
    </tr>
    <tr>
      <td valign="middle" bgcolor="#F5F5F5" style="padding:5px"><b>Fax:</b></td>
      <td bgcolor="#F5F5F5" style="padding:5px"><input name="fax" type="text" size="50">
      </input></td>
    </tr>
    <tr>
      <td valign="middle" bgcolor="#E9E9E9" style="padding:5px"><strong>E-Mail:</strong></td>
      <td bgcolor="#E9E9E9" style="padding:5px"><input name="email" type="text" size="50" id="email">
      </input></td>
    </tr>
    <tr>
      <td valign="top" bgcolor="#F5F5F5" class="content" style="padding:5px"><strong>VAT-number<br />
</strong>(for EU members only)<strong>:</strong></td>
      <td valign="top" bgcolor="#F5F5F5" style="padding:5px"><input name="vatnumber" type="text" value="" size="50" id="vatnumber" /></td>
    </tr>
    <tr>
      <td valign="top" bgcolor="#F5F5F5" class="content" style="padding:5px">&nbsp;</td>
      <td valign="top" bgcolor="#F5F5F5" style="padding:5px"><input name="image" type="image"  src="register.jpg" alt="register" width="130" height="18" /></td>
    </tr>        
          </form>
        </table>
      </td>
    </tr>
  </table>
<?
}
?>
Und die dazugehörige send.php sind wie folgt aus:
PHP:
<?

include('admin/config.php');



@mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die(mysql_error());

    mysql_select_db(DB_DATABASE) OR die(mysql_error());
    

if( isset( $_POST ) )

{

    $sql = 'INSERT INTO `rechnungen`
      (`conference`,`company`,`department`,`first`,`last`,`street`,`zip`,`city`,`state`,`country`,`phone`,`fax`,`email`,`vatnumber`)
       VALUES
       (
          "'.$_POST['conference'].'",
          "'.$_POST['company'].'",          
          "'.$_POST['department'].'",          
          "'.$_POST['first'].'",          
          "'.$_POST['last'].'",          
          "'.$_POST['street'].'",
          "'.$_POST['zip'].'",
          "'.$_POST['city'].'",
          "'.$_POST['state'].'",
          "'.$_POST['country'].'",          
          "'.$_POST['phone'].'",
          "'.$_POST['fax'].'",
          "'.$_POST['email'].'",
          "'.$_POST['vatnumber'].'"
       )';


    if( !mysql_query( $sql ) )
    {

       echo '<p align="center" class="content2">Fehler</p>';

    }

    else

    {
        echo '<p align="center" class="content2">';
        echo '<b>Registered for: </b>';
        echo $_POST["conference"];
        echo '<br><b>Company: </b>';
        echo $_POST["company"];
        echo '<br><b>Department: </b>';
        echo $_POST["department"];
        echo '<br><b>First Name: </b>';
        echo $_POST["first"];
        echo '<br><b>Last Name: </b>';
        echo $_POST["last"];
        echo '<br><b>Street: </b>';
        echo $_POST["street"];
        echo '<br><b>ZIP Code: </b>';
        echo $_POST["zip"];
        echo '<br><b>City: </b>';
        echo $_POST["city"];
        echo '<br><b>State: </b>';
        echo $_POST["state"];
        echo '<br><b>Country: </b>';
        echo $_POST["country"];
        echo '<br><b>Phone: </b>';
        echo $_POST["phone"];
        echo '<br><b>Fax: </b>';
        echo $_POST["fax"];
        echo '<br><b>E-Mail: </b>';
        echo $_POST["email"];
        echo '<br><b>VAT-Number: </b>';
        echo $_POST["vatnumber"];
        echo '</p>';
        
        

    }
}  

$Name = "on-c-c"; //senders name
$email = "lous@gmx.net"; //senders e-mail adress
$recipient = "lous@gmx.net"; //recipient
$mail_body = "Registered for: ".$_POST['conference']."\r\n";
$mail_body.= "Company: ".$_POST['company']."\r\n";
$mail_body.= "Department: ".$_POST['department']."\r\n";
$mail_body.= "First Name: ".$_POST['first']."\r\n";
$mail_body.= "Last Name: ".$_POST['last']."\r\n";
$mail_body.= "Street: ".$_POST['street']."\r\n";
$mail_body.= "ZIP Code: ".$_POST['zip']."\r\n";
$mail_body.= "City: ".$_POST['city']."\r\n";
$mail_body.= "State: ".$_POST['state']."\r\n";
$mail_body.= "Country: ".$_POST['country']."\r\n";
$mail_body.= "Phone: ".$_POST['phone']."\r\n";
$mail_body.= "Fax: ".$_POST['fax']."\r\n";
$mail_body.= "E-Mail: ".$_POST['email']."\r\n";
$mail_body.= "VAT-Number: ".$_POST['vatnumber']."\r\n";

$subject = "Subject for reviever"; //subject
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields

mail($recipient, $subject, $mail_body, $header); //mail command :) 

?>
Nunja, mir werden nun alle Daten auch per Mail geschickt und die Daten die PersonXY einträgt werden ihm auch auf der nächsten Seite angezeigt, doch da ist eine kleine Sache die ich gerne wissen würde :)

Und zwar werden im Table "rechnungen" sogenannte Rechnungsnummern generiert im Feld "invoice".



Die Frage diese Threads lautet nun, wie kann ich die "invoice" Nummer mir per mail schicken lassen und ihm auf der nächsten Seite anzeigen lassen?

Vielen Dank schonmal für eure Hilfe und allen noch nachträglich ein Frohes Neues Jahr :)
 
Ich war mal so frei die Code-Tags in Deinem Post in PHP-Tags umzuwandeln, der besseren Lesbarkeit wegen.

Zum Thema: Muss die Invoice-Nummer eine normale Zahl sein die immer inkrementiert wird (also wie der Titel suggeriert) oder wuerde eine zufaellige ID ausreichen.
 
Ich war mal so frei die Code-Tags in Deinem Post in PHP-Tags umzuwandeln, der besseren Lesbarkeit wegen.

Zum Thema: Muss die Invoice-Nummer eine normale Zahl sein die immer inkrementiert wird (also wie der Titel suggeriert) oder wuerde eine zufaellige ID ausreichen.

Also erstmal Vielen Dank für deine schnelle Antwort.

Zur Nummer: Diese sollte wie folgt aussehen "10000/2009" die nächste wäre dann "10001/2009".
Den Startwert der invoice nummer hab ich schon auf 10000 erstellt, dass funktioniert auch. Und das mit dem "/2009" kann ich ja manuell bei der Ausgabe hinzufügen.


Aber die nummer kann natürlich auch zufällig genriert werden, aber wenns geht mit 5 Ziffern ;)


Danke
 
Zuletzt bearbeitet:
Ich würde das so machen:
PHP:
<?
<?
include('admin/config.php');



@mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die(mysql_error());

    mysql_select_db(DB_DATABASE) OR die(mysql_error());
    

if( isset( $_POST ) )

{

    $sql = 'INSERT INTO `rechnungen`
      (`conference`,`company`,`department`,`first`,`last`,`street`,`zip`,`city`,`state`,`country`,`phone`,`fax`,`email`,`vatnumber`)
       VALUES
       (
          "'.$_POST['conference'].'",
          "'.$_POST['company'].'",          
          "'.$_POST['department'].'",          
          "'.$_POST['first'].'",          
          "'.$_POST['last'].'",          
          "'.$_POST['street'].'",
          "'.$_POST['zip'].'",
          "'.$_POST['city'].'",
          "'.$_POST['state'].'",
          "'.$_POST['country'].'",          
          "'.$_POST['phone'].'",
          "'.$_POST['fax'].'",
          "'.$_POST['email'].'",
          "'.$_POST['vatnumber'].'"
       )';


    if( !mysql_query( $sql ) )
    {

       echo '<p align="center" class="content2">Fehler</p>';

    }

    else

    {                
        echo '<p align="center" class="content2">';
        echo '<b>Registered for: </b>';
        echo $_POST["conference"];
        echo '<br><b>Company: </b>';
        echo $_POST["company"];
        echo '<br><b>Department: </b>';
        echo $_POST["department"];
        echo '<br><b>First Name: </b>';
        echo $_POST["first"];
        echo '<br><b>Last Name: </b>';
        echo $_POST["last"];
        echo '<br><b>Street: </b>';
        echo $_POST["street"];
        echo '<br><b>ZIP Code: </b>';
        echo $_POST["zip"];
        echo '<br><b>City: </b>';
        echo $_POST["city"];
        echo '<br><b>State: </b>';
        echo $_POST["state"];
        echo '<br><b>Country: </b>';
        echo $_POST["country"];
        echo '<br><b>Phone: </b>';
        echo $_POST["phone"];
        echo '<br><b>Fax: </b>';
        echo $_POST["fax"];
        echo '<br><b>E-Mail: </b>';
        echo $_POST["email"];
        echo '<br><b>VAT-Number: </b>';
        echo $_POST["vatnumber"];
        echo '<br /><b>Rechnungsnummer: </b>';
        echo mysql_insert_id()."/2009";
        echo '</p>';
        
        

    }
}  

$Name = "on-c-c"; //senders name
$email = "lous@gmx.net"; //senders e-mail adress
$recipient = "lous@gmx.net"; //recipient
$mail_body = "Registered for: ".$_POST['conference']."\r\n";
$mail_body.= "Company: ".$_POST['company']."\r\n";
$mail_body.= "Department: ".$_POST['department']."\r\n";
$mail_body.= "First Name: ".$_POST['first']."\r\n";
$mail_body.= "Last Name: ".$_POST['last']."\r\n";
$mail_body.= "Street: ".$_POST['street']."\r\n";
$mail_body.= "ZIP Code: ".$_POST['zip']."\r\n";
$mail_body.= "City: ".$_POST['city']."\r\n";
$mail_body.= "State: ".$_POST['state']."\r\n";
$mail_body.= "Country: ".$_POST['country']."\r\n";
$mail_body.= "Phone: ".$_POST['phone']."\r\n";
$mail_body.= "Fax: ".$_POST['fax']."\r\n";
$mail_body.= "E-Mail: ".$_POST['email']."\r\n";
$mail_body.= "VAT-Number: ".$_POST['vatnumber']."\r\n";
$mail_body.= "Rechnungsnummer: ".mysql_insert_id()."/2009\r\n";

$subject = "Subject for reviever"; //subject
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields

mail($recipient, $subject, $mail_body, $header); //mail command :) 
?>

edit: einen fehler verbessert.
edit2: script vereinfacht
 
Zuletzt bearbeitet:
Ach hi Maniac :)
Danke für die Antwort, aber nun bekomm ich folgenden Fehler.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in send.php on line 47

Und line 47 ist: while($res = mysql_fetch_array($sql))


Und die Rechnungsnummer wird so ausgegeben
"Rechnungsnummer: /2009"


*EDIT*
hab deine neue vers genommen, doch da ist "<?" zuviel am anfang :)

Nun gehts super :) vielen vielen dank.

Darf ich hier drin noch eine Frage stellen, denn diese hat zwar auch was mit dem Formular zu tun aber nichts mit auto increment oder der invoice nummer
 
Also ich hab 2 Tabellen in der DB.
Einmal "rechnungen" dort werden die oben genannten Daten eingetragen und einmal die Tabelle "conferences" und dort werden die Infos wie zb. Titel der Konferenz, Preis der Konferenz usw. eingetragen.

Nun gibt es 2 Sachen.
In der Tabelle "conferences" gibt es u.a. noch 3 Spalten "voucher"(dort wird der voucher preis eingetragen), "subscriber"(dort wird der subscriber preis eingetrafe) und "none"(dort wird der "none" preis eingetragen)

Der Käufer kann in dem Formular(die Radionbuttons muss ich noch hinzufügen) auswählen ob:

1. Voucher Code (Gutscheincode müsste dann von der DB überprüft werden)

2. Subscriber (Kundennummer die in der DB eingetragen ist, muss mit dieser überprüft werden)

3. None (Preis aus feld "none" abfragen)


Wie kann ich das nun anstellen, dass wenn der Käufer einen Voucher Code eingibt, dass dann der Preis aus Tabelle von dem Feld "voucher" genommen wird?! Das selbe mit Subscriber und none :)



Zusätzlich hab ich noch ein Script womit man die VAT Nummer(USt-IdNr.) überprüfen lassen kann nur wie kann ich dieses in das Formular einfügen?

Code:
/*==============================================================================
Example call:
  
  if (checkVATNumber (myVATNumber)) 
      alert ("VAT number has a valid format")
  else 
      alert ("VAT number has invalid format");
                    
------------------------------------------------------------------------------*/

function checkVATNumber (toCheck) {
 
  // Array holds the regular expressions for the valid VAT number
  var vatexp = new Array ();
  
  // To change the default country (e.g. from the UK to Germany - DE):
  //    1.  Change the country code in the defCCode variable below to "DE".
  //    2.  Remove the question mark from the regular expressions associated 
  //        with the UK VAT number: i.e. "(GB)?" -> "(GB)"
  //    3.  Add a question mark into the regular expression associated with
  //        Germany's number following the country code: i.e. "(DE)" -> "(DE)?"
  
  var defCCode = "GB";
  
  // Note - VAT codes without the "**" in the comment do not have check digit
  // checking.

  vatexp.push (/^(AT)U(\d{8})$/);                           //** Austria
  vatexp.push (/^(BE)(\d{9,10})$/);                         //** Belgium 
  vatexp.push (/^(BG)(\d{9,10})$/);                         // Bulgaria 
  vatexp.push (/^(CY)(\d{8}[A-Z])$/);                       //** Cyprus 
  vatexp.push (/^(CZ)(\d{8,10})(\d{3})?$/);                 //** Czech Republic
  vatexp.push (/^(DE)(\d{9})$/);                            //** Germany 
  vatexp.push (/^(DK)((\d{8}))$/);                          //** Denmark 
  vatexp.push (/^(EE)(\d{9})$/);                            //** Estonia 
  vatexp.push (/^(EL)(\d{8,9})$/);                          //** Greece 
  vatexp.push (/^(ES)([A-Z]\d{8})$/);                       //** Spain (1)
  vatexp.push (/^(ES)(\d{8}[A-Z])$/);                       // Spain (2)
  vatexp.push (/^(ES)([A-Z]\d{7}[A-Z])$/);                  //** Spain (3)
  vatexp.push (/^(EU)(\d{9})$/);                            //** EU-type 
  vatexp.push (/^(FI)(\d{8})$/);                            //** Finland 
  vatexp.push (/^(FR)(\d{11})$/);                           //** France (1)
  vatexp.push (/^(FR)[(A-H)|(J-N)|(P-Z)]\d{10}$/);          // France (2)
  vatexp.push (/^(FR)\d[(A-H)|(J-N)|(P-Z)]\d{9}$/);         // France (3)
  vatexp.push (/^(FR)[(A-H)|(J-N)|(P-Z)]{2}\d{9}$/);        // France (4)
  vatexp.push (/^(GB)?(\d{9})$/);                           //** UK (standard)
  vatexp.push (/^(GB)?(\d{10})$/);                          //** UK (Commercial)
  vatexp.push (/^(GB)?(\d{12})$/);                          //UK (IOM standard)
  vatexp.push (/^(GB)?(\d{13})$/);                          //UK (IOM commercial)
  vatexp.push (/^(GB)?(GD\d{3})$/);                         //** UK (Government)
  vatexp.push (/^(GB)?(HA\d{3})$/);                         //** UK (Health authority)
  vatexp.push (/^(GR)(\d{8,9})$/);                          //** Greece 
  vatexp.push (/^(HU)(\d{8})$/);                            //** Hungary 
  vatexp.push (/^(IE)(\d{7}[A-W])$/);                       //** Ireland (1)
  vatexp.push (/^(IE)([7-9][A-Z\*\+)]\d{5}[A-W])$/);        //** Ireland (2)
  vatexp.push (/^(IT)(\d{11})$/);                           //** Italy 
  vatexp.push (/^(LV)(\d{11})$/);                           //** Latvia 
  vatexp.push (/^(LT)(\d{9}|\d{12})$/);                     //** Lithunia
  vatexp.push (/^(LU)(\d{8})$/);                            //** Luxembourg 
  vatexp.push (/^(MT)(\d{8})$/);                            //** Malta
  vatexp.push (/^(NL)(\d{9})B\d{2}$/);                      //** Netherlands
  vatexp.push (/^(PL)(\d{10})$/);                           //** Poland
  vatexp.push (/^(PT)(\d{9})$/);                            //** Portugal
  vatexp.push (/^(RO)(\d{2,10})$/);                         //** Romania
  vatexp.push (/^(SI)(\d{8})$/);                            //** Slovenia
  vatexp.push (/^(SK)(\d{9}|\d{10})$/);                     // Slovakia Republic
  vatexp.push (/^(SE)(\d{10}\d[1-4])$/);                    //** Sweden

  // Load up the string to check
  var VATNumber = toCheck.toUpperCase();
  
  // Remove spaces from the VAT number to help validation
  var chars = [" ","-",",","."];
  for ( var i=0; i<chars.length; i++) {
    while (VATNumber.indexOf(chars[i])!= -1) {
      VATNumber = VATNumber.slice (0,VATNumber.indexOf(chars[i])) + VATNumber.slice (VATNumber.indexOf(chars[i])+1);
    }
  }

  // Assume we're not going to find a valid VAT number
  var valid = false;                         
  
  // Check the string against the types of VAT numbers
  for (i=0; i<vatexp.length; i++) {
    if (vatexp[i].test(VATNumber)) {
      
      var cCode = RegExp.$1;                             // Isolate country code
      var cNumber = RegExp.$2;                           // Isolate the number
      if (cCode.length == 0) cCode = defCCode;           // Set up default country code
      
      // Now look at the check digits for those countries we know about.
      switch (cCode) {     
        case "AT":
          valid = ATVATCheckDigit (cNumber);
          break;        
        case "BE":
          valid = BEVATCheckDigit (cNumber);
          break;          
        case "BG":
          // The SIMA validation rules are incorrect for Bulgarian numbers.
          valid = true;
          break;             
        case "CY":
          valid = CYVATCheckDigit (cNumber);
          break;          
        case "CZ":
          valid = CZVATCheckDigit (cNumber);
          break;      
        case "DE":
          valid = DEVATCheckDigit (cNumber);
          break;       
        case "DK":
          valid = DKVATCheckDigit (cNumber);
          break;                 
        case "EE":
          valid = EEVATCheckDigit (cNumber);
          break;             
        case "EL":
          valid = ELVATCheckDigit (cNumber);
          break;       
        case "ES":
          valid = ESVATCheckDigit (cNumber);
          break;       
        case "EU":
          valid = EUVATCheckDigit (cNumber);
          break;       
        case "FI":
          valid = FIVATCheckDigit (cNumber);
          break;        
        case "FR":
          valid = FRVATCheckDigit (cNumber);
          break;         
        case "GB":
          valid = UKVATCheckDigit (cNumber);
          break;                     
        case "GR":
          valid = ELVATCheckDigit (cNumber);
          break;             
        case "HU":
          valid = HUVATCheckDigit (cNumber);
          break;         
        case "IE":
          valid = IEVATCheckDigit (cNumber);
          break;              
        case "IT":
          valid = ITVATCheckDigit (cNumber);
          break;            
        case "LT":
          valid = LTVATCheckDigit (cNumber);
          break;            
        case "LU":
          valid = LUVATCheckDigit (cNumber);
          break;            
        case "LV":
          valid = LVVATCheckDigit (cNumber);
          break;             
        case "MT":
          valid = MTVATCheckDigit (cNumber);
          break;           
        case "NL":
          valid = NLVATCheckDigit (cNumber);
          break;            
        case "PL":      
          valid = PLVATCheckDigit (cNumber);
          break;         
        case "PT":
          valid = PTVATCheckDigit (cNumber);
          break;           
        case "RO":
          valid = ROVATCheckDigit (cNumber);
          break;       
        case "SE":
          valid = SEVATCheckDigit (cNumber);
          break;        
        case "SI":
          valid = SIVATCheckDigit (cNumber);
          break;     
        default:
          valid = true;
      }
            
      // Load new VAT number back into the form element
      if (valid) valid = VATNumber;
      
      // We have found that the number is valid - break from loop
      break;
    }
  }
  
  // Return with either an error or the reformatted VAT number
  return valid;
}

function ATVATCheckDigit (vatnumber) {

  // Checks the check digits of an Austrian VAT number.
  
  var total = 0;
  var multipliers = [1,2,1,2,1,2,1];
  var temp = 0;
  
  // Extract the next digit and multiply by the appropriate multiplier.  
  for (var i = 0; i < 7; i++) {
    temp = Number(vatnumber.charAt(i)) * multipliers[i];
    if (temp > 9)
      total = total + Math.floor(temp/10) + temp%10
    else
      total = total + temp;
  }  
  
  // Establish check digit.
  total = 10 - (total+4) % 10; 
  if (total == 10) total = 0;
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (7,8)) 
    return true
  else 
    return false;
}

function BEVATCheckDigit (vatnumber) {

  // Checks the check digits of a Belgium VAT number.
  
  // First character of 10 digit numbers should be 0
  if (vatnumber.length == 10 && vatnumber.slice(0,1) != "0") return false;
  
  // Nine digit numbers have a 0 inserted at the front.
  if (vatnumber.length == 9) vatnumber = "0" + vatnumber;
  
  // Modulus 97 check on last nine digits
  if (97 - vatnumber.slice (0,8) % 97 == vatnumber.slice (8,10)) 
    return true
  else 
    return false;
}

function CYVATCheckDigit (vatnumber) {

  // Checks the check digits of a Cypriot VAT number.
  
  // Extract the next digit and multiply by the counter.
  var total = 0;
  for (var i = 0; i < 8; i++) {
    var temp = Number(vatnumber.charAt(i));
    if (i % 2 == 0) {
      switch (temp) {
        case 0: temp = 1; break;
        case 1: temp = 0; break;
        case 2: temp = 5; break;
        case 3: temp = 7; break;
        case 4: temp = 9; break;
        default: temp = temp*2 + 3;
      }
    }
    total = total + temp;
  }
  
  // Establish check digit using modulus 26, and translate to char. equivalent.
  total = total % 26;
  total = String.fromCharCode(total+65);
  
  // Check to see if the check digit given is correct
  if (total == vatnumber.substr (8,1)) 
    return true 
  else 
    return false;
}

function CZVATCheckDigit (vatnumber) {

  // Checks the check digits of a Czech Republic VAT number.
  
  var total = 0;
  var multipliers = [8,7,6,5,4,3,2];
  
  // Only do check digit validation for standard VAT numbers
  if (vatnumber.length != 8) return true;
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 7; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digit.
  total = 11 - total % 11;
  if (total == 10) total = 0; 
  if (total == 11) total = 1; 
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (7,8)) 
    return true
  else 
    return false;
}

function DEVATCheckDigit (vatnumber) {

  // Checks the check digits of a German VAT number.
  
  var product = 10;
  var sum = 0;     
  var checkdigit = 0;                      
  for (var i = 0; i < 8; i++) {
    
    // Extract the next digit and implement perculiar algorithm!.
    sum = (Number(vatnumber.charAt(i)) + product) % 10;
    if (sum == 0) {sum = 10};
    product = (2 * sum) % 11;
  }
  
  // Establish check digit.  
  if (11 - product == 10) {checkdigit = 0} else {checkdigit = 11 - product};
  
  // Compare it with the last two characters of the VAT number. If the same, 
  // then it is a valid check digit.
  if (checkdigit == vatnumber.slice (8,9))
    return true
  else 
    return false;
}

function DKVATCheckDigit (vatnumber) {

  // Checks the check digits of a Danish VAT number.
  
  var total = 0;
  var multipliers = [2,7,6,5,4,3,2,1];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digit.
  total = total % 11;
  
  // The remainder should be 0 for it to be valid..
  if (total == 0) 
    return true
  else 
    return false;
}

function EEVATCheckDigit (vatnumber) {

  // Checks the check digits of an Estonian VAT number.
  
  var total = 0;
  var multipliers = [3,7,1,3,7,1,3,7];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits using modulus 10.
  total = 10 - total % 10;
  if (total == 10) total = 0;
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (8,9))
    return true
  else 
    return false;
}

function ELVATCheckDigit (vatnumber) {

  // Checks the check digits of a Greek VAT number.
  
  var total = 0;
  var multipliers = [256,128,64,32,16,8,4,2];
  
  //eight character numbers should be prefixed with an 0.
  if (vatnumber.length == 8) {vatnumber = "0" + vatnumber};
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digit.
  total = total % 11;
  if (total > 9) {total = 0;};  
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (8,9)) 
    return true
  else 
    return false;
}

function ESVATCheckDigit (vatnumber) {

  // Checks the check digits of a Spanish VAT number.
  
  var total = 0; 
  var temp = 0;
  var multipliers = [2,1,2,1,2,1,2];
  var esexp = new Array ();
  esexp.push (/^[A-H]\d{8}$/);
  esexp.push (/^[N|P|Q|S]\d{7}[A-Z]$/);
  esexp.push (/^[0-9]{8}[A-Z]$/);
  var i = 0;
  
  // With profit companies
  if (esexp[0].test(vatnumber)) {
  
    // Extract the next digit and multiply by the counter.
    for (i = 0; i < 7; i++) {
      temp = Number(vatnumber.charAt(i+1)) * multipliers[i];
      if (temp > 9) 
        total = total + Math.floor(temp/10) + temp%10 
      else 
        total = total + temp;
    }   
    
    // Now calculate the check digit itself. 
    total = 10 - total % 10;
    if (total == 10) {total = 0;}
    
    // Compare it with the last character of the VAT number. If it is the same, 
    // then it's a valid check digit.
    if (total == vatnumber.slice (8,9)) 
      return true
    else 
      return false;
  }
  
  // Non-profit companies
  else if (esexp[1].test(vatnumber)) {
  
    // Extract the next digit and multiply by the counter.
    for (i = 0; i < 7; i++) {
      temp = Number(vatnumber.charAt(i+1)) * multipliers[i];
      if (temp > 9) 
        total = total + Math.floor(temp/10) + temp%10 
      else 
        total = total + temp;
    }    
    
    // Now calculate the check digit itself.
    total = 10 - total % 10;
    total = String.fromCharCode(total+64);
    
    // Compare it with the last character of the VAT number. If it is the same, 
    // then it's a valid check digit.
    if (total == vatnumber.slice (8,9)) 
      return true
    else 
      return false;
  }
    
  // Personal number (NIF)
  else if (esexp[2].test(vatnumber)) {
      return vatnumber.charAt(8) == 'TRWAGMYFPDXBNJZSQVHLCKE'.charAt(Number(vatnumber.substring(0, 8)) % 23);
  }
    
  else return true;
}

function EUVATCheckDigit (vatnumber) {

  // We know litle about EU numbers apart from the fact that the first 3 digits 
  // represent the country, and that there are nine digits in total.
  return true;
}

function FIVATCheckDigit (vatnumber) {

  // Checks the check digits of a Finnish VAT number.
  
  var total = 0; 
  var multipliers = [7,9,10,5,8,4,2];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 7; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digit.
  total = 11 - total % 11;
  if (total > 9) {total = 0;};  
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (7,8)) 
    return true
  else 
    return false;
}

function FRVATCheckDigit (vatnumber) {

  // Checks the check digits of a French VAT number.
  
  if (!(/^\d{11}$/).test(vatnumber)) return true;
  
  // Extract the last nine digits as an integer.
  var total = vatnumber.substring(2); 
  
  // Establish check digit.
  total = (total*100+12) % 97;
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (0,2)) 
    return true
  else 
    return false;
}

function HUVATCheckDigit (vatnumber) {

  // Checks the check digits of a Hungarian VAT number.
  
  var total = 0;
  var multipliers = [9,7,3,1,9,7,3];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 7; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digit.
  total = 10 - total % 10; 
  if (total == 10) total = 0;
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (7,8)) 
    return true
  else 
    return false;
}

function IEVATCheckDigit (vatnumber) {

  // Checks the check digits of an Irish VAT number.
  
  var total = 0; 
  var multipliers = [8,7,6,5,4,3,2];
  
  // If the code is in the old format, we need to convert it to the new.
  if (/^\d[A-Z\*\+]/.test(vatnumber)) {
    vatnumber = "0" + vatnumber.substring(2,7) + vatnumber.substring(0,1) + vatnumber.substring(7,8);
  }
    
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 7; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digit using modulus 23, and translate to char. equivalent.
  total = total % 23;
  if (total == 0)
    total = "W"
  else
    total = String.fromCharCode(total+64);
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (7,8)) 
    return true
  else 
    return false;
}

function ITVATCheckDigit (vatnumber) {

  // Checks the check digits of an Italian VAT number.
  
  var total = 0;
  var multipliers = [1,2,1,2,1,2,1,2,1,2];
  var temp;
    
  // The last three digits are the issuing office, and cannot exceed more 201
  temp=Number(vatnumber.slice(0,7));
  if (temp==0) return false;
  temp=Number(vatnumber.slice(7,10));
  if ((temp<1) || (temp>201)) return false;
  
  // Extract the next digit and multiply by the appropriate  
  for (var i = 0; i < 10; i++) {
    temp = Number(vatnumber.charAt(i)) * multipliers[i];
    if (temp > 9) 
      total = total + Math.floor(temp/10) + temp%10 
    else 
      total = total + temp;
  }
  
  // Establish check digit.
  total = 10 - total % 10;
  if (total > 9) {total = 0;};  
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (10,11)) 
    return true
  else 
    return false;
}

function LTVATCheckDigit (vatnumber) {

  // Checks the check digits of a Lithuanian VAT number.
  
  // Only do check digit validation for standard VAT numbers
  if (vatnumber.length != 9) return true;
  
  // Extract the next digit and multiply by the counter+1.
  var total = 0;
  for (var i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * (i+1);
  
  // Can have a double check digit calculation!
  if (total % 11 == 10) {
    var multipliers = [3,4,5,6,7,8,9,1];
    total = 0;
    for (i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  }
  
  // Establish check digit.
  total = total % 11;
  if (total == 10) {total = 0;}; 
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (8,9)) 
    return true
  else 
    return false;
}

function LUVATCheckDigit (vatnumber) {

  // Checks the check digits of a Luxembourg VAT number.
  
  if (vatnumber.slice (0,6) % 89 == vatnumber.slice (6,8)) 
    return true
  else 
    return false;
}

function LVVATCheckDigit (vatnumber) {

  // Checks the check digits of a Latvian VAT number.
  
  // Only check the legal bodies
  if ((/^[0-3]/).test(vatnumber)) return true; 
  
  var total = 0;
  var multipliers = [9,1,4,8,3,10,2,5,7,6];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 10; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits by getting modulus 11.
  if (total%11 == 4 && vatnumber[0] ==9) total = total - 45;
  if (total%11 == 4) 
    total = 4 - total%11
  else if (total%11 > 4) 
    total = 14 - total%11
  else if (total%11 < 4) 
    total = 3 - total%11;
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (10,11)) 
    return true
  else 
    return false;
}

function MTVATCheckDigit (vatnumber) {

  // Checks the check digits of a Maltese VAT number.
  
  var total = 0;
  var multipliers = [3,4,6,7,8,9];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 6; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits by getting modulus 37.
  total = 37 - total % 37;
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (6,8) * 1) 
    return true
  else 
    return false;
}

function NLVATCheckDigit (vatnumber) {

  // Checks the check digits of a Dutch VAT number.
  
  var total = 0;                                 // 
  var multipliers = [9,8,7,6,5,4,3,2];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits by getting modulus 11.
  total = total % 11;
  if (total > 9) {total = 0;};  
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (8,9)) 
    return true
  else 
    return false;
}

function PLVATCheckDigit (vatnumber) {

  // Checks the check digits of a Polish VAT number.
  
  var total = 0;
  var multipliers = [6,5,7,2,3,4,5,6,7];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 9; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits subtracting modulus 11 from 11.
  total = total % 11;
  if (total > 9) {total = 0;};
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (9,10)) 
    return true
  else 
    return false;
}

function PTVATCheckDigit (vatnumber) {

  // Checks the check digits of a Portugese VAT number.
  
  var total = 0;
  var multipliers = [9,8,7,6,5,4,3,2];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 8; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits subtracting modulus 11 from 11.
  total = 11 - total % 11;
  if (total > 9) {total = 0;};
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (8,9)) 
    return true
  else 
    return false;
}

function ROVATCheckDigit (vatnumber) {

  // Checks the check digits of a Romanian VAT number.
  
  var multipliers = [7,5,3,2,1,7,5,3,2,1];
  
  // Extract the next digit and multiply by the counter.
  var VATlen = vatnumber.length;
  multipliers = multipliers.slice (10-VATlen);
  var total = 0;
  for (var i = 0; i < vatnumber.length-1; i++) {
    total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  }  
  
  // Establish check digits by getting modulus 11.
  total = (10 * total) % 11;
  if (total == 10) total = 0; 
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (vatnumber.length-1, vatnumber.length))
    return true
  else 
    return false;
}

function SEVATCheckDigit (vatnumber) {

  // Checks the check digits of a Swedish VAT number.
  
  var total = 0;
  var multipliers = [2,1,2,1,2,1,2,1,2];
  var temp = 0;
  
  // Extract the next digit and multiply by the appropriate multiplier.
  for (var i = 0; i < 9; i++) {
    temp = Number(vatnumber.charAt(i)) * multipliers[i];
    if (temp > 9)
      total = total + Math.floor(temp/10) + temp%10
    else 
      total = total + temp;
  }
  
  // Establish check digits by subtracting mod 10 of total from 10.
  total = 10 - (total % 10); 
  if (total == 10) total = 0;
  
  // Compare it with the 10th character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (9,10)) 
    return true
  else 
    return false;
}

function SKVATCheckDigit (vatnumber) {

  // Checks the check digits of a Slovak VAT number.
  
  var total = 0; 
  var multipliers = [8,7,6,5,4,3,2];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 3; i < 9; i++) {
    total = total + Number(vatnumber.charAt(i)) * multipliers[i-3];
  }  
  
  // Establish check digits by getting modulus 11.
  total = 11 - total % 11;
  if (total > 9) total = total - 10;  
  
  // Compare it with the last character of the VAT number. If it is the same, 
  // then it's a valid check digit.
  if (total == vatnumber.slice (9,10)) 
    return true
  else 
    return false;
}

function SIVATCheckDigit (vatnumber) {

  // Checks the check digits of a Slovenian VAT number.
  
  var total = 0; 
  var multipliers = [8,7,6,5,4,3,2];
  
  // Extract the next digit and multiply by the counter.
  for (var i = 0; i < 7; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
  // Establish check digits by subtracting 97 from total until negative.
  total = 11 - total % 11;
  if (total > 9) {total = 0;};  
  
  // Compare the number with the last character of the VAT number. If it is the 
  // same, then it's a valid check digit.
  if (total == vatnumber.slice (7,8)) 
    return true
  else 
    return false;
}

function UKVATCheckDigit (vatnumber) {

  // Checks the check digits of a UK VAT number.
  
  var multipliers = [8,7,6,5,4,3,2];
  
  // Government departments
  if (vatnumber.substr(0,2) == 'GD') {
    if (vatnumber.substr(2,3) < 500) 
      return true 
    else 
      return false;
  }
  
  // Health authorities
  if (vatnumber.substr(0,2) == 'HA') {
    if (vatnumber.substr(2,3) > 499) 
      return true 
    else 
      return false;
  }
  
  // Standard and commercial numbers
  if (vatnumber.length == 9 || vatnumber.length == 10) {
    var total = 0;
    if (vatnumber.length == 10 && vatnumber.slice (9,10) != '3') return false;
    
    // Extract the next digit and multiply by the counter.
    for (var i = 0; i < 7; i++) total = total + Number(vatnumber.charAt(i)) * multipliers[i];
  
    // Establish check digits by subtracting 97 from total until negative.
    while (total > 0) {total = total - 97;}    
  
    // Get the absolute value and compare it with the last two characters of the
    // VAT number. If the same, then it is a valid check digit.
    total = Math.abs(total);
    if (total == vatnumber.slice (7,9)) 
      return true 
    else  
      return false;
  }
  
  // We don't check 12 and 13 digit UK numbers - not only can we not find any, 
  // but the information found on the format is contradictory.
  
  return true;
}


Und das kommt in den Header der Seite:
Code:
<script src="jsvat.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
function testVATNumber () {
  var myVATNumber = document.getElementById('vatnumber').value;
  if (checkVATNumber (myVATNumber)) {
    document.getElementById('vatnumber').value = checkVATNumber (myVATNumber)
    alert ("VAT number has a valid format"); 
  }  
  else alert ("VAT number has an invalid format");
}
//-->
</script>


Wenn man nämlich nun eine richtige VAT Nummer eingibt und aus der EU kommt(ausgeschlossen DE) dann bleibt der Preis aus den Spalten "voucher" "subscriber" oder "none" und wenn man keine eingibt dann kommen 19% drauf.

Für den rest der Welt gilt keine 19%.



Ich weiss das es nun ein bisschen viel ist, notfalls zahl ich auch für eure Hilfe.

Vielen Dank schonmal.
 
Zurück