- CMF Buds Pro 2 - feltekerheted a hangerőt
- Yettel topik
- Xiaomi 14T Pro - teljes a család?
- Samsung Galaxy S23 Ultra - non plus ultra
- Telekom mobilszolgáltatások
- Huawei Watch GT 2 Pro - egyszerűen gyönyörű
- Betiltották a Pixel 7-et Japánban
- Motorola Edge 30 Neo - wake up, Jr...
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Itthon is kapható lesz a kerámia Xiaomi Band 10
Aktív témák
-
paramparya
őstag
mysql_insert_id()-vel kapcs:
Ugye van egy ilyesmi query-d: INSERT INTO `tablanev` VALUES (NULL, stb., stb.)
A NULL az első oszlopba kerül, ami az ''id'' (máshol lekérdezed ilyen néven, szólva biztos, hogy az). Oda pedig ugye nem null kerül, mert akkor nem lennének különböző id-k, hanem a tábla következő auto_increment értéke (a tábla létrehozásánál be lett állítva, hogy ez a mező rendelkezzen az auto_increment értékkel, azaz nem lehet konkrét értéket beleírni - ezért a NULL - , hanem ő magától generálja, szépen sorrendben.)
A mysql_insert_id() pedig pont ezt az értéket kéri le ( $newestuser = mysql_insert_id(); ), így pont azt kapod vissza, amit akarsz, ez így szebb megoldás, és ha közben már pont abban a pillanatban regisztrált valaki, mielőtt te lekérdezted volna, akkor egy felhasználó már ki is csúszott a listából, mert a max(id) már a következő lesz. Kérdezhetné az embert, hogy ''Igenám, de akkor a mysql_insert_id() is nem ugyanazt adná vissza?''. Nem, mert ő a jelenleg, általad létrehozott kapcsolathoz tartozó, legutolsó auto_increment értéket adja vissza, még ha azóta regisztráltak 1000-en, és már sokkal nagyobb a max(id), amit egy select-tel kérnél le, ezáltal kihagyva a mostani + 999 felhasználót...
A másik:
A script szerkezetét ne szerkeszd át, csak ide-oda tegyél egy echo-t, ami kiírja, hogy mi az, ami megtörtént, és a header(''valahová.html'') részeket kommentezd ki, és írasd ki, hogy most hová továbbítódtál volna, és die(); hogy ne folytatódjon, ahol nem kell...
A mail() elé meg után pedig megintcsak tegyél echo ''mail megy''; , echo ''mail ment''; , vagy hasonló szövegeket, hogy megtörtént-e a dolog, vagy előtte elakadtunk vhol...
Bár szerintem az
else //egyéb bajok
{
header(''Location: couldnt.html''); //nem siekrült adatbázisba felvenni
}
Utáni részt be kéne tenned ide, mert ott kéne végrehajtódnia, ott indokolt (ha jól sejtem akkor, amikor bekerült a táblába a felhasználó, és utána menni kéne a felhasználók listájába)
//táblában rögzítés
$request = ''INSERT INTO $mysql_table values(NULL,'$fname1','$name1','$fname2','$name2','$gender','$email','$country','$discipline','$discipline2','$sightseeing','$sightday','$hosting','$name','$address','$phone')'';
$results = mysql_query($request);
if($results)
{
Ide kéne a mailküldős rész:
//Select newest user from database
$newestuser = mysql_query('SELECT MAX(id) FROM $mysql_table');
//process query
$sql = mysql_query('SELECT * FROM $mysql_table WHERE id=$newestuser');
while($rows = mysql_fetch_array($sql,MYSQL_NUM)) {
$headers .....folyt.köv., kivéve a //close connection utáni die();, mert akkor nem menne tovább az accountok.html-re
header(''Location: accountok.html'');
}
[Szerkesztve]
[Szerkesztve] -
paramparya
őstag
Ebben mi volt a hiba?
Gyorsabb lenne pedig echo-kal, vagy die-okkal debuggolgatni, mint találgatni.
Pl. a header(''valami.html'') részeket kommentelni, és kicserélni erre: die(''Most a valami.html-re mennék''); és tudod, hogy mi történik...
Vagy amikor valami megtörtént, akkor echo-zod (echo ''most beírtam az adatbázisba'';), és eltűnteted ideiglenesen a továbbdobó header-öket, és tudod, hogy meddig jutott a script, nem sötétben tapogatózol..
[Szerkesztve] -
paramparya
őstag
Akkor hogy küldhet mailt, ha mindenképp' átmegy egy másik oldalra, mielőtt küldhetné?
Van ez a rész:
if($results)
{
header(''Location: accountok.html'');
}
else //egyéb bajok
{
header(''Location: couldnt.html''); //nem siekrült adatbázisba felvenni
}
Ez után van a mail küldés, már pedig itt igaz és hamis ágban is tovább leszünk dobva, szóval nem hajtódhat végre a levélküldés...
$newestuser = mysql_query('SELECT MAX(id) FROM $mysql_table');
helyett pedig használhatod a mysql_insert_id() fv.-t is, ez a legutóbbi auto_increment értékkel tér vissza, ha jól látom, neked arra van szükséged... -
paramparya
őstag
Lefut egyáltalán rendesen a script? Pl. ott van benne a nagybetűs Die();, én azt sem szeretném a php értelmező helyében...
Tegyél elé egy echo ''most levelet fogok küldeni''; részt, a mail()-t egészítsd ki így:
mail(...) or die(''Nem sikerült levelet küldeni'');
és utana tégyél még egy echo-t:
echo ''Levél elküldve'';
És nézd meg, hogy ezeket kiírja-e...
Van benne sok nagybetűs Die(), azokat cseréld ki mindet sztem...
Most megyek kajálni, negyed óra múlva jövök, várom a fejleményeket
[Szerkesztve] -
Kaoru
senior tag
Erre jutottam. Az űrlap feldolgozó és ellenörző oldalba iktattam be, a legaljára. Jól csináltam?
<?php
$url = 'http://kaoru.uw.hu/cscREG/accountok.html'; //if succesfull redirect to thank you page
$fname1 = $_POST['fname1';
$name1 = $_POST['name1';
$fname2 = $_POST['fname2';
$name2 = $_POST['name2';
$gender =$_POST['gender';
$email = $_POST['email';
$country = $_POST['country';
$discipline = $_POST['Discipline';
$discipline2 = $_POST['Discipline2';
$sightseeing = $_POST['Sightseeing';
$sightday = $_POST['Sightday';
$hosting = $_POST['hosting';
$name = $_POST['name';
$address = $_POST['address';
$phone = $_POST['phone';
//EMAIL VERIFICATION
function CheckMail($email)
{
if(eregi(''^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$'',$email))
{
return true;
}
else
{
return false;
}
}
if ((empty($email)) || (!CheckMail($email)))
{
header(''Location: error-form.html'');
Die();
}
//FORM VERIFICATION
if (empty($fname1))
{
header(''Location: error-form.html''); //vezetéknév1
Die();
}
if (empty($name1))
{
header(''Location: error-form.html''); //keresztnévnév1
Die();
}
if (empty($fname2))
{
header(''Location: error-form.html''); //vezetéknév2
Die();
}
if (empty($name2))
{
header(''Location: error-form.html''); //keresztnév2
Die();
}
if (empty($name))
{
header(''Location: error-form.html''); //város
Die();
}
if (empty($country))
{
header(''Location: error-form.html''); //ország
Die();
}
if (empty($address))
{
header(''Location: error-form.html''); //cím
Die();
}
include(''connect.php'');
$check = mysql_query(''select name from users where name=\''$name\'''');
$returned = mysql_fetch_array($check);
if(!empty($returned))
{
header(''Location: sameuser.html''); //dupla regisztráció
mysql_close($connection);
Die();
}
else
{
$check = mysql_query(''select email from users where email=\''$email\'''');
$returned = mysql_fetch_array($check);
if(!empty($returned))
{
header(''Location: sameemail.html''); //dupla e-mail
mysql_close($link);
Die();
}
else
//táblában rögzítés
$request = ''INSERT INTO $mysql_table values(NULL,'$fname1','$name1','$fname2','$name2','$gender','$email','$country','$discipline','$discipline2','$sightseeing','$sightday','$hosting','$name','$address','$phone')'';
$results = mysql_query($request);
if($results)
{
header(''Location: accountok.html'');
}
else //egyéb bajok
{
header(''Location: couldnt.html''); //nem siekrült adatbázisba felvenni
}
//Select newest user from database
$newestuser = mysql_query('SELECT MAX(id) FROM $mysql_table');
//process query
$sql = mysql_query('SELECT * FROM $mysql_table WHERE id=$newestuser');
while($rows = mysql_fetch_array($sql,MYSQL_NUM)) {
$headers = ''Bcc: csardascup@gmail.com' . ''\r\n'' . ''From: csardascup@gmail.com'' . ''\r\n'' . 'X-Mailer: PHP/' . phpversion(); //set Bcc, From fields
$to =$rows[''email''; //addressed
$subject = ''Succesfull registration!'';
$message = ''Dear ''.$rows[''user''.'', Thank You for your registration!\n\nYou provided us with the following data: \n\nParticipants: ''.$rows[''fname1''
.'' ''.$rows[''name2''
.'' - ''.$rows[''fname2''
.'' ''.$rows[''name2''
.''
\n\nYou choosed the following Category: ''.$rows[''discipline''.'',''.$rows[''discipline2''
.''
\n\nYour gender: ''.$rows[''gender''.''
\n\nYour contact information: ''.$rows[''name''.'', ''.$rows[''country''
.'' ''.$rows[''address''
.'', e-mail: ''.$rows[''email''
.'', phone: ''.$rows[''phone''
.''
\n\nYou choosed the following options: sightseeing - ''.$rows[''sightseeing''.'', sightday - ''.$rows[''Sightday''
.'', hosting - ''.$rows[''hosting''
.''
\n\nIf you wish to change any of this information, please contact us on e-mail: csardascup@gmail.com
\n\n\nThank you in advance: Csardas Cup Team'';//message
}
mail($headers,$to,$subject, $message); //send email
mysql_close($link); //close connection
Die();
}
//****************//
?> -
skera
tag
Ahhoz a PHP-ba beépített mail() fv-t kell használni. Pár bejegyzéssel, ha visszalapozol, akkor le van írva -valahol-, hogy pontosan hogyan is kell használni.
Ki kell választani először is a sor azonosítóját, aztán külön a többi adatot.
Én így tenném:
<?php
// Csatlakozas az adatbazishoz
$db = mysql_connect(hoszt,user,pass);
// Adatbazis kivalasztasa
mysql_select_db(dbnev);
// Legutobbi sor kivalasztasa
$maxElem = mysql_query('SELECT MAX(id) FROM tablanev');
// es a tobbi
$q2 = mysql_query('SELECT * FROM tablanev WHERE id=$maxElem');
while($tomb = mysql_fetch_array($q2,MYSQL_NUM)) {
$levelbe = ''Neved: '' . $tomb[1]; // nev
$levelbe .= ''Email címed: '' . $tomb[2]; // mail
// Ugyanigy folytasd ide a tobbi parameterrel, ami kell
$levelbe .= ''N.edik szoveg: '' . $tomb[N]; // N.-edik parameter
}
// Es ide a mail fv
...
?>
* A hoszt, user, pass, dbnev paraméterek, ami az adatbázishoz történő csatlakozáshoz kell.pl: ''localhost'', ''te_userneved'',''jelszavad'', + adatbazisnev ''te_db_neved''
[Szerkesztve]
[Szerkesztve]
Aktív témák
Hirdetés
- Microsoft Windows, Office & Vírusirtók: Akciók, Azonnali Szállítás, Garantált Minőség, Garancia!
- 100 - Lenovo Yoga Pro 9 (16IRP8) - Intel Core i9-13905H, RTX 4070 (ELKELT)
- AKCIÓ! ASUS ROG Zephyrus GA403UV Gamer notebook - R9 8945HS 16GB RAM 1TB SSD RTX 4060 8GB WIN11
- Samsung Galaxy A40 64GB, Kártyafüggetlen, 1 Év Garanciával
- MacBook felváráslás!! MacBook, MacBook Air, MacBook Pro
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged