Avatar billede dennisml Nybegynder
22. maj 2011 - 16:56 Der er 25 kommentarer

sql / php

Hej alle.

Jeg har en side hvor med et text felt.
text feltet er til en referencekode som skal godkendes.

så hvis der er en ref kode some har "used = 0" opdatere "used = 1" og giv en echo "ok"
eles
hvis koden ikke findes skal den skrive "koden findes ikke"

hvis koden allerede er brugt ("used=1") så skal den skrive "koden er allerede brugt.

lidt info:
tabel name= ref
row names=
used
refkode
id (unique)

Nogen der kan vise mig hvordan, er helt ny på php og har prøvet en del nu og kigget omkring, men kan ikke få det til at virke.

Takker
Avatar billede davidabk Nybegynder
22. maj 2011 - 17:44 #1
Hej

Jeg er ikke sikker på at jeg forstår din beskrivelse helt, men du skal undersøge om "refkode" er brugt.

Lav et databaseopslag og placer alle refkoder i en array. Derefter kan du lave en søgning i den nye array og se om den refkode som ønskes eksisterer allerede. Brug evt. in_array!

Håber det var det du søgte!
Avatar billede dennisml Nybegynder
22. maj 2011 - 17:49 #2
det er præcis det jeg søger, men som sagt så har jeg ikke styr på min php (endnu)

ved det er simpelt, men kan ikke få det til at virke.

har prøvet sådan her:


if(isset($_POST['submit'])){
  if ($code == '1') {
    echo 'fejl';
      }else{
    $sql = mysql_query("UPDATE ref SET used=1 WHERE refkode='$refkode'");
    mysql_query($sql);  }
}


man der er noget galt. :D

måske du kunne rette den til så ved jeg da hvordan det skal laves næste gange :)
Avatar billede majbom Novice
22. maj 2011 - 19:59 #3
hvis du er blevet bedre til at give til point til dem der hjælper, vil jeg gerne hjælpe...
Avatar billede dennisml Nybegynder
22. maj 2011 - 20:18 #4
jeg gør mit bedste :D

jeg glemmer det sku, men jo, skal nok give dem til den der kommer med svaret. :)
Avatar billede davidabk Nybegynder
22. maj 2011 - 20:48 #5
Hej dennisml

Jeg har lige skrevet denne lille kodestump til dig - som du dog skal tilpasse (lidt udfordring skal du have ;-) :

//Hent informationer fra database
        $check_refkode = $_POST['refkode'];
        if (isset($check_refkode)) {
        $check_sql = "SELECT [TABEL] FROM [COLUMN]";
        $sql_result = mysql_query($check_sql);
            //Place query result in array
            $temp_array = array();
            while ($sql_row = mysql_fetch_array($sql_result))
                {
                $temp_array[] = $sql_row['[COLUMN]'];
                }
            //Search array for refkode
            $search = in_array($check_refkode, $temp_array);
            //Make error if refkode exists in database
            if ($search == 1) {
                $refkode_error = "Refkoden findes allerede i databasen!";
            }
        }

Koden er ikke efterprøvet, men jeg har selv brugt noget tilsvarende tidligere så jeg er rimelig sikker på at det virker!
Avatar billede dennisml Nybegynder
22. maj 2011 - 20:55 #6
okay, jeg prøver lige lidt senere i aften.

ja udfordring skal der nok være. hehe. ser sådan ud for en nybegynder :D

giver lige points lidt senere når den virker :)
og skal nok huske det
Avatar billede dennisml Nybegynder
22. maj 2011 - 21:02 #7
Men går denne kode ind og tjekker om USED er 0 eller 1 eller tjekker den blot on ref koden allerede er i databasen ?

Den skal tjekke om ref koden er brugt engang før. og hvis IKKE den er skal den opdatere USED fra 0 til 1. og give en besked om at koden er accepteret. ?
Avatar billede majbom Novice
22. maj 2011 - 21:15 #8
tillader mig lige at rette lidt i den kode:

//Hent informationer fra database
if(isset($_POST['refkode']) && $_POST['refkode'] != "")       
  $check_refkode = $_POST['refkode'];
  $check_sql = "SELECT id FROM tabel WHERE refkode='$check_refkode' AND used=0 LIMIT 1";
  $sql_result = mysql_query($check_sql) or die(mysql_error());
  //Place query result in array
  if(mysql_num_rows($sql_result) > 0)
  {
      echo "ok";
      $mysql_query("UPDATE tabel SET used=1 WHERE refkode='$check_refkode' LIMIT 1") or die(mysql_error());
  }
  else
  {
      echo "koden findes ikke, eller er allerede brugt!";
  }
}


