İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Multiple ile birdenfazla veriyi kaydetmek.

S3rs3r!

0
İyinet Üyesi
Katılım
2 Ocak 2005
Mesajlar
16
Reaction score
0
Merhaba.

Ufak bir çalışmam var ve bir kısmında takıldım. Kısaca anlatayım sorunumu.

Elimde bir select kısmı var ve kodları şu şekilde.

PHP:
<SELECT NAME="kparcalar[]" SIZE=10 MULTIPLE >
<?
$sorgu=mysql_query("SELECT * FROM stok" );
$toplam=mysql_num_rows($sorgu);

for ($i = 1; $i <= $toplam; $i++)
while($row = mysql_fetch_array($sorgu)) {
 {
  echo '<OPTION VALUE=" ' . $row["isim"] . '">' . $row["isim"] ;
 }
 }
?>

</SELECT>

içindeki veri sayısını ve veriyi bir veritabanından çekiyor. Buraya kadar herşey tamam fakat bu verilerilerden birden fazla seçildiğinde veritabanına sadece bir değeri kaydediyor.

php dosyam işe şu şekilde

PHP:
$isim = $_POST['isim'];
$parcalar=$_POST[kparcalar];

foreach ($parcalar as $kkparcalar) {

$baglanti = "insert into bilgiler values ('', '$isim',  '$kkparcalar' )";

}

Her çeşit yöntemi denedim ama bir türlü birden fazla seçeneği yazdıramadım.

Birden fazla seçenek seçildiğinde ve bu şekilde iken $kkparcalar değerini yazdırdığımda seçilen değerleri yazdırıyor fakat iş veritabanına kaydetmeye geldiğinde sadece bir değeri kaydediyor.

Nerede yanlış yapıyorum ?

( Php de acemiyim :) )
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Merhaba

Kodda for döngüsüne ve mysql satır sayısını almaya gerek yok. While döngüsü zaten bitene kadar döndürecektir. Ayrıca HTML olarak <option> tagları kapatılmamış

PHP:
<SELECT NAME="kparcalar[]" SIZE=10 MULTIPLE >
<?
$sorgu=mysql_query("SELECT isim FROM stok" );
  
  while($row = mysql_fetch_array($sorgu)) {
  echo '<OPTION VALUE=" ' . $row["isim"] . '">' . $row["isim"] .' </OPTION>' ;
  }
?>

</SELECT>

Ikinci etapta da mysql'e sorgu gönderilmiyor, sadece değişken ataması yapılmış.

PHP:
foreach ($parcalar as $kkparcalar) {
$baglanti = "insert into bilgiler values ('', '$isim',  '$kkparcalar' )";
mysql_query($baglanti) or die(mysql_error());
}

Şeklinde or die kullanırsınanız, mysql sorguları hata verdiğinde script durup size hata mesajını verir. Bu şekilde bir problem varsa daha rahat çözülür.

Ayrıca benzer problemlerde, döngü içi elemanları
var_dump() veya echo ile ekrana basarsanız adımlarda, scriptin ne yapmaya çalıştığını, hatanın nerede olduğunu daha rahat görürsünüz.

