javascript és php
sziasztok van egy kis problémám vane az kód:
az a baj hogy ha rákatintok egy névre akkor nem azt az egy nevet irja rublikába hanem az összes nevet mi a baj??
■ <script language="JavaScript" type="text/javascript">
function cimzett() {
document.beir.cimzett.value +="<?php
include "config.php";
$query = mysql_query("SELECT * FROM users");
while($name=mysql_fetch_assoc($query))
{
echo htmlspecialchars(urlencode($name['nick']));
}
?>";
function cimzett() {
document.beir.cimzett.value +="<?php
include "config.php";
$query = mysql_query("SELECT * FROM users");
while($name=mysql_fetch_assoc($query))
{
echo htmlspecialchars(urlencode($name['nick']));
}
?>";
az a baj hogy ha rákatintok egy névre akkor nem azt az egy nevet irja rublikába hanem az összes nevet mi a baj??
Mi a probléma?
Előbb tehát jó lenne megtanulnod, a programod melyik része hol, milyen környezetben fut – ebben az esetben 3 környezetről beszélünk:
Ha ezzel megvagy, akkor azt kell tisztázni, mi, hogyan építhet fel kapcsolatot a másikkal. Például a MySQL szervered hogyan tud kapcsolatba lépni a PHP-vel, és fordítva, a böngésző a PHP-vel és fordítva. Azt se felejtsd, hogy ezek általában egyirányú kapcsolatok, mint az iménti példában, tehát a kommunikációt csak az egyik fél kezdeményezheti!
Ha ezeket megtanultad és érted, valamint le tudod írni, mit is szeretnél pontosan, és hogyan próbáltad ezt elérni, és mit kaptál helyette eredményül, na akkor térjünk vissza a kérdésre.
Poetro
Néha olyan érzés ezeket olvasni, mintha én anyámnak próbálnék PHP-ről, meg JS-ről magyarázni.
Egyébként a témához kapcsolódóan, én még ilyen JS-be belekotort PHP-t nem is láttam, meg nem is merészelnék. :)
Widget-ek
Vegyük például a következő példát. Itt magát a JavaScript fájlt is a PHP generálja. Persze ha JavaScript-et generálunk PHP-val akkor általában illik a json_encode függvényt használni még String-ekhez is, ugyanis ez megfelelően escape-eli a benne levő speciális jeleket, például idézőjelet, illetve backslash-t. Egy sima
echo
esetén esetleg gondban lehetünk, hogy mi okozza a JavaScript hibákat egyes oldalakon, másokon pedig nincs, pedig a különbség csak annyi, hogy nem jól escape-eltük az adatunkat.Persze ha a szerver oldalon nem PHP van, hanem JavaScript, mind Node.js esetén, akkor a JavaScript-ben levő
JSON.stringify
függvényt kell használni.akkor hogyan tudnám meg oldani!!
Belsöleg azt ugy értendö hogy aki a honlapomon van azt tud a másik társának emailt küldeni.(nem smtp-s)
Nekem ugye van egy táblázatom ahol a nevek vannak és kétt felhazsnáló van éppen. Ha Rákattintok az egyikre akkor a cimzet rublikába az összes nevet bele irja. Nekem csak az kell ameikre rákattintottam értehtö?:D javascript azért kell mert az onclick miadt.
kód:
$query = mysql_query("SELECT * FROM users");
while($names=mysql_fetch_assoc($query))
{
echo'<a class="b" onclick="cimzett();return false">'.$names['nick'].'</a><br>';
}
?>
ez hogy a névre kattintanak mi történjen
<script language="JavaScript" type="text/javascript">
function cimzett() {
document.beir.cimzett.value +="<?php
include "config.php";
$query = mysql_query("SELECT * FROM users");
while($name=mysql_fetch_assoc($query))
{
echo htmlspecialchars(urlencode($name['nick']));
}
?>";
}
ez pedig az onclick utasitása vagy is a nevet hova irja
<form name="beir" method="post">
cimzett:<br>
<input type="text" name='cimzett' style='width:65%';>
</from>
ez pediga rublika ahola név lesz
Írd le magyarul
cimzett
függvénybe. Tanuld meg a JavaScript-es események használatát, például, hogy az eseménykezelőben hogyan kell megtudni, mi is váltotta ki az eseményt. Ha megvan, akkor nézd meg annak az elemnek a tartalmát, és azt írd be az űrlap megfelelő mezőjébe. Amíg nem írod le a kérdésed magyarul, nem válaszolok több kérdésedre, és ajánlom, hogy mindenki tegyen hasonlóan.(Nincs téma)
tényleg nem gondolod át :(
Akkor először kiolvasod mindenkinek a nevét és címét, ezekre van szükséged.
Aztán, mivel onclick-re, oldaltöltődés nélkül akarod beírni a nevet az input mezőbe, ezért szerintem a legértelmesebb módszer, ha létrehozol egy js tömböt, php-val kiírva.
Utána kiírod a táblázatod, benne az adatokkal, és az onclick-kel.
Vagyis valahogy így:
Aztán ha meghívod a js függvényt, add át az adott emberke id-jét, és máris sokkal egyszerűbb lehet a js függvényed.
Kb ilyen:
Szerk: sorry Poetro, a szankciód előtt kezdtem el írni, de szerintem sokkal előbbre nem vittem :)
más meg oldás
:O
Szerintem kezdj egyszerűbbekkel.
Egy olyanhoz szükséged van AJAX-ra, ha azt ismered, akkor oké.
Amit én leírtam, egy kezdő tudással megérthető. (Mondjuk lehet, hogy van benne hiba, nem próbáltam ki.)
De ha azt nem érted, akkor a Youtube-ost nem érdemes még megpróbálnod.
honnan??
Aki keres, talál
valamire jutodtam !!!
include "config.php";
$query = mysql_query("SELECT nick FROM users order by nick asc");
while($names=mysql_fetch_assoc($query))
{
print '<form method="post">';
echo'<input type="checkbox" name="kinek" value="'.$names['nick'].'" ><a class="b">'.$names['nick'].'</a><br>';
}
?>
<input type="submit" name="ki" value ="Kijelölt választás">
checkbox-al oldodtam meg a név kiválasztást!!
ugye kilistáz minden nevet és rá lehet bökni meiket akarom!!
submittal lehet a be postolt adatot ki iratni igy:
<input type="text" name='cimzett' value="<?php echo $_POST['kinek']; ?>" style='width:65%';><br>
Ezzel pedig bele iratjuka mezöbe a nevet!!!
eddig rendben.
Csak az a baj hogy ha kettöt ki választok mindig az utolsot irtaja ki.
ÖÖ szerintem ahogy Totti 1986 mondta tömbökbe kéne tárolnom a neveket de ezt igy ilyen formába hogyan ??
A Javascript és php hát letedtem róla nem jó megoldás:(
Bocs
de nem ez a kérdésem bocs
csak nagyon érdekel a honlapszerkesztés. Légyszi a választ irjad le ne a kritizálásodat köszi.
Igaz, hogy pocsék a
(btw ha sokat olvasol könyvet vagy újságot az segít a helyesírásodon)
Szóval, a te kódodat használva:
- PHP kódot, ami feltétlenül szükséges a programod lefutásához (egy osztály vagy config) require-rel ágyazz be, mert ez "szigorúbb", mint az include és fatal errorral megáll, ha esetleg nem sikerült a dolog
- a <form> element csak akkor valid, ha van "action" attribútuma. A legtöbb böngésző az aktuális URL-re fogja viszaposztolni az adatot, de ha ez az URL fix, jobb, ha ide írod
- mellesleg a <form> opening tag-et a ciklusba (while) tetted, szóval minden checkbox előtt kiírtál egy ilyet, egy elég
- tettem egy <label> taget a checkboxod köré, mert így felhasználóbarátabb a formod - ha a felhasználó a névre klikkel (és nem a checkboxra) akkor is bepipálódik a checkbox
- a checkbox inputodat átneveztem így: name="kinek[]". A szögletes zárójelek azt jelentik, hogy a PHP automatikusan egy tömbbe fogja pakolni a változóidat ha több paramétert talál ezzel a névvel. Így tehát a $_POST['kinek'] egy tömb lesz, ami a neveket tartalmazza
- htmlspecialchars azért kell a névhez, hogy ne okozzanak problmát az olyen nevek, amelyek esetleg idézőjelet tartalmaznak és ezzel "bezárják" a value= attribúrumot. Nyilván azt gondolod, hogy ilyen nem lesz, de amikor egy felhasnálótól érkező adatot kiíratsz a kimenetre (ie. a HTML-be) akkor _mindig_ gondolnod kell a rosszindulatú felhasználókra, így _mindig_ escape-elned kell. Ha ezt nem teszed az oldalad XSS-támadható lesz
- a <br> és az <input> tag nem valid, be kell zárnod így: <br />, <input />
Most már elvileg működhet így az odal, ahova küldöd az adatot:
Btw gondoltál arra, hogy felhasználónév helyett egy azonosítót (mondjuk egy szám) küldesz el?
Ha jó vagy angolból, akkor ezen az odlalon legalább a Security-hez kapcsolódó linkek elolvasását ajánlom:
http://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site
És csak így tovább, mind így kezdtük :)
ez a számod dolog:D
Ezzel arra utal hogy az idet küldje el (de szerintem ez hülyeség) Biztonsági okok miat vagy nem?????
Párdolog ami nekem nagyon új:D
-implode ez mire jó??
-ENT_QUOTES és ez??:D
csak anyni hibát ir amikor nem jelölök ki semmitse vagy is rá lépek a lapra.
ezt irja:
de amugy megy :D
RTM
segítsetek:D
segítsél
ebbe van a hiba:D
Na meg annyi a baj hogy ha két nevet küldök akkor az id rublika üres marad de ha csak egyet jelölök akkor el küldi:D
mi a hiba?:
$query = mysql_query("SELECT * FROM users WHERE nick='$cimzett' ");
$felh = mysql_fetch_array($query);
$sql ="INSERT INTO emails (id,kitol,cimzett,targy,email,datum) values ('','$id','".$felh['id']."','".$_POST['targy']."','".$_POST['email']."',now())";
Mik a változók?
Melyik
id
rubrika marad üres? Előbb nézd meg, milyen adatok jönnek, azokat megfelelően lekezeled-e. Például, ha tömböt vársz, és nem azt kapsz, akkor jelezd a felhasználónak, és addig ne is menj tovább. Ha pedig stringet vársz, akkor ha tömböt kapsz, azt is le kell kezelni.jaaaa:D
A névet(ket) meg keresi az adatbázisba és az idjét feltöltjük.
cimzett ahogy látjuk '.$felh['id'].' eddig okés.
$felh = mysql_fetch_array($query);
$sql ="INSERT INTO emails (id,kitol,cimzett,targy,email,datum) values ('','$id','".$felh['id']."','".$_POST['targy']."','".$_POST['email']."',now())";
na de a kettö fel használó van akkor ilyen a kód ha nincs változó:
[code]
$query = mysql_query("SELECT * FROM users WHERE nick='krinya,kriszrap' ");
és igy nem fogja meg találni ez a baj:(
implode még probálkozom :D
Segítsetek nem megy sehogy se
probáltam igy :
$query = mysql_query("SELECT * FROM users WHERE nick='$cimzett' ");
de nem jó:(
Az egész az egyenlőségjel
Alapvetően nem akarom lesúgni a teljes megoldást, mert abból nem sokat tanulnál, de mivel régóta szenvedsz vele, ezért tessék, jófej leszek:
Megjegyzés: nem lesz rendszeres, hogy megcsináljuk helyetted. Tessék utánajárni a dolgoknak, nem olyan nehéz azt.
na csak annyi hogy:$query =
$felh = mysql_fetch_array($query);
iylen hibát ir:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\mail_new.php on line 106
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\mail_new.php on line 107
bugadani kösz a segitséget de nem teljesen jó
és foreach el magyaráznád hogy igazából az mit csinál.
nem tudtam meg oldani:(
Érdekes, úgy emlékszem, hogy
Másrészről:
a kódszínezőt a [ colorer=php ]-val éred el :)
Harmadrészt:
Az első foreach éri el, hogy nehogy véletlen valamilyen aljas sql-injection támadás áldozata legyen az oldalad.
A második foreach minden címzett-sztringet aposztrófokkal vesz körül, hogy egyáltalán értelmes MySQL-kérést lehessen belőlük összerakni.
Az implode pedig, ezesetben, mint már remélem észrevetted és csak fölöslegesen írom le, összefűzi a címzetteket vesszővel elválasztva.
Szerkesztés:
Még egyszer megnéztem, a fentieken kívül még egy baja van az általad idézett kódnak:
Ezt látja belőle a php fordító: (ROSSZ)
mysql_query('valami sztring', 'megint valami sztring');
Ebből gyanítom, hogy nem egy olyan felszereltségű szerkesztővel írod a kódod, ami kiszínezné azt. Próbálj meg Notepad++-t, EditPlus-t, vagy valami fejlettebb fejlesztői környezetet használni, mint pl.: Eclipse PHP Developer Tools (PDT). Megkönnyítik az ember életét.
köszönöm:)
Nem értem, miért szeretnéd
Egyébként az implode párja az explode etéren.
hát azért mert
$felh = mysql_fetch_array($query);
érted vagy is én nem a neveket (nick) et fogom felküldeni hanem a nickek id-jét.
ezért kell nekem szét szedni. de hogy??:D
mi a hiba
" style='width:65%';><br>
<?php
$cimzett= "".$_POST['cimzett'];
$count = count($cimzett);
for($i=0; $i<$count; $i++)
{
$query = mysql_query("SELECT * FROM users WHERE nick= 'array[$cimzett][$i]'");
$felh = mysql_fetch_array($query);
$sql ="INSERT INTO emails (id,kitol,cimzett,targy,email,datum) values ('','$id','".$felh['id']."','".$_POST['targy']."','".$_POST['email']."',now())";
$query = mysql_query($sql)or die ("Valami baj van az adatbázissal.");
}
print "Sikeresen elküted az Üzenetet!!";
?>
Sikerült!!!
$cimzett= "".$_POST['cimzett'];
$nevek = explode(",", $cimzett);
$count = count($nevek);
if($count > 1)
{
for($i=0; $i<$count; $i++)
{
$query = mysql_query("SELECT * FROM users WHERE nick= '$nevek[$i]'");
$felh = mysql_fetch_array($query);
$sql ="INSERT INTO emails (id,kitol,cimzett,targy,email,datum) values ('','$id','".$felh['id']."','".$_POST['targy']."','".$_POST['email']."',now())";
$query = mysql_query($sql)or die ("Valami baj van az adatbázissal.");
}
}else{
$query = mysql_query("SELECT * FROM users WHERE nick= '$cimzett'");
$felh = mysql_fetch_array($query);
$sql ="INSERT INTO emails (id,kitol,cimzett,targy,email,datum) values ('','$id','".$felh['id']."','".$_POST['targy']."','".$_POST['email']."',now())";
$query = mysql_query($sql)or die ("Valami baj van az adatbázissal.");
}
print "Sikeresen elküted az Üzenetet!!";
?>
Végeredmény:D
sql ciklusban?
Habár láthatóan ez nem lesz egy hatalmas terhelésnek kitéve, én jobbnak látnám valahogy a következőképpen végrehajtani:
És sztem szokj le arról, hogy dupla idézőjelben szimplát használva jelenítesz meg változót, mert később nem lehet átlátni. Szépen szakítsd meg az idézőjelet, és fűzd össze.
(Itt irtam meg a fenti sorokat, de remélem, nincs benne hiba. Ha van, sorry.)
köszike
létszi segítsetek:(
$result3 = mysql_query("SELECT * FROM emails WHERE cimzett='$id'");
while($row = mysql_fetch_assoc($result3)){
echo $row['datum'].'<br>';
$kitol =$row['kitol'];
}
print('</div>');
print('<div id="felado">');
$result2 = mysql_query("SELECT * FROM users WHERE id='$kitol' ");
while($ja = mysql_fetch_assoc($result2)){
include "dolgok/feladorovidites.php";
}
?>
Szerintem
Úgy sejtem ez a problémád...
Btw, enyhén szólva is fura ez a kód :-/
Különösen szemet szóró a ciklusban lévő include. :O
az include azért van hogy ne
Függvények!
Pár egyszerű példa
Ha a függvényeidet megírod pl. egy functions.php fájlba, és azt a főprogramodban, mondjuk az index.php-ban beincludeolod, rögtön elöl, akkor a program további részében szépen elérheted a függvényeket.
Értékátadási szempontból is sokkal praktikusabb, servernek is jobb ha nem kell akár több százszor a fájlhoz nyúlnia, meg egyéb dolgok... :)
nehézségem támadt!!!
-2 táblázat.
-az egyik be egy feladoidet tárolok(email táblázat)
-a másikba pedig nicket iddel.(users táblázat)
na email táblába felado az pl.1
akkor ki keresi a users táblázatbol az egyes idüt
és ugye ebbe az email táblázatba több sorvan 1 feladoiddel és azok helyére a nicket szeretném iratni:D hogyan??:D
(kicsit bonyolult):D
php-val, tömbbel
- Olvasd ki az összes emailt, és tárold el egy tömbben.
- Olvasd ki a tömbben tárolt email-ekhez tartozó nicket a users táblából.
- Update-eld az email táblában lévő nick mezőt.
Hat ez nem teljesen jo mert
és ugye ebbe az email
A lekerdezesbe es a ki
A lekerdezesbe es a ki
Hogy lehet komit törölni??
többit ne vegyétek figyelembe:D
A lekerdezesbe es a ki iratasba kell varialni vagy is kett tablabol dolgozunk vagy is felado tombbe van felhasznalo idje es users tablaba felado tombell azonositjuk es a nevet kikene iratni ugy hogy nickek jelenjenek meg ne az idek
itt a kod:
$result3 = mysql_query("SELECT * FROM emails where cimzett='$id'");// ezzel be azonositjuk az email.
$row = mysql_fetch_array($result3)
$kitol=$row['kitol']; //ezzel ki választjuk a tömböt
$result2 = mysql_query("SELECT * FROM users where id='$kitol'"); //$row['kitol'] ezzel users táblázatbol kiválasztjuk.
na eddig érthetö.szerintem
ha emails táblázatot használunk akkor igy nézki:
[code]
$result3 = mysql_query("SELECT * FROM emails where cimzett='$id'");
while($row = mysql_fetch_array($result3)){
echo $row['kitol'].'<br>';
$row['targy'].'<br>';
$row['datum'];
akkor igy jelenik meg:
felado targy dátum
1 Szia!! 2010/09/01
1 Mit csin??!! 2010/09/01
de igy nekem nem jó
felado nál ne az id jelenjen meg hanem az users táblázatból a nick neve és arra is gondoljunk hogy a felhasználó nicket változtathat:D
megoldható??
vagy ezzel meglehet : str_replace?
Hmm
De ha mindenképpen ragaszkodsz két táblából való lekérdezéshez, akkor a JOIN a barátod.
hát de..
Mi van akkor? :)
De egy ötlet, ha közösségi portál szerűséget csinálsz:
A felhasználónév ne legyen megváltoztatható, hanem legyen egy nick név is, amit kénye-kedve szerint átírhat bármikor, csak úgy mint a jelszavát, vagy az e-mail címét.
E-mai, mint usernév
Annyiban lehet problémás, hogy mail cím változtatás esetén egy darabig párhuzamosan kell futtatni a két mail címet (saját domain(ek) esetén elég az alias), hogy minden ilyen helyen át legyen vezetve a változás. Mármint, ha a username a mail cím és ezen a címen keresztül kommunikál a site a felhasználóval.
Megfogadtam hogy mezöbe rakom
Na azt hogy lehet meg csinálni hogy 1xp képet berakunk honlapomra és ha beszárodik kijelentkeztett hogy??:D