Har denne php kode: [code] $countMail = mysql_query("SELECT * FROM brugere WHERE email = '$email1'"); $countMail = mysql_num_rows($countMail);
$countUsers = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$brugernavn'"); $countUsers = mysql_num_rows($countUsers);
if($countUsers != 0){ echo "Brugernavnet er allerede taget."; }elseif($countMail != 0){ echo "E-mailen er allerede i brug."; } [/code]
Hvordan kan jeg få lavet det om til noget java script så jeg kan køre inden man loaden en ny side i en html from.
Ligesom når man laver dette: [code] function val(f) { if (f.brugernavn.value == "Brugernavn") { alert("Du har glemt at indtaste dit brugernavn."); return false; } } [/code]
Jeg er ikke sikker på jeg forstår dig helt rigtigt.
PHP er serversidescripting, så det kan du ikke ændre på når siden er loaded, men hvis du har en PHP variabel, som du vil have lavet om til en Javascript variabel, kan du bare echo javascriptet gennem PHP, eller indsætte PHP tag i javascriptet f.eks.:
function test(){ javascriptvariabel = <?php echo $phpvariabel ?> alert(javascriptvariabel) }
Tak for svar :) Men det vidste jeg godt. Jeg prøver lige og forklare. Den kode jeg har postede i indlægget tjekker i databasen om brugernavnet og mailen allerede eksistere. Hvis den gør det kommer den med en fejl melding. Men mit problem er at den kode har jeg taget fra den side min form henviser til. Det vil sige at jeg kan bruge $_POST[brugernavn] til og tjekke i dben. Men det kan jeg vel ikke når den nye side ikke har loadet endnu? Så findes der en anden løsning? Det jeg ville have gjort hvis man kunne bruge $_POST før action er udført:
<? $countMail = mysql_query("SELECT * FROM brugere WHERE email = '$_POST[email]'"); $countMail = mysql_num_rows($countMail); ?> <script language="JavaScript"> function val(f) {
if (<? echo $countUsers; ?> != 0) { alert("E-mailen er allerede i brug."); return false; }
<? if (isset($_POST['submit'])) { $countMail = mysql_query("SELECT * FROM brugere WHERE email = '$_POST[email]'"); $countMail = mysql_num_rows($countMail); if ($countMail != 0) { //fortsæt bruger registrering } } ?>
<html> <head> <script language="JavaScript"> function val(f) { if (<? echo $countMail; ?> != 0) { alert("E-mailen er allerede i brug."); return false; } else { return true; } } </script> </head> <body onload='val()') <div>Hello World n' all that</div> </body> </html>
burde da fungere, det er nogenlunde det du selv har foreslået.
Jeg er stadig ikke helt sikker på jeg forstår dig. Du kan ikke lave en DB forspørgsel uden at loade en side. Men PHPscriptet køres jo inden siden vises i browseren, så hvis du loader en siden, kan du jo sagten behandle form data med PHP, sætte en variabel, og så echo den til javascript.
Når jeg koder hjemmesider, skriver jeg som regel alt i samme sidefil, både forms og håndtering af formdata. Man skal bare reloade siden med SUBMIT-knappen, og checke om der er data i $_POST og hvis der er, så slår man data op i DB, og hvis der ikke er, viser jeg bare forms i stedet for DB-data.
Du kan sagtens tilføje forms i bodyen i mit eksempel og reloade siden med en submit, så skulle dataene blive fanget i PHP-delen og behandles som siden loades igen.
Jeg er ikke lige 100% sikker på at mit eksempel er fejlfrit, jeg kan se jeg glemte glyphs om "email" i query'en, og der er nok andre småfejl, men med lidt finpudsning burde det fungere.
Her er et eksempel på hvad jeg mener. http://www.phpuniverset.dk/show_tips.phtml?Kat=9&Id=61 Så vil jeg også gerne lave et pop up vindue som siger at "mailen er allerede i brug". Men siden bliver jo ikke loadet inden pop vinduet skal komme frem? Så kan man vel ikke bruge post? Hvordan kan man ellers bruge det der er skrevet i mail feltet til og tjekke i databasen?
Aha... Men du kan jo ikke lave et lookup uden at loade en side, så den eneste løsning jeg kan se, er at loade en anden side, og hive nogle værdier ud af den med JS, men det har jeg ikke ret meget erfaring med. Med det mener jeg at hvis du f.eks. laver en lookup.php hvor du sender brugernavn og mail i linket (lookup.php?email=<? echo $_POST['email']."&user=".$_POST['user'] ?>, så ville du kunne få den side til at lave kontrol, og så ville man kunne hente HTML data fra den side. Det er lidt bøvlet, men du skal enten reloade din side, eller sende data til, og hente fra, en anden for at dine alerts kan virke med user og email lookup.
Okay. Det kunne godt være der var en løsning så man ikke behøvede og reloade. For værdien f.mail.value indholder jo mail værdien i formen. Så det kunne jo være fedt hvis man kunne hive det med ind i en db tjekker. Men hvis det ikke er muligt må man jo bare lave et load af en ny side :)
Jeg plejer at sende formdata, fange det med den samme side, og hvis der er nogen fejl, smider jeg al data tilbage i formfelterne, på nær password, og så fejlmeldinger over det/de felter der er forkerte. Hvis der ikke er nogen fejl, så bliver det hele smidt i DB'en og bruger får besked om successfuld oprettelse.
Sådan kan man jo også bare gøre det ;) hvordan får du så værdierne ind i formen igen? bare value="<? echo $_POST[navn]; ?>" eller hvad? og sætter du så bare en rød border ind hvis det ikke er udfyldt eller hvordan? :)
Jeps, sådan skulle du kunne gøre det. Det kan godt være du er nød til at smide $_POST-værdierne over i nogle andre PHP-variabler for at undgå PHP fejl, men det er jeg ikke lige helt sikker på.
Man kan heller ikke lave noget lign: function val(f) { <? $brugernavn = ?> f.brugernavn.value; <? $countUsers = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$brugernavn'"); $countUsers = mysql_num_rows($countUsers); ?> if( <? echo $countUsers; ?> != 0){ echo "Brugernavnet er allerede taget."; } } Dette virker ikke nej, men det kunne jo være der bare skulle rettes lidt :)
<? echo $brugernavn ?> = f.brugernavn.value; <? $countUsers = mysql_query("SELECT * FROM brugere WHERE brugernavn = '$brugernavn'"); $countUsers = mysql_num_rows($countUsers); ?> if( <? echo $countUsers; ?> != 0){ echo "Brugernavnet er allerede taget."; } }
Har lige rettet det lidt til, men problemet her er at PHP scriptet allerede er kørt når du kører dit JavaScript.
Den eneste måde du kan lave en query, er hvis PHP scriptet køres, og det køres kun når siden loades.
Sekvens: PHP (eneste tidspunkt serverside scripting køres (echoer HTML indhold, altså sendes der ikke mere data fra serveren når PHP-scriptet har kørt))
HEAD (clientside scripting mens HTML'en loades + aktiv scripting) BODY (clientside scripting når siden er loadet + events)
for at bruge PHP/MySQL funktioner skal en eller anden side loades.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.