Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błędna liczba kolumn :/
Forum PHP.pl > Forum > Bazy danych > MySQL
exman
Witam!
Umieszczam ten temat tutaj bo nie wiem gdzie sie bardziej nadaje. Otórz dostaje taka wiadomość o błędzie podczas wysyłania danych z formularza:
Kod
MySQL: Column count doesn't match value count at row 1

Rzecz w tym że sprawdzałem to już wiele razy i ilość kolumn jest taka jaka powinna być.
Oto kod sql który tworzy kolumny:
  1. CREATE TABLE `orders` (
  2. `id` INT( 4 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
  3. `name` VARCHAR( 50 ) NOT NULL ,
  4. `surname` VARCHAR( 60 ) NOT NULL ,
  5. `emial` VARCHAR( 70 ) NOT NULL ,
  6. `tel` DECIMAL( 16, 0 ) NOT NULL ,
  7. `cell` DECIMAL( 16, 0 ) ,
  8. `comment` TEXT,
  9. `companyName` VARCHAR( 60 ) ,
  10. `NIP` DECIMAL( 10, 0 ) ,
  11. `street` VARCHAR( 70 ) NOT NULL ,
  12. `postCode` DECIMAL( 5, 0 ) NOT NULL ,
  13. `city` VARCHAR( 55 ) NOT NULL ,
  14. `payment` VARCHAR( 30 ) NOT NULL ,
  15. `deliveryType` VARCHAR( 30 ) NOT NULL ,
  16. `sendName` VARCHAR( 50 ) ,
  17. `sendSurname` VARCHAR( 60 ) ,
  18. `sendStreet` VARCHAR( 50 ) ,
  19. `sendPostCode` DECIMAL( 5, 0 ) ,
  20. `sendCity` VARCHAR( 55 ) ,
  21. `createDate` DATE NOT NULL ,
  22. `realisationDate` DATE NULL ,
  23. `status` TINYINT( 2 ) NULL ,
  24. PRIMARY KEY ( `id` ) ,
  25. INDEX ( `name` , `surname` , `emial` , `tel` , `cell` )
  26. ) TYPE = innodb AUTO_INCREMENT = 1001;

Oto kod strony z formularzem:
  1. <?php
  2. include 'session.inc';
  3.  
  4. ?>
  5. <form action="index.php?action=thankYou" method="post" name="zamowienie">
  6. <table width="437" border="0" cellspacing="2" cellpadding="2" align="center">
  7. <tr>
  8. <td colspan="2">
  9. <p>1. Dane kontaktowe<br />
  10. <span class="undertekst">proszę wypełnić wszystkie pola oznaczone znakiem ( * )</span></p>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td align="right" valign="top"><label>Imię:</label></td>
  15. <td><input class="button" type="text" name="firstname" size="20" maxlength="50" />*</td>
  16. </tr>
  17. <tr>
  18. <td align="right" valign="middle"><label>Nazwisko:</label></td>
  19. <td><input class="button" type="text" name="surname" size="24" maxlength="60" />*</td>
  20. </tr>
  21. <tr>
  22. <td align="right"><label>e-mail:</label></td>
  23. <td><input class="button" type="text" name="email" size="24" maxlength="70" />*</td>
  24. </tr>
  25. <tr>
  26. <td align="right"><label>Numer telefonu:</label></td>
  27. <td><input class="button" type="text" name="directionNumber" size="2" maxlength="2" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } " />-<input class="button" type="text" name="phoneNumber" size="11" maxlength="11" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } "/>*</td>
  28. </tr>
  29. <tr>
  30. <td align="right"><label>Tel. komórkowy lub fax:</label></td>
  31. <td><input class="button" type="text" name="cellOrFax" size="18" maxlength="16" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } "/></td>
  32. </tr>
  33. <tr>
  34. <td align="right" valign="top"><label>Uwagi:</label></td>
  35. <td><textarea class="button" name="uwagi" rows="4" cols="26"></textarea></td>
  36. </tr>
  37. <tr>
  38. <td colspan="2" align="left">2. Dane adresowe</td>
  39. </tr>
  40. <tr>
  41. <td align="right">Nazwa firmy:</td>
  42. <td><input class="button" type="text" name="companyName" size="24" maxlength="60" /></td>
  43. </tr>
  44. <tr>
  45. <td align="right">NIP:</td>
  46. <td><input class="button" type="text" name="nip1" size="3" maxlength="3" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } "/>-<input type="text" name="nip2" size="3" maxlength="3" class="button" />-<input class="button" type="text" name="nip3" size="2" maxlength="2" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } "/>-<input class="button" type="text" name="nip4" size="2" maxlength="2" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } "/></td>
  47. </tr>
  48. <tr>
  49. <td align="right">Ulica:</td>
  50. <td><input class="button" type="text" name="street" size="15" maxlength="70" />*</td>
  51. </tr>
  52. <tr>
  53. <td align="right">Kod pocztowy:</td>
  54. <td><input class="button" type="text" name="postCodeOne" size="2" maxlength="2" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } " class="button" />-<input type="text" name="postCodeTwo" size="3" class="button" maxlength="3" onBlur="if(!sprawdz(this.value)){ alert('W tym polu moga znajdować się tylko liczby!'); this.value=''; } " />*</td>
  55. </tr>
  56. <tr>
  57. <td align="right">Miejscowość:</td>
  58. <td><input class="button" type="text" name="town" size="23" maxlength="55" />*</td>
  59. </tr>
  60. <tr>
  61. <td colspan="2" align="left">3. Sposób zapłaty<br />
  62. <span class="undertekst">przy wyborze przelew bankowy, dane do przelewu zostaną wysłane e-mailem.</span></td>
  63. </tr>
  64. <tr>
  65. <td align="right"><input type="radio" name="payment" value="pobranie" checked="checked" />za pobraniem </td>
  66. <td><input type="radio" name="payment" value="przelew" />przelew bankowy</td>
  67. </tr>
  68. <tr>
  69. <td colspan="2" align="left">4. Sposób dostarczenia<br />
  70. </td>
  71. </tr>
  72. <tr>
  73. <td align="right"><input type="radio" name="delivery" value="wysyłka" checked="checked" />wysyłka</td>
  74. <td><input type="radio" name="delivery" value="osobisty" />odbiór osobity</td>
  75. </tr>
  76. <tr>
  77. <td colspan="2" align="left">5. Dane wysyłki<br />
  78. <span class="undertekst">
  79. proszę podać jeśli zamówienie ma być wysłane na inny adres niż podany wyżej.</span></td>
  80. </tr>
  81. <tr>
  82. <td align="right" valign="top"><label>Imie:</label></td>
  83. <td><input class="button" type="text" name="sendName" size="20" maxlength="50" /></td>
  84. </tr>
  85. <tr>
  86. <td align="right" valign="middle"><label>Nazwisko:</label></td>
  87. <td><input class="button" type="text" name="sendSurname" size="24" maxlength="60" /></td>
  88. </tr>
  89. <tr>
  90. <td align="right">Ulica:</td>
  91. <td><input class="button" type="text" name="sendStreet" size="15" maxlength="50" /></td>
  92. </tr>
  93. <tr>
  94. <td align="right">Kod pocztowy:</td>
  95. <td><input class="button" type="text" name="sendPostCodeOne" size="2" maxlength="2" onBlur="if(!sprawdz(this.value)){ alert('W polu moga znajdować się tylko liczby!'); this.value=''; } "/>-<input class="button" type="text" name="sendPostCodeTwo" size="3" maxlength="3" onBlur="if(!sprawdz(this.value)){ alert('W tym polu moga znajdować się tylko liczby!'); this.value=''; } " /></td>
  96. </tr>
  97. <tr>
  98. <td align="right">Miejscowość:</td>
  99. <td><input class="button" type="text" name="sendCity" size="23" maxlength="55" /></td>
  100. </tr>
  101. <tr>
  102. <td colspan="2" align="center"><input class="button" type="button" value="wyślij" name="wyslij" value="wyślij" onClick="if(zamowienie.street.value=='' || zamowienie.firstname.value=='' || zamowienie.surname.value=='' || zamowienie.town.value=='' || zamowienie.email.value=='' || zamowienie.directionNumber.value=='' || zamowienie.phoneNumber.value=='' || zamowienie.postCodeOne.value=='' || zamowienie.postCodeTwo.value=='') alert('Proszę wypełnić wszystkie wymagane pola.'); else zamowienie.submit();" /></td>
  103. </tr>
  104. </table>
  105. </form>
  106. <p></p>


--
edit:
proszę używać odpowiedniego bbcode. poprawiam.
revyag

--
A to strony która przetwarza dane i zapisuje do tabeli:
  1. <?php
  2. include 'session.inc';
  3. require_once 'functions.php';
  4. ?>
  5. <div class="body" style="background-color:white;">
  6. <?php
  7. /*
  8. POBIERAMY INFORMACJIE Z FORMULARZA PRZETWARZAMY OBCIANAJC JEDNOCZESNIE DO ODPOWI
    EDNIEJ SLUGOSCI I LACZAC W CIAGI
  9. NAJPIERW SPRAWDZAMY CZY SA WYPELNIONE WYMAGANE POLA JESLI PRZEGLADARKA UZYTKOWNI
    KA NE OBSLUGUJE JAVASCRIPT
  10. */
  11. // PRZEPISUJEMY ZNIENNE
  12. if(isset($_SESSION['CART'])){
  13.  
  14.  $dane= array("imie"=>"");
  15.  
  16.  $imie = addslashes($_REQUEST['firstname']);
  17.  $nazwisko = addslashes($_REQUEST['surname']);
  18.  $email = addslashes($_REQUEST['email']);
  19.  $tel = addslashes($_REQUEST['directionNumber'].$_REQUEST['phoneNumber']);
  20.  $komfax = addslashes($_REQUEST['cellOrFax']);
  21.  if(!$komfax) $komfax=0;
  22.  $uwagi = addslashes($_REQUEST['uwagi']);
  23.  if(!$uwagi) $uwagi = "NULL";
  24.  
  25.  $nazwaFirmy = addslashes($_REQUEST['companyName']);
  26.  if(!$nazwaFirmy) $nazwaFirmy = "NULL";
  27.  $nip = addslashes($_REQUEST['nip1'].$_REQUEST['nip2'].$_REQUEST['nip3'].$_REQUEST['nip4']);
  28.  if(!$nip) $nip=0;
  29.  $ulica = addslashes($_REQUEST['street']);
  30.  $kodPocztowy = addslashes($_REQUEST['postCodeOne'].$_REQUEST['postCodeTwo']);
  31.  $miejscowosc = addslashes($_REQUEST['town']);
  32.  
  33.  $zaplata = addslashes($_REQUEST['payment']);
  34.  $wysylka = addslashes($_REQUEST['delivery']);
  35.  
  36. /*
  37. DANE DO WYSYŁKI JEŚLI SĄ 
  38. */
  39.  $wysylkaImie = addslashes($_REQUEST['sendName']);
  40. if(!$wysylkaImie) $wyssylkaImie="NULL";
  41.  $wysylkaNazwisko = addslashes($_REQUEST['sendSurname']);
  42. if(!$wysylkaNazwisko) $wysylkaNazwisko="NULL";
  43.  $wysylkaUlica = addslashes($_REQUEST['sendStreet']);
  44.  if(!$wysylkaUlica) $wyssylkaUlica="NULL";
  45.  $wysylkaKodPocztowy = $_REQUEST['sendPostCodeOne'].$_REQUEST['sendPostCodeTwo'];
  46. if(!$wysylkaKodPocztowy) $wysylkaKodPocztowy=0;
  47.  $wysylkaMiejscowosc = addslashes($_REQUEST['sendCity']);
  48.  
  49.  
  50. if($imie && $nazwisko && $email && $tel && $ulica && $kodPocztowy && $miejscowosc && $zaplata ){
  51.  
  52.  
  53. // formatujemy informacje wyswietlamy i wysylamy maila
  54.  
  55. require_once 'functions.php';
  56. /*
  57. id name surname email tel cell comment companyName NIP street postCode city payment deliveryType
     sendName sendSurname sendStreet sendPostCode sendCity createDate realisationDate
     status
  58. */
  59.  
  60. $sql = "INSERT INTO orders(name, surname, email, tel, cell, comment, companyName, NIP, street, postCod
    e, city, payment, deliveryType, sendName, sendSurname, sendStreet, sendPostCode, 
    sendCity, createDate) VALUES('$imie', '$nazwisko', '$email', $tel, $komfax, '$uwagi', '$nazwaFirmy', $nip, '$ulica', $kodPocztowy, '$miejscowosc', '$zaplata', '$wysylka', '$wysylkaImie', '$wysylkaNazwisko', '$wysylkaUlica', $wysylkaKodPocztowy, '$wysylkaMiejscowosc', NOW())"
    ;
  61. //echo $sql;
  62. query($sql);
  63. $result = query("SELECT LAST_INSERT_ID()");
  64. $result = mysql_result($result,'id');
  65. $msg = "
  66. <table width='437' border='0' cellspacing='0' cellpadding='0' align='center' style='margin:10px;'>
  67. <td style='font-size:11px;font-familly:Verdana Helvetica Arial'> Dziękujemy <strong>$imie $nazwisko</strong> za złożone zamówienie.
  68. <br><br>
  69. numer zamówienia to <strong>$result</strong>. Używaj go by dowiedzieć się o jego stanie.
  70. <br><br>
  71. Za niedługo skontaktuje się z Tobą nasz pracownik w celu weryfikacji zamówienia.
  72. <br><br>
  73. <table class='list' cellspacing='0' cellpadding='0' style='width:480px'>
  74. <tr><td colspan='5' class='tablelist' bgcolor='#74a7bc'><span style='color:white;font-weight:bolder'>Zamówienie</span></td></tr>
  75. <tr><td style='width:220px;border-right:1px solid #A2A2A2'>Nazwa:</td><td style='width:90px;text-align:center;border-right:1px solid #A2A2A2'>Kolor:</td><td style='width:75px;text-align:center;border-right:1px solid #A2A2A2'>Rozmiar:</td><td style='width:55px;text-align:center;border-right:1px solid #A2A2A2'>Cena:</td><td style='text-align:center'>Ilość:</td></tr>
  76.  
  77. ";
  78. // dodanie elementow z koszyka do wiadomosci
  79.  
  80. $i=0;
  81.  
  82. foreach($_SESSION['CART'] as $item){
  83. if($item['qty'] > 0){
  84.  
  85. $sql = "INSERT INTO orderprod VALUES($result,'".$item['productID']."','".$item['color']."','".$item['size']."',".$item['qty'].",".$item['price'].")";
  86. query($sql);
  87.  
  88. if($i %== 0) $bg="#d9d9d9"; else $bg = "white";
  89. $msg.= "<tr bgcolor='$bg'><td style='border-right:1px solid #A2A2A2'style='border-right:1px solid #A2A2A2'>".$item['productID']."</td><td style='text-align:center;border-right:1px solid #A2A2A2'> ".$item['color']."</td><td style='text-align:center;border-right:1px solid #A2A2A2'>".$item['size']."</td><td style='text-align:center;border-right:1px solid #A2A2A2'>".$item['price']."</td><td align='center'>".$item['qty']."</td></tr>";
  90. $i++;
  91. }
  92. }
  93.  
  94. $msg.= "</table>
  95. </td></table>";
  96.  
  97. echo $msg;
  98.  
  99. // usowamy koszyk z zakupami 
  100. unset($_SESSION['CART']);
  101.  
  102. // wysylamy maila
  103. mail($email, "zamówienie: ".$result, $msg, $additional_headers = null, $additional_parameters = null);
  104. }
  105. else header("Location: index.php?action=send");
  106.  
  107. }
  108. //nie udalo sie dodac zamowienia
  109. else {
  110. ?><div id="message">
  111. Wystąpił problem z dodaniem zamówienia. Przepraszamy.
  112. </div>
  113. <?php 
  114. }
  115. ?>
  116.  
  117. </div>
