Şimdi Ara

PHP'de birden fazla veritabanından bilgi çekme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
9
Cevap
0
Favori
2.090
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Selamlar,
    Acemilik zor iş derler ya...baya bir anladım bunu...Neyse php ile sayfa yapmaya çalışıyorum.
    Yaptığım şeyler doğru mu emin değilim.

    - iki tablom var: birincisi "users", diğeri "usersl" >> kullanıcı kaydolurken 'kullanıcı tipi' L olanlar için her iki tabloya da kayıt yapıyor. Bu iki tabloda sadece 'mail' alanı ortak ve unique. Amacım birinci tabloda kullanıcı tipine bakmaksızın full kullanıcı listesi olsun, kullanıcı tipine göre de 4 ayrı tablom olsun istiyorum. Örneğin L tipi kullanıcıları sorgularken "usersl" tablosundan verileri çeksin. (Kullanıcı tipleri: L, N, D, F)
    - Kullanıcı kaydı yaparken sadece temel bilgileri istiyoruz ("users": mail, şifre, kullanıcı tipi // "usersl": mail). Firma adı gibi diğer bilgilerin profilim sayfasından doldurulmasını istiyoruz. Profil güncelleme sayfasından ise doldurulmuş bilgiler "usersl" tablosuna gönderiliyor.

    quote:

    <?php
    break; // Bu ne işe yarıyor bilmiyorum??? Biryerlerde gördüm yazdım herhalde :) önceki php kodlarını durdur bunu başlat demek mi?
    case "kayitonay":
    //Kayıt formundan metin kutusu verilerini çekiyoruz
    $kullanici_adi = $_POST['kyt_mail'];
    $kullanici_sifre = $_POST['kyt_sifre'];
    $kullanici_sifretekrar = $_POST['kyt_sifretekrar'];
    $kullanici_tipi = $_POST['kyt_uyetipi'];
    $sozlesme = $_POST['CheckBoxsozlesme'];
    $date = date("y.m.d");
    $firmaadi = "Firma adını giriniz";
    ////////////////////////
    if(($kullanici_adi == "") or ($kullanici_sifre == "") or($kullanici_sifretekrar == ""))
    { //Eğer kullanıcı adı, şifresi ve şifre(tekrar) alanı boş ise hata mesajı verdiriyoruz
    echo '<script type="text/javascript">alert("Boş bıraktığınız alanlar var!");</script>';
    echo '<meta http-equiv="refresh" content="0;URL=yeniuye2.php">';
    die();
    }
    elseif($kullanici_sifre != $kullanici_sifretekrar)
    { //Eğer kullanıcı şifresi ve şifre(tekrar) eşleşmiyorsa hata mesajı verdiriyoruz
    echo '<script type="text/javascript">alert("Şifre ve şifre tekrarı birbiriyle uyuşmuyor!");</script>';
    echo '<meta http-equiv="refresh" content="0;URL=yeniuye2.php">';
    die();
    }
    elseif($kullanici_tipi == "")
    { //Eğer kullanıcı tipi boş ise hata mesajı verdiriyoruz
    echo '<script type="text/javascript">alert("Kullanıcı tipini seçmediniz!");</script>';
    echo '<meta http-equiv="refresh" content="0;URL=yeniuye2.php">';
    die();
    }
    elseif($sozlesme == "")
    { //Eğer kullanıcı tipi boş ise hata mesajı verdiriyoruz
    echo '<script type="text/javascript">alert("Üyelik şartlarını kabul ettiğinizi bildirmeniz gerekmektedir!");</script>';
    echo '<meta http-equiv="refresh" content="0;URL=yeniuye2.php">';
    die();
    }
    ////////Kayıtlı kullanıcı kontrol başlangıç
    $users = mysql_query
    ("SELECT * FROM users WHERE mail='$kullanici_adi'"); //Veritabanındaki uyeler tablosundaki verilerimizi metin kutusu verileri ile eşleştiriyoruz
    $uyebul = mysql_num_rows($users); //Üyeleri sayı olarak tanımlıyoruz
    if($uyebul > 0)
    {
    echo '';
    echo '<meta http-equiv="refresh" content="0;URL=yeniuye2.php">';
    }
    ///////Kayıtlı kullanıcı kontrol bitiş
    else{ //kullanıcı kayıt işlemini gerçekleştiriyoruz
    $kullanici_kaydet = mysql_query("INSERT INTO users(mail,pass,usertype,registerdate)
    VALUES('$kullanici_adi','$kullanici_sifre','$kullanici_tipi','$date')"); //Kullanıcıyı veritabanına kaydedecek kod
    if ($kullanici_tipi=="L")
    {
    $kullanici_kaydet = mysql_query("INSERT INTO usersl(mail,firmaadi,updatedate)
    VALUES('$kullanici_adi','$firmaadi','$date')"); //Kullanıcıyı usersl(nakliyeci) veritabanına kaydedicek mysql kodu
    }
    echo '<script type="text/javascript">alert("Kayıt işleminiz başarıyla gerçekleşti! Giriş yapınız...");</script>';
    echo '<meta http-equiv="refresh" content="0;URL=index2.php">';}
    break;
    }
    ?>


    Şimdi soruya gelebiliriz.
    Kullanıcı profil güncellemeye gelince, önceden girdiği verileri görsün aynı zamanda burda değişiklik yapıp güncellesin istiyoruz.
    "usersl" tablosundan datayı çekmeyi başardım.

    quote:

    <?php
    $sql=mysql_query("SELECT * FROM usersl WHERE mail='$mail'");
    if(mysql_num_rows($query)==0)
    die("Kullanıcı bulunamadı!");
    else
    {
    $row = mysql_fetch_array($sql);
    echo '<input name="txtName" type="text" value="'.$row['firmaadi'].'" id="txtName" size="65"/>';
    }
    ?>


    1- Peki güncelleme işini hangi yöntemle yapmalıyım? Bildiğimiz post metodu ile üstüne yazmak mantıklı mı? Daha kolay yada farklı bir metod mu kullanmalıyım?
    2- Tabloları ayırmakla yanlış bir iş mi yaptım? Aslında kullanıcı sayısı artarsa sorgular daha kolay çalışsın diye böyle bir yola başvurdum. Çünkü kullanıcı tipine göre oluşturulmuş tablolarda kolon sayısı bir hayli fazla olacak. İleride ne tür problemlerle karşılaşabilirim?
    3- Kullanıcı bilgileri kaydedilerken bir sürü checkbox olacak. Bunların her birini ayrı kolonlarda mı saklayacağım? Örneğin hobileriniz nedir >> chk-1:futbol, chk-2:basket, chk-3:yüzme...her bir chk maddesi için kolon açıp 0 yada 1 mi demeliyim?

    Usta arkadaşlara şimdiden teşekkürler...







  • Soruyu sadeleştireyim isterseniz...
    Aşağıdaki yapıda kodlarım var...

    <?php
    session start ()....
    ...
    ?>

    <html>
    <body>
    ...
    ..
    <form action=...><input...><submit><?php ?></form> // burda kullanıcı profil resimini "users" tablosuna kaydedebiliyor. **çalışıyor**

    <input type=text....><?php ?> // burda kayıtlı bilgiyi text field içerisinde göster komutu var **çalışıyor**

    <?php <input type=submit....>...</input> $query.... // Burda yukarıda bahsi geçen text field daki güncellenmiş bilgiyi "usersL" tablosunda güncellemeye çalışıyorum **yarım çalışıyor**sabit test yazarsak "ali" gibi bunu "usersL" tablosuna yazabiliyor ama text field dan otomatik olarak bir değişkene atamak istersek çalışmıyor....$text_degisken neden çalışmıyor?
    ?>

    </body>
    </html>

    Problemin kaynağı nedir acaba?




  • ezSql veritabanı sınıfını ve fonksyonlarını bir araştır. Işine yarayacaktir.
  • Arkadaşlar konu açamadığım için burda yardım istiyorum. Benim istediğimde benzer sanırım.

    Kullandıgım sistemde ana tabloda $_users diye bir tablo var üyelerin bulundugu ana tablo

    Birde buna entegre bir tablo var $_marketplace_users diye username ile eşitleme yaparak user bilgileri toplayan.

    ben bu iki tabloyu eşitliyorum sonra 3 tablodan _comminity_users id ile burdaki bilgileri php de yazdırmak istiyorum.

    Kodlarım.

    <? $uyecek = mysql_query("select * from asa_users where username = $this->entryUsername;'");?> 
    <? $cek = mysql_fetch_array($uyecek);?>
    <? $uyeceks = mysql_query("select * from asa_community_users where userid='$cek[id]'");?>
    <? $ceks = mysql_fetch_array($uyeceks);?>


    amaç
    ana tablodaki user ile marketplacedeki useri eşitleyip asa_community_users verilerini marketplaceye yazdırmak.

    $this->entryUsername; marketplace username eşit ama hata veriyor bunun yerine şöyle yazıyorum

    <? $uyecek = mysql_query("select * from asa_users where username = select * from asa_marketplace_users where username;'");?>

    Yazdırırken kullandıgım kod

    <b>Ad Soyad :</b> <?=$cek[name];?>




  • Kodu çok uzun yazmışsın inceleyemeyeceğim ama çift tablodan eşleştirilmiş bilgi çekebilmek için aşağıdakine benzer bir sql e ihtiyacın var

    uyeler ve mesajlar diye 2 tablodan üyeleri mesajlarıyla eşleştirerek çekmek istersek....

    SELECT * // Tümünü seç
    FROM uyeler,mesajlar // Seçmek istediğin tablolar
    WHERE mesajlar.uyeid = uyeler.id // 2 tablo arasında bağlantıyı sağlayan kod.
    AND uyeid=4 // Diğer Kısıtlayıcı kurallar and ile eklenebilir.



    Not : Eğer 2 tabloda aynı isimde kolonlar varsa SELECT * yerine

    SELECT uyeler.zaman AS uyezaman, mesajlar.zaman AS mesajzaman, .....

    şeklinde almalısın.
  • EzSql sınıfını kullanırsan işin daha kolay olur.
  • Ezsql e hiç girmedim. Ama problemimi de hala çözemedim.
    Ben sadece sayfa açıldığında bir text field a users tablosundan bilgi çekmek ve aynı alanda değişiklik yapıp tablomu güncellemek istiyorum.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • benim sorudan anladığım usersl tablosundaki kullanıcıadi, firmaadi alanlarındaki veriyi güncelleyeceksen

    <?php
    $sql=mysql_query("SELECT * FROM usersl WHERE mail='$mail'");
    if(mysql_num_rows($query)==0)
    die("Kullanıcı bulunamadı!");
    else
    {
    $row = mysql_fetch_array($sql);
    echo '

    <form action="guncelle.php" method="post">
    <input name="kullanici_adi" type="text" value="'.$row["kullanici_adi"].'" size="65"/>
    <input name="firma_adi" type="text" value="'.$row["firmaadi"].'" size="65"/>
    <input name="mail" type="hidden" value="'.$row["mail"].'" /> // bu gizli alandaki " mail "kayıt güncellerken lazım olacak
    <input type="submit" value="GÜNCELLE" />
    </form>
    ';
    }
    ?>

    guncelle.php

    <?php
    include ("veritabanı_ayar_dosyan.php"); // buraya db ayar php yi eklemen gerekiyor

    $mail = $_POST["mail"];
    $kullanici_adi = $_POST["kullanici_adi"];
    $firma_adi = $_POST["firma_adi"];


    $guncelle = mysql_query("UPDATE usersl SET kullanici_adi='$kullanici_adi',firma_adi='$firma_adi ' WHERE mail='$mail' ");


    //işlem bitti

    ?>

    ben sorundan anladığımın cevabını yazdım artı yukarıdaki break; case : kodları için switch() döngüsünü incele zaten başıda yok anlamadım parse hatası vermesei lazım



    < Bu mesaj bu kişi tarafından değiştirildi murano55 -- 25 Mart 2012; 14:01:26 >




  • teşekkürler, bu problem halloldu. ama şimdi başka biryerde takıldım. Bir üye profil resmi yüklüyor. Yüklerken üye adı ile bir images/avatars dosyası altında bir klasör oluşuyor. Resim sadece 1 tane yüklemesine izin veriyorum. Resim değiştirme işlemi de başarılı. Gel gelelim üye resmi kaldırırken problem çıkıyor. üye resmi kaldırınca direkt üyeye ait oluşturulan resim klasörü silinsin istiyorum. Bu şekilde hem klasör hem resim silinmiş olacak. Ama yazma yetkisi problemi çıkıyor karşıma. php ini dosyasında sanırım birşeyler değiştirmem gerekiyor yada kodlara CHMOD ile ilgili birşeyler eklemem gerekiyor. Birkaç tane kod örneği denedim ama problem çözülmedi.

    Yükleme kodlarım aşağıdaki gibi, ama klasörü silmek için kullandığım kodlar doğru çalışmadığı için silmişim :)

    quote:


    <form action='profileedit2.php' method='POST' enctype='multipart/form-data'>

    <input type='file' name='myfile'><br><br><input type='submit' name='submit' value='Logo Yükle!'>
    <?php
    If ($_POST['submit'])
    {
    //dosya özelliklerini al
    $name = $_FILES['myfile']['name'];
    $tmp_name=$_FILES['myfile']['tmp_name'];
    if($name)
    {
    //Eski resmi sil
    $query=mysql_query("SELECT*FROM users WHERE mail='$mail'");
    $row=mysql_fetch_assoc($query);
    $locationold=$row['imagelocation'];
    $mail=$row['mail'];


    $klasor = "images/avatars/".$mail;


    if (!file_exists($klasor))
    {
    $kolustur = mkdir($klasor, 0777); // 0777 tüm hakları(yaz,değiştir,sil) herkese ver demek
    }
    else
    {
    unlink($locationold);
    }

    //dosya yüklemeyi başlat
    $location = "images/avatars/".$mail."/".$name;
    move_uploaded_file($tmp_name,$location);
    $query = mysql_query ("UPDATE users SET imagelocation='$location' WHERE mail='$mail'");
    echo '<meta http-equiv="refresh" content="0;URL=profileedit2.php">';
    //echo '<script type="text/javascript">alert("Güncelleme işleminiz başarıyla gerçekleşti!");</script>';
    die();
    }
    else
    echo '<font color="red">';
    die("Lütfen bir dosya seçiniz!");
    }

    ?>

    </form>




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.