} } } ?> <br> <strong>Følgende varer blev fundet:</strong><br> <br> <?php $sql = "SELECT name FROM products WHERE name IN (".$sql_products.") ORDER BY name";
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
$conn = mysql_connect("localhost", "navn", "password"); // Opretter forbindelse til databasen - så navn og password skal selvfølgelig være de rigtige.
mysql_select_db("databasenavn", $conn); // Åbner tabellen i databasen.
$sql_products = "";
for($i=1 ; $i<=7 ; $i++) {
if(!empty($_POST["searchproduct".$i])) {
$sql_products .= "'".addslashes(utf8_decode($_POST["searchproduct".$i]))."',"; // Sammensætter en streng bestående af searchproduct1 indtil searchproduct7.
} }
$sql_products = substr($sql_products, 0, -1); // Fjerner sidste komma i strengen.
$sql = "SELECT p.shops_id, s.name, s.postalcode, SUM(p.price) AS price, COUNT(p.price) AS product_count ".
"FROM prices AS p ".
"LEFT JOIN shops AS s ON s.id = p.shops_id ".
"WHERE p.products_id IN (SELECT id FROM products WHERE name IN (".$sql_products.")) ".
((!empty($_POST['postalcode']) && ($_POST['postalcode']!="Postnummer"))?" AND s.postalcode='".$_POST['postalcode']."'":"").
"GROUP BY p.shops_id ORDER BY SUM(p.price)"; // Sammensætter SQL-sætningen som skal finde varerne.
$res = mysql_query($sql); // Kører SQL'en i databasen.
if($res) { // Hvis søgningen ikke fejlede.
if(mysql_num_rows($res) > 0) { // Hvis der blev fundet noget.
} } } ?> <br> <strong>Følgende varer blev fundet:</strong><br> <br> <?php $sql = "SELECT name FROM products WHERE name IN (".$sql_products.") ORDER BY name";
Det er en jeg har sammensat både ved at læse/kigge lidt rundt, samt forhørt mig om! Jeg bruger den til en hjemmeside jeg har. Den virker fint, men er bare lidt i tvivl om nogle af tingenes helt konkrete betydning.
Sæt $i til 1. Kør sålænge $i er mindre eller ligmed 7. Læg 1 til $i hver gang, løkken er løbet igennem.
Og:
((!empty($_POST['postalcode']) && ($_POST['postalcode']!="Postnummer"))?" AND s.postalcode='".$_POST['postalcode']."'":"").
kommer af denne struktur:
BETINGELSE ? "SAND" : "FALSK"
Dvs. hvis (!empty($_POST['postalcode']) && ($_POST['postalcode']!="Postnummer")) er sandt, altså hvis postalcode ikke er empty og ikke indeholder "Postnummer", så skal der skrives " AND s.postalcode='".$_POST['postalcode']."'" ellers skal der skrives "" (ingenting).
Du får lige dine point nu, men håber stadig du vil skrive tilbage, hvis jeg kommer i tvivl om noget mere. Er lige på job, så har ikke tid til at kigge det ordentligt igennem lige nu...
Nej, synes også selv det virker lidt uoverskueligt. Utroligt at jeg fik det til at virke, uden at være 100 % inde i alle tingene. Fik du pointene? Har lige accepteret og ved ikke helt hvordan det virker eftersom jeg er ny på siden.
Du må virkelig undskylde at jeg bombarderer dig med spørgsmål. Men jeg vil bare gerne forstå det hele 100%, og når jeg nu har fat i et geni, hvorfor så ikke få så mange oplysninger som muligt. Du må sige til hvis du skal have flere point...
Jeg har et problem med nedenstående login, den udskriver hele tiden "Wrong Username or Password", men jeg ved de er rigtige??? Du skal kun hjælpe hvis du gider, ellers bare skriv at du ikke gider. Det er fair nok... Og $username, $password, $db_name er alle rigtigt.
<?php $host="localhost"; // Host name $username="***"; // Mysql username $password="***"; // Mysql password $db_name="********"; // Database name $tbl_name="members"; // Table name
// Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form $myusername=$_POST['myusername']; $mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection) $myusername = stripslashes($myusername); $mypassword = stripslashes($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; $result=mysql_query($sql);
// Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){ // Register $myusername, $mypassword and redirect to file "login_success.php" session_register("myusername"); session_register("mypassword"); header("location:login_success.php"); } else { echo "Wrong Username or Password"; } ?>
Og det er ikke fordi det bruger store og små bogstaver på en anden måde, end du skriver det? Det ser umiddelbart rigtigt ud.
Du kan godt prøve at rette: $sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; til: $sql="SELECT * FROM $tbl_name WHERE username='".$myusername."' and password='".$mypassword."'"; Men det burde være det samme.
Og ellers må du lige se, hvad den skriver, hvis du retter: else { echo "Wrong Username or Password"; } til: else { echo "Wrong Username or Password<br>"; echo "Brugernavn: ".$myusername."<br>Password: ".$mypassword; }
Det ændrer ingenting, burde den ikke have udskrevet det jeg har indtastet? Eller det rigtigt brugernavn og assword??? Kan ikke lige gennemskue hvilket det skulle have udskrevet?
Jeg fik det til at virke =) Men kan du give en forklaring på:
// To protect MySQL injection (more detail about MySQL injection) $myusername = stripslashes($myusername); $mypassword = stripslashes($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword);
Jeg synes når jeg læser det der står rudt omkring på disse sider, fatter jeg ingenting. Måske fordi jeg er nybegynder. Du er super god til at forklare så hvis du gider???
addslashes gør det, at hvis der f.eks. står " så bliver det til \" Det kaldes at escape tegnet. Så kan det arbejdes med, uden at specialtegnet " kommer på tværs af noget. Og stripslashes gør jo så det, at det fjerner skråstregen igen.
mysql_real_escape_string sørger for, at kun de tegn, som din mysql-database kan have problemer med, bliver erstattet korrekt.
Prøv lige at se, om det jeg svarede i dit andet spørgsmål gjorde nogen forskel. Du skulle rette: echo <META HTTP-EQUIV=Refresh CONTENT="0; URL=.$url.">; til noget andet. Ellers er jeg blank. =S
Hvis jeg var dig, ville jeg lave det igen fra bunden. Teste det for hver funktion, du sætter ind. Det er ret slavisk, men så skulle det alligevel komme til at virke inden for en halv til en hel time.
Programmet virker indtil nedentående, det nedenunder returnerer ikke nogen fejl uanset om det er tomt eller man putter fem tal ind eller noget, det fortsætter bae til googles side???
function CheckZip($zip) { if (eregi("[0-9]", $zip)) //here we check if the ZIP code contains only numbers { return true; } else { return false; } } if ((empty($zip)) || (!CheckZip($zip)) || (strlen($zip)!=4)) //if the ZIP code is empty, the CheckZip function fails or the code length is //different from 5 chars the user is sent to a previously prepared custom error page { header("Location: error-zip.php"); //the user will be sent to this page Die(); } header("Location:http://www.google.com");
else { //here we declare our sql query statement to see if the email address is //already associated to another account $check = mysql_query("select email from users where email='$email'"); $returned = mysql_fetch_array($check);
if(!empty($returned)) { header("Location: error-emailexists.php"); //the user will be sent to this page mysql_close($conn); //and we close the connection to the database Die(); }
Hmmm, det virker også for mig som om der er lidt rod i dine if-sætninger. Dvs. som om du ikke afslutter } ordentligt nogle steder, eller måske slet ikke får åbnet {.
Ok, nu er jeg helt i bunden af koden. Nu mangler det sidste bare, her skulle den gerne henvise til den php side, hvori der står at siden er blevet registreret. Men den hopper uden om hvorfor???:
if($results) { header("Location: accountok.php"); //the user will be sent to this page }
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.