nospor
twoja tabela zawiera duzo pol. w jednym z zapytan niestety wkladasz do niej tylko pare pol, nie okreslając przy tym jakie to pola. stad ten blad.
przenosze na mysql

ps: do kodu HTML, umieszczaj bbcode HTML

edit: sorki, nie przylukalem ze wkladasz do innej tabeli winksmiley.jpg ale i tak przenosze

edit2: w tabeli masz pole emial a wkladasz do email winksmiley.jpg
exman
Eh sorry za blad w tabeli jest email - tak jak powinno byc. Nazwy pol się zgadzają. Nie rozumiem tylko skąd się bierze ten błąd dry.gif
kszychu
A ja proponuję wyświetlić sobie tego sqla przed dodaniem go do bazy. odejrzewam błędy w postaci przecinków, apostrofów czy innych smieci w wartościach.
No i jak zawsze polecam składnie typu:
INSERT INTO / UPDATE tabela SET
pole1 = 'wartosc1',
pole2 = 'wartosc2',
...
polen = 'wartoscn'
exman
Nie no poddaje sięnaprawdęnie mam pojęcia co jest grane sprawdziłem już wszystko dosłownie, przecinki apostrofy. Zrobiłem to tak
  1. <?php
  2. $sql="INSERT INTO orders SET
  3.  name = '$imie'
  4.  ,surname = '$nazwisko'
  5.  ,email = '$email'
  6.  ,tel = $tel
  7.  ,cell = $komfax
  8.  ,comment = '$uwagi'
  9.  ,companyName = '$nazwaFirmy'
  10.  ,NIP = $nip
  11.  ,street = '$ulica'
  12.  ,postCode = $kodPocztowy
  13.  ,city = '$miejscowosc'
  14.  ,payment = '$zaplata'
  15.  ,deliveryType = '$wysylka'
  16.  ,sendName = '$wysylkaImie'
  17.  ,sendSurname = '$wysylkaNazwisko'
  18.  ,sendStreet = '$wysylkaUlica'
  19.  ,sendPostCode = $wysylkaKodPocztowy
  20.  ,sendCity = '$wysylkaMiejscowosc'
  21.  ,createDate = NOW()
  22.  ,realisationDate = 0
  23.  ,status =0";
  24. ?>

żeby mieć większą czytelność i dalej lipa sad.gif
Oto sql przed dodaniem:
  1. INSERT
  2. INTO orders
  3. SET name = 'Adam' ,surname = 'adada' ,email = 'aa' ,tel = 1212121212121 ,cell = 0 ,comment = 'NULL' ,companyName = 'NULL' ,NIP = 0 ,street = '12' ,postCode = 12123 ,city = '123s12d12d' ,payment = 'pobranie' ,deliveryType = 'wysyłka' ,sendName = 'NULL' ,sendSurname = 'NULL' ,sendStreet = 'NULL' ,sendPostCode = 0 ,sendCity = 'NULL' ,createDate = NOW() ,realisationDate = NULL ,STATUS =0
nospor
hmmmm, dziwne. takie errory lecą gdy brakuje jakiejs kolumny przy insercie.
1) czy oby napewno to do tego zapytania te errory?
2) jesli do tego zapytania, to brakuje mi tam jedynie kolumny "id". ale z racji ze jest to auto_increment, to teoretycznie nie trzeba jej podawac. no ale skolei nigdy nie uzywalem inserta z set. dodaj wiec moze jeszcze : id=null

3) no i taki zapis: pole='NULL' nie przypisze ci ze to pole jest puste, ale wstawi ci do tego pola tekst NULL, co nie jest rownowazne z pustym polem smile.gif Musisz pisac bez ciapkow, czyli: pole=NULL
exman
Ja też pierwszy raz uzylem inserta z set ale nie rzuca się do tego tylko do tej ilości pól co mnie doprowadza do szału. Wszystko zaczeło się jak dorzuciłem kilka pól do tabeli orders (realisationDate i status) wcześniej działało porawnie a teraz coś takiego sad.gif
nospor
zapytanie jest poprawne. zalozylem se u siebie tę tabelę, wykonalem to zapytanie i dodaje cacy.

Cytat
Wszystko zaczeło się jak dorzuciłem kilka pól do tabeli orders (realisationDate i status) wcześniej działało porawnie
Skoro cos dorzuciles, to moze cos ci sie nie odswierzylo i dlatego nie dziala bo czegos nie widzi...
exman
Juz działa smile.gif thumbsupsmileyanim.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.