Ek bir öneride SQL sorgusu yazarken
INSERT into TABLO VALUES (degerler)
kalıbı kullanmak ilerde sıkıntı doğurur. Hem Tablolara sorguda kullanılmayacak satırlar eklediğinizde bu sorgular hata verir, hem de PostgreSQL gibi (sanırım MySQL'in bazı versiyonları da yapıyor bunu) sunucularda id'lere boş '' değer çektiğinizde, auto-increment alanı tanımaz, integer değerine boş atayamazsın diye hata verecektir.

INSERT into TABLO (alanlar) VALUES (degerler)
seklinde yazmaya alışırsanız daha iyi olur.
 

S3rs3r!

0
İyinet Üyesi
Katılım
2 Ocak 2005
Mesajlar
16
Reaction score
0
Angelo öncelikle ilgin için teşekkür ederim.

Dediklerini uyguladım fakat farklı bir sorun ortaya çıktı.

Öncelikle php kodumu göstereyim.

PHP:
<?php
include("ayar.php");  

$isim = $_POST['isim'];
$cep = $_POST['cep'];
$plaka = $_POST['plaka'];
$marka = $_POST['marka'];
$model = $_POST['model'];
$renk = $_POST['renk'];
$motorno = $_POST['motorno'];
$saseno = $_POST['saseno'];
$kilometre = $_POST['kilometre'];
$ariza = $_POST['ariza'];
$ucret = $_POST['ucret'];
$tarih = $_POST['tarih'];
$parcalar=$_POST[kparcalar];

foreach ($parcalar as $kkparcalar) {

$baglanti = "insert into bilgiler values ('', '$isim', '$cep', '$plaka', '$marka', '$model', '$renk', '$motorno', '$saseno', '$kilometre', '$ariza', '$kkparcalar', '$ucret', '$tarih' )";
mysql_query($baglanti) or die(mysql_error());
} 


?>


Şuan iki seçenek seçtiğimde iki ayrı kayıt atıyor veritabanına. İki kayıtda da bilgiler aynı tek fark bir kayıtta seçeneğin biri diğer kayıtta diğeri oluyor.


Birde sormak istediğim birşey daha var. apache2triad yükli bilgisayarımda ve herhangi bir hata olduğunda hata mesajı vermiyor sadece boş sayfa gösteriyor. Bunu nasıl düzeltebilirim.

Teşekkürler.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
PHP:
error_reporting(E_ERROR);
ini_set('display_errors', '1');

Windows ortamında çalışır mı emin değilim ama PHP dosyasında <?PHP tagından hemen sonraki satırda yukarıdakileri gir. Error'leri açacaktır.

Tablo yapısını tam anlamadım.

Bir arabanın içinde multiple kkparcalar olacak, tablo yapısı nasıl oluyor ki.

Palio 053511123333 34 A 304 ..... diger veriler .... Parcalar (buraya multiple nasıl giriyorsun)

Senin mantığına göre yaparsan şu anda, Her bir multiple alanı için Aynı satırı girip, her seferinde farklı parçayı parçalar alanına girecek, diğer tüm alanlar aynı olur.

Boyle bir durumda ne gibi bir kullanım yapacağına göre, parcalari ya ayri bir tablo acip, arabanın id'sine baglarsin. Ya da parcalari virgul ile birlestirip tek bir satir olarak girersin.
 

S3rs3r!

0
İyinet Üyesi
Katılım
2 Ocak 2005
Mesajlar
16
Reaction score
0
Angelo;

Yapmaya çalıştığım form şu şekilde.

resimja1.jpg


Select kısmındaki bilgileri stok isimli bir tablodan çekiyorum. Bilgileri ise bilgiler isminde bir tabloya yazdırıyorum.
 

S3rs3r!

0
İyinet Üyesi
Katılım
2 Ocak 2005
Mesajlar
16
Reaction score
0
PHP:
<?

$sunucu ="localhost"; 
$kullanici ="root"; 
$parola ="00000000";
$db ="veriler"; 
$baglanti =@mysql_connect("$sunucu","$kullanici","$parola") ;

$veritabani =@mysql_select_db("$db",$baglanti);

if (!$_POST['tamam'])
{
?>
<form name="denem" method="post" action="deneme.php">
<select name="aylar[]" multiple>
<option value="1">Ocak</option>
<option value="2">Şubat</option>
<option value="3">Mart</option>
<option value="4">Nisan</option>
<option value="5">Mayıs</option>
<option value="6">Haziran</option>
<option value="7">Temmuz</option>
<option value="8">Ağustos</option>
<option value="9">Eylül</option>
<option value="10">Ekim</option>
<option value="11">Kasım</option>
<option value="12">Aralık</option>
</select>
<input name="tamam" Value="Tamam" type="submit">
</form>
<?
}
else
{
foreach($_POST['aylar'] as $deger) {
$baglanti = "insert into deneme values ('$deger' )";
mysql_query($baglanti) or die(mysql_error());
} }

?>

Daha anlaşılır olması için böyle birşey yaptım.

İstediğim şey birden fazla ay seçildiğinde bunu birden fazla değilde tek veri olarak birleşik yazdırması.

Sıkıcı bir durum. Yardımlarınızı bekliyorum :(
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
O zaman şöyle.

PHP:
$isim = $_POST['isim'];
$cep = $_POST['cep'];
$plaka = $_POST['plaka'];
$marka = $_POST['marka'];
$model = $_POST['model'];
$renk = $_POST['renk'];
$motorno = $_POST['motorno'];
$saseno = $_POST['saseno'];
$kilometre = $_POST['kilometre'];
$ariza = $_POST['ariza'];
$ucret = $_POST['ucret'];
$tarih = $_POST['tarih'];
$parcalar = implode(',',$_POST[kparcalar]);

$baglanti = "insert into bilgiler values ('', '$isim', '$cep', '$plaka', '$marka', '$model', '$renk', '$motorno', '$saseno', '$kilometre', '$ariza', '$parcalar', '$ucret', '$tarih' )";
mysql_query($baglanti) or die(mysql_error());
 

S3rs3r!

0
İyinet Üyesi
Katılım
2 Ocak 2005
Mesajlar
16
Reaction score
0
Teşekkür ederim Angelo. Tam olarak istediğim kod buydu :)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

seo ajansı , sosyal medya yönetimi
Üst