Avatar billede scootergrisen Nybegynder
14. januar 2013 - 13:39 Der er 19 kommentarer og
1 løsning

Se om data findes i forvejen

Jeg skal teste om en data findes i vejen og hvis den ikke gør skal den oprettes, hvis den findes skal den i stedet opdateres.

Hvordan gør jeg det ?

Jeg har denne kode indtil videre som dog ikke gør det jeg ønsker.


$result = mysqli_query($resource, "SELECT * FROM '$tablenavn' WHERE url = '$url'");

if($result){

  $indhold .= "side findes" . "<br>\r\n";


}else{

  $indhold .= "side findes ikke" . "<br>\r\n";

}
Avatar billede arne_v Ekspert
14. januar 2013 - 15:07 #1
SELECT og enten INSERT eller UPDATE

eller http://dev.mysql.com/doc/refman/5.5/en/replace.html
Avatar billede scootergrisen Nybegynder
14. januar 2013 - 16:30 #2
#1 Ja men hvordan ?
Avatar billede arne_v Ekspert
14. januar 2013 - 16:49 #3
Hvad mener du med hvordan?

Hvordan man laver SELECT/INSERT/UPDATE i SQL?

Hvordan man laver SELECT/INSERT/UPDATE via PHP?
Avatar billede scootergrisen Nybegynder
14. januar 2013 - 19:50 #4
Jeg skal teste om en bestemt værdi findes i tabellen i forvejen.
Avatar billede arne_v Ekspert
14. januar 2013 - 20:07 #5
Lav en SELECT med WHERE og se om der returneres nogle raekker.
Avatar billede scootergrisen Nybegynder
14. januar 2013 - 20:21 #6
Det er også det jeg prøver meg den kode jeg har skrevet men virker ikke.
Avatar billede arne_v Ekspert
14. januar 2013 - 20:42 #7
Du tester paa om query gik godt. Query gaar godt selvom der ingen raekker er.

Du er noed til at kalde en fetch for at vide om der er data.
Avatar billede scootergrisen Nybegynder
14. januar 2013 - 20:53 #8
Ok men hvordan ?

Jeg har en table hvor en column der hedder URL.
Jeg skal så teste om der findes en URL der hedder "forside.php" for eksempel.
Avatar billede arne_v Ekspert
14. januar 2013 - 21:02 #9
Helt normalt mysqli.

Noget a la:

    $con = new mysqli(...);
    $stmt = $con->prepare("SELECT * FROM $tablenavn WHERE url=?");
    $stmt->bind_param('s', $url);
    $stmt->execute();
    if($stmt->fetch_array()) {
        // der var noget
    } else {
        // der var ikke noget
    }
Avatar billede scootergrisen Nybegynder
14. januar 2013 - 21:46 #10
Jeg får denne fejl :
Fatal error: Call to a member function bind_param() on a non-object in C:\.....\rate.php on line 70

Se koden her : http://netkoder.dk/test/test0206.php

Jeg er lige gået igang med at skulle lærer mysql igen fordi jeg aldrig har lært det og nu vil jeg så satse på at lærer mysqli objekt orienteret eftersom det ser ud til at være vejen frem i PHP manualen.
Avatar billede arne_v Ekspert
14. januar 2013 - 22:02 #11
du skal nok teste paa hvad de forskellige metoder returnerer og udskrive fejl beskeder.
Avatar billede arne_v Ekspert
14. januar 2013 - 22:03 #12
$con = new mysqli(...);
    if(mysqli_connect_errno()) die(mysqli_connect_error());
    if($stmt = $con->prepare("...")) {
        // resten
    } else {
        die($con->error);
    }
Avatar billede scootergrisen Nybegynder
15. januar 2013 - 02:54 #13
Jeg har opdatert koden : http://netkoder.dk/test/test0206.php
Se om du/i kan komme med forbedringer.

Jeg har lavet det sådan at når man klikker på et billede så bruges AJAX til at kalde php filen som stemmer med onclick('5', '/forsiden.php');

Er koden sikker nok ?

Når jeg er lidt mere sikker på at koden er sikker så lægger jeg det på hjemmesiden så i rigtigt kan prøve det.
Jeg har fået det til at virke sådan nogenlunde.
Avatar billede arne_v Ekspert
15. januar 2013 - 03:02 #14
Du bruger ikke prepared statement men dynamnisk SQL, saa med en ondsindet vaerdi i $_GET['url'] kan det gaa helt galt.
Avatar billede scootergrisen Nybegynder
15. januar 2013 - 03:27 #15
Ok det er rettet nu.

Hvad med $tablenavn skal den også erstattes med ?.
Eller er det kun en sikkerhedssisiko hvis variablen sættes udefra ?
Avatar billede arne_v Ekspert
15. januar 2013 - 03:32 #16
Man kan kun bruge parametre for vaerdier - ikke for felt navne og tabel navne.
Avatar billede scootergrisen Nybegynder
15. januar 2013 - 04:15 #17
Ok jeg pudser lidt mere på koden i morgen også sætte jeg det på hjemmesiden så i kan prøve det.
Avatar billede scootergrisen Nybegynder
15. januar 2013 - 18:54 #18
Nu har jeg sat rating systemet på hjemmesiden så i kan prøve det selvom det er langt fra færdigt.

I kan prøve det her for eksempel ude til højre under "Stem på siden" : http://netkoder.dk/netkoder/kode_helloworld.php

Det virker men bag om koden har jeg det problem at med pil op og pil ned der bruges AJAX måden hvor rate2.php kaldes.

Mens hvis man bruger knapperne 1 2 3 4 5 der er det rate.php der bruges med en PHP funktion.

De 2 filer har næsten samme indhold men jeg ved ikke hvordan jeg får det lavet så jeg kan nøjes med 1 fil.
Avatar billede scootergrisen Nybegynder
29. januar 2013 - 01:40 #19
tak for svar
Avatar billede arne_v Ekspert
29. januar 2013 - 01:54 #20
Men du tog selv point?
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