ikke testet...
Avatar billede dennisml Nybegynder
22. maj 2011 - 21:39 #9
takker splazz. det ser mere rigtigt ud :D

god står: koden findes ikke, eller er allerede brugt!

i toppen af siden hele tiden?
Avatar billede dennisml Nybegynder
22. maj 2011 - 21:43 #10
god står = godt nok står :)
Avatar billede majbom Novice
23. maj 2011 - 16:04 #11
og den indtastede kode er i databasen og used er sat til 0?
Avatar billede davidabk Nybegynder
23. maj 2011 - 17:21 #12
Jeg tror ikke helt at jeg forstår hvad du vil!

Den kode som jeg lavede i #5 gik på at trække data ud af en tabel og placere resultatet i en array. Derefter kan du hurtigt undersøge om arrayet indeholder data svarende til det input som brugeren kommer med. Jeg bruger denne metode til fx at tjekke om et brugernavn allerede er brugt.

Skal du kun tjekke en bruger? Er der flere brugere som kan have samme refkode?
Avatar billede majbom Novice
23. maj 2011 - 18:18 #13
koden der bliver kørt når du trykker på "søg"
Avatar billede dennisml Nybegynder
23. maj 2011 - 20:32 #14
splazz. ja koden er i databasen. jeg skal tjekker om den er brugt eller ej,
default er USED sat til 0.(vil sige ikke brugt)
Hvis refkoden ikke er brugt når man taster den ind, skal den skifte fra 0 til 1.(vil sige den nu er brugt)og komme meden besked om at koden er godkendt.


hvis man så prøver bruge en brugt kode igen skal den komme med en fejl.

Jeg vil gerne at alle beskeder (echo) kommer lige over mit input felt.
Avatar billede majbom Novice
23. maj 2011 - 21:27 #15
det min kode gør i #8, er at tage indholdet af POST-variablen refkode og tjekker i databasen om den findes OG om den har used=0, hvis den ikke findes, eller findes og used=1 melder den fejl, ellers melder den ok
Avatar billede dennisml Nybegynder
23. maj 2011 - 21:43 #16
okay, så mangler den bare at den skal skifte status fra 0 til 1 hvis det er den findes og USED = 0
Avatar billede majbom Novice
23. maj 2011 - 21:51 #17
$mysql_query("UPDATE tabel SET used=1 WHERE refkode='$check_refkode' LIMIT 1") or die(mysql_error());


skal rettes til:

mysql_query("UPDATE tabel SET used=1 WHERE refkode='$check_refkode' LIMIT 1") or die(mysql_error());
Avatar billede dennisml Nybegynder
23. maj 2011 - 22:00 #18
Så sådan her:


$conn = mysql_connect("HOST", "USER", "PASS");
    mysql_select_db("DB");
//Hent informationer fra database
if(isset($_POST['refkode']) && $_POST['refkode'] != "")      { 
  $check_refkode = $_POST['refkode'];
  $check_sql = "SELECT id FROM ref WHERE refkode='$check_refkode' AND used=0 LIMIT 1";
  $sql_result = mysql_query($check_sql) or die(mysql_error());
  //Place query result in array
  if(mysql_num_rows($sql_result) > 0)
  {
      echo "ok";
mysql_query("UPDATE ref SET used=1 WHERE refkode='$check_refkode' LIMIT 1") or die(mysql_error());
  }
  else
  {
      echo "koden findes ikke, eller er allerede brugt!";
  }
}



hvis det er rigtigt. så virker det ihvertfald ikke :)
Mit text felt har Name: refkode

håber sku da snart jeg lære php, ville være meget nemmer :D
Avatar billede majbom Novice
23. maj 2011 - 22:07 #19
kan man se siden?
Avatar billede dennisml Nybegynder
24. maj 2011 - 02:54 #20
ja, sender den lige i en PB
Avatar billede majbom Novice
24. maj 2011 - 08:35 #21
har du en kode også?
Avatar billede dennisml Nybegynder
24. maj 2011 - 18:04 #22
1234 :D
Avatar billede majbom Novice
24. maj 2011 - 21:52 #23
hmm

prøv at ændre

echo "koden findes ikke, eller er allerede brugt!";



til

echo "koden findes ikke, eller er allerede brugt! ($check_sql)";
Avatar billede dennisml Nybegynder
27. maj 2011 - 15:28 #24
okay, smid et svar splazz

har fået det lavet. aner ikke hvordan, lavede det ikke selv.
Avatar billede majbom Novice
27. maj 2011 - 15:35 #25
svar...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester