22786
Html-, css- és php-help
  • Terensz
    #10502
    Amúgy a header() függvényt meg felejtsd el a </head> html tag után. Amúgy is: a mysql műveleteket mindig a kiíratás és a formok előtt végezd, hogy már a változást is jelenítse meg.

    Meg szerintem ne cookie-kat, hanem session-öket használj.
  • Terensz
    #10501
    2 választásod van.

    1.: ide beírod, hogy mekkora egy rakás mocsok az apacs, és jól kidühöngöd magad. Majd a végén rátérsz a 2. pontra.

    2.: végre azt csinálod, amit már sokszor írtam neked.
    mysql_query("INSERT IGNORE INTO pm (cimzett, targy, felado, message, date) VALUES ('".$_POST['cimzett']."', '".$_POST['targy']."', '".$_COOKIE['username']."', '".$_POST['message']."', NOW())");

    helyett:
    $sql = "INSERT IGNORE INTO pm (cimzett, targy, felado, message, date) VALUES ('".$_POST['cimzett']."', '".$_POST['targy']."', '".$_COOKIE['username']."', '".$_POST['message']."', NOW())";

    echo $sql;

    Majd az így kapott, valós értékekkel (és nem változókkal) rendelkező sql-t kimásolod a böngésződből, és lefuttatod egy mysql gui-ban. (Pl: php myadmin, mysql sidu, mysql front, stb...) És lőn világosság...
  • Máté12
    #10500
    Az a hiba, hogy nem viszi fel a táblába
  • Máté12
    #10499
    Igen nem volt lezárva valami:) Köszi! De megint egy egyszerü hibába estem és már felháborító :D
    Bemásolom az oldalt:
    <?php
    include("config.php");
    $conn = mysql_connect($host, $username, $password);
    mysql_select_db($db_name);
    $query = mysql_query("SELECT * FROM login WHERE username = '".$_COOKIE['username']."'");
    while($adat=mysql_fetch_assoc($query))
    $tmp = $_GET['menu'];
    if($tmp == "adatlap"){
    header ("Location: adatlap.php");
    }
    if($tmp == "users"){
    header("Location: users.php");
    }
    if ($tmp == "news"){
    header ("Location: index.php");
    }
    if ($tmp == "settings"){
    header ("Location: beallitas.php");
    }
    if ($tmp == "vers"){
    header ("Location: vers.php");
    }
    if ($tmp == "settings"){
    header ("Location: settings.php");
    }
    if ($tmp == "shoutbox"){
    header ("Location: shoutboxes.php");
    }
    ?>
    <?php
    if (isset($user_id) AND $_COOKIE['username']){
    ?>
    <?php
    if(empty($_POST)){
    echo '
    <html>
    <head><title>Társkereső</title>
    <link rel="stylesheet" type="text/css" href="data/default.css"></link>'; ?>
    <link rel='icon' href='data/img/favicon.ico' type='image/x-icon'></link>
    <link rel='shortcut icon' href='data/img/favicon.ico' type='image/xicon'></link>
    <style type="text/css">
    <!--
    .style2 {color: #FFFFFF; font-weight: bold; }
    -->
    </style>
    </head>
    <body>
    <div align="center">
    <div id="contanier">
    <div id="header">
    <div id="datumfejlec">A mai dátum: <?php echo date("Y/m/d");?></div></div>
    <?php echo '
    <div id="menu">
    <div id="menuf"><a href="index.php?menu=news">Hírek</a></div>
    <div id="menuf"><a href="index.php?menu=adatlap">Adatlapod</a></div>
    <div id="menuf"><a href="index.php?menu=users">Keresés</a></div>
    <div id="menuf"><a href="index.php?menu=vers">Versek</a></div>
    <div id="menuf"><a href="index.php?menu=shoutbox">Üzenőfal</a></div>
    <div id="menuf"><a href="index.php?menu=settings">Beállítások</a></div>
    <div id="menuf"><a href="logout.php">Kilépés</a></div>
    </div>
    <div id="tartalom">
    <div id="cim">Új levél</div>
    <div id="hirek">
    <div align="center">
    <br>
    <table width="800" border="0" cellspacing="0" cellpadding="00">
    <tr>
    <td width="276"><div align="center" class="c"><a href="bejovo.php">Beérkezett levelek</a></div></td>
    <td width="302"><div align="center" class="c"><a href="elkuldott.php">Elküldött levelek</a></div></td>
    <td width="222"><div align="center" class="c"><a href="ujlevel.php">Új levél</a></div></td>
    </tr>
    </table>
    <br>
    <table width="800" border="0" cellspacing="0" cellpadding="00">
    <tr>
    <td width="267"><div align="right">Címzett:</div></td>
    <td width="533"><div align="left">
    <form method="post">
    <input type="text" name="cimzett" class="bev">
    </form>
    </div></td>
    </tr>
    <tr>
    <td><div align="right">Tárgy:</div></td>
    <td><div align="center"><form method="post">
    <div align="left">
    <input type="text" name="targy" class="bev">
    </div>
    </form></div></td>
    </tr>
    <tr>
    <td><div align="right">Üzenet:</div></td>
    <td><div align="center"><form method="post">
    <div align="left">
    <textarea name="message" cols="70" rows="10" class="bev2"></textarea>
    </div>
    </form></div></td>
    </tr>
    <tr>
    <td><form method="post"><input type="submit" value="Küldés"></form></td>
    <td><div align="center"></div></td>
    </tr>
    </table>
    </div>
    </div>
    </div>';
    ?>
    <div id="footer"><div id="tars"><a href="http://tarsatkereso.atw.hu" style="font-size: 12px;"><?php print($version); ?></a></div><div id="webby"><?php print($by); ?></div><div id="gyik"><a href="javascript:void(0);" onClick="window.open('gyik.php','','width=820,height=450,left='+((screen.width-660)/2)+',top='+((screen.height-450)/2+',scrollbars,status,resizable'));"><?php print($gyik); ?></a></div></div>
    <?php
    echo '
    <b class="cl">
    </div>
    </div>
    </body>
    </html>';
    }else{
    if($_POST['cimzett'] !== "" && $_POST['message'] !== ""){
    mysql_query("INSERT IGNORE INTO pm (cimzett, targy, felado, message, date) VALUES ('".$_POST['cimzett']."', '".$_POST['targy']."', '".$_COOKIE['username']."', '".$_POST['message']."', NOW())");
    echo 'SIkeres üziküldés';
    }
    }
    }else{
    header ("Location: http://tarsatkereso.atw.hu/index2.php");
    }
    ?>

    A lényege az lenne, hogy egy mezőbe felvigye a bekért adatokat.
  • Terensz
    #10498
    Ha nem túl hosszú a kód, szerintem oszd meg velünk. Megnézzük.
  • bracsek #10497
    hát nem ez a hiba :) de valahol csak van :) néha vannak ilyen cifra dolgok.
  • Malakai
    #10496
    Valószinüleg elötte lévő sorokban vmi nincs lezárva, vagy hasonló...
  • Máté12
    #10495
    Találkoztatok már ilyennel?:
    Parse error: parse error, unexpected $ in /user/ujlevel.php on line 140

    és a 140. sorom:
    ?>

    kicsit fura a hiba :D:D
  • joebacsi
    #10494
    tud valaki olyan ingyenes tárhelyet, ahol van https (ssl vagy tls)?
  • pTk
    #10493
    A képre style="display:inline;" vagy akár táblázatba is rakhatod.
  • joebacsi
    #10492
    Facebook felépítés
  • Maco13
    #10491
    css align, text-align
  • WorldTorrent
    #10490
    nem tudna valaki megmondani hogy hogyan lehetne egymassal szembe tenni szoveget es kepet?:D pl. a kep kozepul es melette iras HTMl-ben
  • Máté12
    #10489
    Már találtam egy jobb megoldást és egyszerübbett :) De azért köszi!!
  • MerlinW
    #10488
    Oukeyy:D
  • Terensz
    #10487
    A te függvényed szép, csak nem azt műveli, amit az enyém. Máté pedig határozottan useradat-lekérdezést szeretne (szeretett volna sok nappal és hsz-szel ezelőtt), és annál, amit ő írt, működőképesebb és időtállóbb az én kódom.

    A for ciklus tényleg kiváltható a mysql_fetch_array függvénnyel, Máté írja át, gyakoroljon. A kód jelen állapotában tökéletesen működik, csak lehet rajta optimalizálni.

    Ha kulcs szerint szeretne lekérdezni, majd megoldja magának. Ez a kód most arra, amire neki kell, tökéletesen működik.

    Dinamikusan is lekérdezhetném, de nem teszem. Majd Máté, ha akarja, megcsinálja dinamikusra. Egyelőre lássa működés közben a php és mysql kapcsolatát.

    Egyébként a kód amit feltettem: nyílt forráskódú , ha gondolod, fejlessz bele és tedd fel, mint dinamikus useradat-lekérdező scriptet.

    Máté, te pedig jelezz vissza, hogy használod-e egyáltalán, van-e értelme foglalkoznunk a useradat-lekérdezővel, vagy a témát ejtsük, mert esetleg úgyis a saját fejed után mész. (Előbbit javaslom)
  • MerlinW
    #10486
    Írtam gyorsban egy függvényt dinamikus insert és update akciókhoz. Természetesen csak akkor hasznos, ha teljes táblát írni akarjuk. Persze a delimiteres részbe az értékek közé 0 és 1-et írva máris ellenőrizhető lesz melyiket szeretnéd írni és melyiket nem. De ezt már megoldjátok ti.

    A kód működik, akinek szüksége van rá, használja egészséggel.

    http://pastebin.com/f6fe9ba7a
  • MerlinW
    #10485
    Nem az a lényeg, hanem hogy az általad írt kilométeres függvény egyrészt haszontalan, másrészt csúnyán megírt.

    Ha már dinamika:
    1. select-hez tök felesleges. Mire átírja a változókban a mezők neveit annyi idő alatt le tudja írni a select, from és where szavakat.

    2. semmi szükség az alsó for ciklusra. Használj mysql_fetch_array-t és máris hivatkozhatsz számszerűen a mezőkre.

    3. Mi van akkor, ha nem kulcs szerint szeretne lekérdezni?

    4. dinamikusan is lekérdezhetnéd a mezők neveit.
  • phoenix1
    #10484
    Hadjad, majd rájön a saját magas is ... egyszer.
  • Terensz
    #10483
    maLakai, te vagy itt a rangidős programozó!
    Gyere, tegyél rendet "globál + function" vs "sima kód egymás után + inklúdok" vitában!
  • Terensz
    #10482
    Szerinted mennyi memóriát veszek el szegény, kicsi, elesett szerveremtől 30-40 db globális változóval? A te oldalaidon hány db nem globális változónak adsz értéket, és mennyi változó van, amit fölöslegesen másik változóba teszel, hány többdimenziós tömbbel dolgozol és hány sql-ből veszel ki többszáz adatot egy tömbbe? Kit érdekelnek a pár byte-os globálok (összesen)? A lényeg, hogy a kódod a lehetőségekhez képest optimális legyen, használj függvényeket, mert - bár több memóriát használ, mint az egymás után írt kód - de fel tudod használni legközelebb is, sőt, a portálodon is, más helyen. De ha függvényeket használsz, akkor kénytelen vagy globális változókat használni, mert egy $mysqlTablename típusú változó ha megszentülsz sem fog a függvényedbe belemenni.
    És egyben az előző hsz-hez is kiegésztenék: az include include-ja sem látja a sima változót, bár az include valóban látja.
  • Maco13
    #10481
    Igen. A require és az include olyan, mintha bemásolnád a kódot a hivatkozott forrásból, ugyanazok maradnak a változónevek, értékek, minden
  • Cat 02 #10480
    Olyat lehet h csinálok egy valami.php-t és beleírom h $user=xy $pass=yx
    és a fő"programban" pedig require-vel meghívóm és akkor $user,$pass al csatlakozok sql szerverhez ?
  • Maco13
    #10479
    ha nem globálisban tárolod, és include, akkor se kell átírni, és a szerver memóriát se foglalod
  • Terensz
    #10478
    Pedig ilyen esetben jó megoldás. Legközelebbi weboldalnál csak át kell írni a globals.php-t.
  • Maco13
    #10477
    globális változó se valami elegáns megoldás...
  • MerlinW
    #10476
    (Én a \" megoldást szeretem:))

    $query_arr = mysql_query("select * from users where userid=\"$_GET[userid]\" ");
    $query = mysql_fetch_array($query_arr);

    echo $query['mezo0'].'<br />';
    echo $query['mezo1'].'<br />';
    echo $query['mezo2'].'<br />';

    Ha több rekordot vársz:

    while ($query = mysql_fetch_array($query_arr))
    {
    echo $query['mezo0'].'<br />';
    echo $query['mezo1'].'<br />';
    echo $query['mezo2'].'<br />';
    }
  • Terensz
    #10475
    Jaj, lásd már meg egy kódban a fantáziát :-)

    A function, amit írtam, +

    $userAdatok['1016'] = userAdatok('1016');

    echo '<a href="index.php?userid='.$userAdatok['1016']['id'].'>'.$userAdatok['1016']['user'].'</a>';

    SOHA ne azonosíts usert más adat alapján, mint az id-ja. Szokd meg.
  • Máté12
    #10474
    Nem az useradatok kellenek :) Hanem valaki rákattint a linkre akkor annak az EGY embernek mutatja ki az adatait! Tehát:
    users.php-ban van a link :
    <a href="index.php?username='.$s['username'].'>'.$s['username'].'</a>

    És a user.php-ban akarom csak annak az embernek kiírni az adatait ameikre a felhasználó rákattintott.
  • Terensz
    #10473
    Jah, még valami.

    SELECT * FROM legyen már örökre felejtős!!4 Prok nem használják.
    1.: Nem terhelik fölöslegesen az sql szervert egy nagyobb lekérdezésnél
    2.: így legalább látják, hogy milyen adatmezők vannak.
  • Terensz
    #10472
    Direkt space-eket raktam bele tab helyett :C most mondd meg... ezsgé szét q...rontotta a kódomat.

    Tehát a globálok helye a globals.php-ben van, a function helye mondjuk a functions v. func.php-ben, alul a $userAdatok = userAdatok('1016'); echo... pedig megmutatja a function használatát.

    Használd egészséggel!
  • Terensz
    #10471
    Ha jól értem, az useradatok kellenek. Azt ne így csináld.
    Összeütöttem neked egy adatlekérdezőt. Ezt legalább nem kell újraírnod, ha másik weboldalt csinálsz.


    <?php

    // config/globals.php -ba

    #############
    ## CONFIG
    $GLOBALS['usertablaNev'] = 'admins';
    $GLOBALS['usertablaPrimKey'] = 'id';

    $GLOBALS['usertablaMezok'][0] = 'id';
    $GLOBALS['usertablaMezok'][1] = 'nev';
    $GLOBALS['usertablaMezok'][2] = 'email';
    ## /CONFIG
    #############

    function userAdatok( $primKeyErtek )
    {
    $adatmezoStr = '';
    for( $i=0; $i < count( $GLOBALS['usertablaMezok'] ); $i++ )
    {
    if( $i == 0 ) { $pre = ''; } else { $pre = ' , '; }
    $adatmezoStr .= $pre.$GLOBALS['usertablaMezok'][$i];
    }

    $sql = "
    SELECT ".$adatmezoStr." FROM ".$GLOBALS['usertablaNev']." WHERE ".$GLOBALS['usertablaPrimKey']." = '".$primKeyErtek."'
    ";

    $q = mysql_query( $sql );

    while( $tomb = mysql_fetch_assoc( $q ) )
    {
    for( $i=0; $i < count( $GLOBALS['usertablaMezok'] ); $i++ )
    {
    $ertekTomb[$GLOBALS['usertablaMezok'][$i]] = $tomb[$GLOBALS['usertablaMezok'][$i]];
    }
    }

    return $ertekTomb;
    }

    $userAdatok = userAdatok('1016');

    echo $userAdatok['nev'];

    ?>
  • Máté12
    #10470
    Az a helyzet, hogy minden esetben nem csinál semmit:S
    Talán nem jegyzi meg, hogy melyikre kattintott a felhasználó?
  • Terensz
    #10469

    1.: köszi a courieres ötletet :-) Már kezdtem morcos lenni, hogy nem látszik a kódom.

    Most látom, te is kijavítottad Máté úrnak. Ha ketten mondjuk, csak nem hülyeség.
  • Terensz
    #10468
    $query = mysql_query("SELECT * FROM login WHERE username = '.$username.' LIMIT 1");

    ennek a sornak így kéne festeni:

    $query = mysql_query("SELECT * FROM login WHERE username = '".$username."' LIMIT 1");

    vagy így:

    $query = mysql_query("SELECT * FROM login WHERE username = '$username' LIMIT 1"); - Szerintem az előzőt szokd meg. 1.: kiemeli a szerkesztő a változót 2.: sokkal szebb.

    Az egyetlen nem működőképes a te verziód.

    Amúgy: tegyél már fel egy mysql kezelőt a gépedre, egyszerűen php oldalon mysql futtatással nem lehet elakadni:

    Tényállás: nem fut le az sql.

    $slq = "SELECT nev FROM users WHERE id = '".$_POST['id']."'";
    $q = mysql_query($sql);

    Megoldás:

    $slq = "SELECT nev FROM users WHERE id = '".$_POST['id']."'";
    echo $sql;
    $q = mysql_query($sql);

    A böngésző kiírja:

    SELECT nev FROM users WHERE id = '129'

    Copy a böngészőből, paste a mysql szerkesztőbe, sql futtatása, és lőn világosság.
  • Malakai
    #10467
    Tehát pl:
    echo'<a class="nev2" href="user.php?username='.$s['username'].'">'.$s['username'].'</a>';

    $query = mysql_query("SELECT * FROM login WHERE username = '$username' LIMIT 1");
    while($s=mysql_fetch_assoc($query)){}
  • Malakai
    #10466
    Már megint ezek a rejtéjes stringek. :)
    A dupla és szimpla quoteokat nem igazán tudod eldönteni, hogyan kezeld...

    Dupla quoteot nem tudsz lezárni simával, tehát ha simát használsz duplán belül, vagy fordítva, akkor az a stringben jelenik meg és nem zár-nyit.
    A dupla quoteba nyugodtan belerakhatod a változót ($username). Amit te sokszor láthatsz queryknél, hogy a változó köré plussz quoteot tesznek, ez egy mysql-es szokás, ott nem szakítják meg a stringet, így a pontokra sincs szükség.

    A quote hiba az anchornál is van, feltételezem, hogy ez így egy echo pl és egy szimpla quoteal kezdődik valahol, akkor a dolog jó, annyi kivételével, hogy a href értéke nincs lezárva (egy dupla quote hiányzik).
  • Máté12
    #10465
    Sziasztok!

    Van egy users.php fájlom. Itt vannak a username-ek. Pl.:
    Felhasználói neve: '.$s['username'].'
    Na most én ezt belinkeltem igy:
    <a class="nev2" href="user.php?username='.$s['username'].'>'.['username'].'</a>

    Azt, hogy tudom megcsinálni, hogy a user.php-ban csak annak az egy embernek az adatai jelenjen meg?
    Próbálkoztam már így:
    $query = mysql_query("SELECT * FROM login WHERE username = '.$username.' LIMIT 1");
    while($s=mysql_fetch_assoc($query)){

    Csak az a baj, hogy semmit nem ír ki a lekérdezésnél. Gondolom a WHERE résznél kéne valamit csinálni, hogy tudja, hogy meik felhasználóra kattintott rá.

    Köszi elöre is a helpet!
  • Terensz
    #10464
    Köszi szépen!

    Ennél bonyolultabbra akartam, de maradok a szavas bontásnál.
    Max ha valaki kijátssza az ellenőrző scriptet, azt törli az oldal gazdája :-)
  • Maco13
    #10463
    Hali!

    Használd az in_array() függvényt, ami tud tömbben keresni, és true-val tér vissza, ha talált egyezést.
    A tesztelendő szöveget leszűröd szavakra (split), majd szavanként nézed hogy benne van-e a tiltott tömbben.