SQL lekérdezés PHP-ban

Ez a téma lezárásra került a moderátor által. A lezárás oka: Tudástár: egy téma - egy kérdés/probléma (nem "rondítunk" bele más - pláne már lezárt - témájába, tessék újat nyitni)! Ráadásul, kívánatosabb lenne, ha ilyen kérdéssel/problémával a Prog.hu-t keresnéd fel.
SQL lekérdezés PHP-ban
2007-10-14T21:24:20+02:00
2010-02-11T17:18:47+01:00
2022-07-24T23:10:38+02:00
Portosz1
Sziasztok!
MYSQL adatbázisból kérdezek le php-val 2 sort, soronként 2 mezőt.
Egyszerűen nem tudom összehozni, hogy lekérdezés után egymás mellett jelenjenek meg(táblázatos).
Ha valaki ért hozzá, please help.
Íme a kód:

<?php
include ("fejlec_aruhaz.torolni.php");
include("kozos.php");
include("konfig.php");

sqlkapcsolodas($sqlszerver,$sql_login,$sql_jelszo,$sqladatbazis);
$eredmeny = mysql_query("SELECT * FROM vevok");
$eredmeny1 = mysql_query("SELECT * FROM termekek");



?>
<TABLE cellspacing="0" class="keret">
<TR class="cimsor">
<TD>Név</TD><TD>Irányítószám</TD><TD>Megnevezés</TD><TD>Ár</TD>
</TR>


<?
for ( $i=1 ; $i<=100 && $sor_vevok = mysql_fetch_array ($eredmeny); $i++)
for ( $i=1 ; $i<=100 && $sor_termekek = mysql_fetch_array ($eredmeny1); $i++) {
echo '<TR class="hatter">'
.'<TD>'.$sor_vevok['p_nev'].'</TD><TD>'.$sor_vevok['p_ir'].'</TD><TD>'.$sor_termekek['megnevezes'].'</TD><TD>'.$sor_termekek['ar'].'</TD>';
echo '</TR>'
.'';
}
echo "</TABLE>";
?>
Mutasd a teljes hozzászólást!
probáld a for-t igy:

for ( $i=1 ; $i<=100, $sor_vevok = mysql_fetch_array ($eredmeny), $sor_termekek = mysql_fetch_array ($eredmeny1); $i++) { echo '<TR class="hatter">' .'<TD>'.$sor_vevok['p_nev'].'</TD><TD>'.$sor_vevok['p_ir'].'</TD><TD>'.$sor_termekek['megnevezes'].'</TD><TD>'.$sor_termekek['ar'].'</TD>'; echo '</TR>' .''; }

valszeg jön majd egy warning ha nincs több fetch, de ezt ráérsz lekezelni, ha már kiirja az adatokat.
Mellesleg mi köti össze a két táblát? Amit te csinálsz csak egy lista, nics kapcsolat a vevő és a termék között.
Mutasd a teljes hozzászólást!

  • for ( $i=1 ; $i<=100 && $sor_vevok = mysql_fetch_array ($eredmeny) && $sor_termekek = mysql_fetch_array ($eredmeny1); $i++) { echo '<TR class="hatter">' .'<TD>'.$sor_vevok['p_nev'].'</TD><TD>'.$sor_vevok['p_ir'].'</TD><TD>'.$sor_termekek['megnevezes'].'</TD><TD>'.$sor_termekek['ar'].'</TD>'; echo '</TR>' .''; }
    Mutasd a teljes hozzászólást!
  • Hali!
    Köszi, most annyit csinál, hogy csak a TERMEKEK sor két mezőit listázza ki, a VEVŐK sor két mezőit nem.
    Most akkor így néz ki:

    <?php
    include ("fejlec_aruhaz.torolni.php");
    include("kozos.php");
    include("konfig.php");

    sqlkapcsolodas($sqlszerver,$sql_login,$sql_jelszo,$sqladatbazis);
    $eredmeny = mysql_query("SELECT * FROM vevok");
    $eredmeny1 = mysql_query("SELECT * FROM termekek");

    ?>
    <TABLE cellspacing="0" class="keret">
    <TR class="cimsor">
    <TD>Név</TD><TD>Irányítószám</TD><TD>Megnevezés</TD><TD>Ár</TD>
    </TR>

    <?
    for ( $i=1 ; $i<=100 && $sor_vevok = mysql_fetch_array ($eredmeny) && $sor_termekek = mysql_fetch_array ($eredmeny1); $i++)
    {
    echo '<TR class="hatter">'
    .'<TD>'.$sor_vevok['p_nev'].'</TD><TD>'.$sor_vevok['p_ir'].'</TD><TD>'.$sor_termekek['megnevezes'].'</TD><TD>'.$sor_termekek['ar'].'</TD>';
    echo '</TR>'
    .'';
    }
    echo "</TABLE>";
    ?>
    Mutasd a teljes hozzászólást!
  • Csak egy gyors help, mert később lesz időm végigböngészni a kódot.
    Első blikkre inkább a while ciklust javasolnám a for helyett, valamint az sql eredménytáblát inkább a mysql_fetch_assoc() függvénnyel kérdezném le.

    Az már csak apróság - és lehet, hogy felesleges -, hogy célirányosabban kérdezném le az adatbázist (nemcsak SELECT * FROM vevok), mondjuk WHERE záradékkal, mert gyorsul a kódod.

    Bocs, de most rohannom kell.
    Mutasd a teljes hozzászólást!
  • Szia!
    Köszi, várom a választ.
    Mutasd a teljes hozzászólást!
  • sztornó
    Mutasd a teljes hozzászólást!
  • Szerintem szintaktikai hiba ebben a kódban már nincs, szemben a nyitó hozzászólásodban írtakkal.
    Ha az adatbázis megnyitás/kiválasztás/kiolvasás hibamentesen végrehajtódik, akkor érdemes lenne magát a kérdéses adattáblát megvizsgálni, pl.:

    <?php include ("fejlec_aruhaz.torolni.php"); include("kozos.php"); include("konfig.php"); sqlkapcsolodas($sqlszerver,$sql_login,$sql_jelszo,$sqladatbazis); $eredmeny = mysql_query("SELECT * FROM vevok"); //$eredmeny1 = mysql_query("SELECT * FROM termekek"); ?> <TABLE cellspacing="0" class="keret"> <TR class="cimsor"> <TD>Név</TD><TD>Irányítószám</TD> </TR> <?php // gondolom, hogy a 'vevok' adatbázis táblában használod a 'p_nev' és a 'p_ir' mezőneveket while ($line = mysql_fetch_assoc($eredmeny)) { echo '<TR class="hatter">'.'<TD>'.stripslash($line['p_nev']).'</TD><TD>'.stripslash($line['p_ir']).'</TD><TD>'; echo '</TR>'.''; } echo "</TABLE>"; ?>

    (Remélem nem szúrtam el a kódot, ha igen, bocska, nagyon el vagyok havazva!)
    Mutasd a teljes hozzászólást!
  • Hali!
    Hát sajnos nem működik, annyi történt, hogy kiírta hogy NÉV, IRÁNYÍTÓSZÁM, de a lekérdezéseket nem listázta ki.
    Igen, a vevőkben van a 'p_nev' és a 'p_ir' mezőnév és a 'megnevezés' , 'ar' tartozik a termékek sorába.

    Ezzel az alábbi kóddal tökéletesen működik, csak az a gondom vele, hogy egymás után listázza ki a sorokat( először a termékek sor két mezőjét, majd ezalá a vevők sor két mezőjét)
    Én azt szeretném, ha egymás mellé lenne kilistázva.

    kód:

    <?php
    include ("fejlec_aruhaz.torolni.php");
    include("kozos.php");
    include("konfig.php");

    sqlkapcsolodas($sqlszerver,$sql_login,$sql_jelszo,$sqladatbazis);
    $eredmeny = mysql_query("SELECT * FROM vevok");
    $eredmeny1 = mysql_query("SELECT * FROM termekek");

    ?>
    <TABLE cellspacing="0" class="keret">
    <TR class="cimsor">
    <TD>Név</TD><TD>Irányítószám</TD>

    </TR>
    <?
    for ( $i=1 ; $i<=100 && $sor_vevok = mysql_fetch_array ($eredmeny); $i++) {
    echo '<TR class="hatter">'
    .'<TD>'.$sor_vevok['p_nev'].'</TD><TD>'.$sor_vevok['p_ir'].'</TD><TD>'; echo '</TR>'
    .'';
    }
    echo "</TABLE>";
    ?>

    <TABLE cellspacing="0" class="keret">
    <TR class="cimsor">
    <TD>Megnevezés</TD><TD>Ár</TD>

    </TR>
    <?
    for ( $i=1 ; $i<=100 && $sor_termekek = mysql_fetch_array ($eredmeny1); $i++) {
    echo '<TR class="hatter">'
    .'<TD>'.$sor_termekek['megnevezes'].'</TD><TD>'.$sor_termekek['ar'].'</TD><TD>'; echo '</TR>'
    .'';
    }
    echo "</TABLE>";
    ?>
    Mutasd a teljes hozzászólást!
  • Így szeretném kilistáztatni pl.:

    Név Irányítószám Megnevezés Ár
    Kiss József 3000 Könyv 1000
    Nagy Pál 3268 Dvd 2499
    Köves Pál 1019 Hangszóró 5990
    Kovács Andrea 2500 Táska 9990
    Mutasd a teljes hozzászólást!
  • csak kicsit szétesett, nyilván a nevek alá a neveket, az irányítószám alá az ir.számokat...stb...
    Mutasd a teljes hozzászólást!
  • probáld a for-t igy:

    for ( $i=1 ; $i<=100, $sor_vevok = mysql_fetch_array ($eredmeny), $sor_termekek = mysql_fetch_array ($eredmeny1); $i++) { echo '<TR class="hatter">' .'<TD>'.$sor_vevok['p_nev'].'</TD><TD>'.$sor_vevok['p_ir'].'</TD><TD>'.$sor_termekek['megnevezes'].'</TD><TD>'.$sor_termekek['ar'].'</TD>'; echo '</TR>' .''; }

    valszeg jön majd egy warning ha nincs több fetch, de ezt ráérsz lekezelni, ha már kiirja az adatokat.
    Mellesleg mi köti össze a két táblát? Amit te csinálsz csak egy lista, nics kapcsolat a vevő és a termék között.
    Mutasd a teljes hozzászólást!
  • Igen, szerintem is ez a következő lépés.
    Az adattáblákba kellene 'vevo_ID' (elsődleges kulcs!) és 'termek_ID' (szintén elsődleges kulcs!) mezők is, a vásárlásokat pedig egy harmadik táblában a 'vasarlas_ID'(megint Primary Key) mellett a fenti két azonosítóval együtt (és még pl.: datetime adattal) kellene tárolni.
    Ez megkönnyíti a lekérdezést, és hosszú távon is átlátható marad az adatbázisod.

    Ez persze nehezebb feladat, ha már üzemelő adatbázisod van, de ha most van még csak tervezés alatt, akkor érdemes lenne újra átgondolni a tervezését.
    Ebben talán ez segít: adatbázistervezés
    Mutasd a teljes hozzászólást!
  • Hali!
    Köszi, ez működik .
    Most szépen egymás mellett helyezkednek el a lekérdezések, nem egymás alatt.

    PGX: Neked is köszi a tanácsokat!

    Üdv: Portosz
    Mutasd a teljes hozzászólást!
  • Én is kösz a pontocskát.
    Mutasd a teljes hozzászólást!
  • Hello!
    Ilyenben lenne nekem is problémám.
    Szóval van egy login rendszerem, átalakításokat elvégeztem, most már csak egy-két kisebb hiányosság van. Azt szeretném, hogy a felhasználók ha regisztrálnak és utánna belépnek, az adatbázisból ki legyen írva pl. felhasználónevük(egy bizonyos helyre) és az adatbázisban lévő ID számuk is(egy másik helyre).
    A segítséget köszi!
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: Tudástár: egy téma - egy kérdés/probléma (nem "rondítunk" bele más - pláne már lezárt - témájába, tessék újat nyitni)! Ráadásul, kívánatosabb lenne, ha ilyen kérdéssel/problémával a Prog.hu-t keresnéd fel.
abcd