En nybegynners feil i OOP

Regulæruttrykk, objektorientering, samt problemstillinger omkring optimalisering og sikkerhet.

En nybegynners feil i OOP

Innlegg Cisse » 22.07.2012 23:11

Dette er noe av det første jeg lager Objekt Orientert og selvfølgelig ble det noen feil her...

Scriptet skal koble deg til en MySQL.

Kode: Merk alt
<?php
class SQL {
   public $host;
   public $user;
   public $pass;
   public $dbnm;
   
   public function connect($host, $user, $pass) {
      $this->mysql_connect($host, $user, $pass) or die(mysql_error());
   }
   public function select($dbnm) {
      $this->mysql_select_db($dbnm) or die(mysql_error());
   }
}

/*Run the class*/
$obj = new SQL;
$obj->connect("host", "bruker", "hemmelig");
$obj->select("DB navn");
?>


Kan noen hjelpe meg med denne? :)
if ($kaffekopp = "") {
$_GET['kaffekanne'];
}
Cisse
Medlem
 
Innlegg: 71
Registrert: 03.04.2012 19:33
Bosted: Kongsvinger

Re: En nybegynners feil i OOP

Innlegg Fuzzy76 » 23.07.2012 9:48

Ikke uten å vite hva som skal være feil, og hva du ønsker å oppnå.

Jeg hjelper deg gjerne med å finne ut av konkrete problemstillinger, men skrive kode for deg gjør jeg ikke. :)
Brukerens avatar
Fuzzy76
Moderator
 
Innlegg: 1266
Registrert: 29.11.2006 11:44
Bosted: Tromsø

Re: En nybegynners feil i OOP

Innlegg Cisse » 23.07.2012 12:22

Denne koden skal bare koble deg til en MySQL.

Men jeg er ikke så dreven innen OOP så hadde satt pris på hjelp.

Feilen jeg får er:

Kode: Merk alt
Warning: Missing argument 1 for SQL::connect(), called in /home/kilskco/public_html/Sivert/connect.php on line 18 and defined in /home/kilskco/public_html/Sivert/connect.php on line 8

Warning: Missing argument 2 for SQL::connect(), called in /home/kilskco/public_html/Sivert/connect.php on line 18 and defined in /home/kilskco/public_html/Sivert/connect.php on line 8

Warning: Missing argument 3 for SQL::connect(), called in /home/kilskco/public_html/Sivert/connect.php on line 18 and defined in /home/kilskco/public_html/Sivert/connect.php on line 8

Fatal error: Call to undefined method SQL::mysql_connect() in /home/kilskco/public_html/Sivert/connect.php on line 9
if ($kaffekopp = "") {
$_GET['kaffekanne'];
}
Cisse
Medlem
 
Innlegg: 71
Registrert: 03.04.2012 19:33
Bosted: Kongsvinger

Re: En nybegynners feil i OOP

Innlegg Hanse » 23.07.2012 13:18

Den største feilen du gjør er å bruke mysql_* fremfor PDO.

$this->mysql_connect vil ikke fungere ettersom mysql_connect ikke er noen metode i klassen din. Det du vil ha er enkelt å greit mysql_connect. Dropp $this.
Hanse
Medlem
 
Innlegg: 176
Registrert: 27.08.2006 8:14
Bosted: Oslo

Re: En nybegynners feil i OOP

Innlegg Cisse » 23.07.2012 13:46

Kunne du væresåsnill å forklare hva PDO er? :)
if ($kaffekopp = "") {
$_GET['kaffekanne'];
}
Cisse
Medlem
 
Innlegg: 71
Registrert: 03.04.2012 19:33
Bosted: Kongsvinger

Re: En nybegynners feil i OOP

Innlegg adeneo » 23.07.2012 15:43

Du er klar over at det finnes en forholdsvis fullstendig online manual for PHP, hvor du kan søke opp PDO.
adeneo
Medlem
 
Innlegg: 628
Registrert: 08.04.2011 21:09

Re: En nybegynners feil i OOP

Innlegg Attend » 27.07.2012 8:58

Noe sånt kanskje?
Kode: Merk alt
<?php
class SQL {
   private $link;
   
   public function connect($host, $user, $pass) {
      $this->link = mysql_connect($host, $user, $pass) or die(mysql_error());
      return $this->link;
   }

   public function select($dbnm) {
      $this->link = mysql_select_db($dbnm) or die(mysql_error());
      return $this->link;
   }
}

$obj = new SQL;
$obj->connect("host", "bruker", "hemmelig");
$obj->select("DB navn");
?>
Attend
Nytt medlem
 
Innlegg: 2
Registrert: 26.07.2012 7:55
Bosted: Alnabru, Oslo

Re: En nybegynners feil i OOP

Innlegg Nukleuz » 27.07.2012 9:06

  • mysql_select_db returerer TRUE eller FALSE, og ikke en link_id.
  • Det vil være bedre praksis å benytte $this->link i andre argument, til mysql_select_db (også mysql_query, mysql_fetch_assoc osv), slik at mysql-utvidelsen holder kontroll på de forskjellige spørringen, dersom det er flere instanser av klassen.
  • Hvorfor ikke i det minste bruke mysqli_-funksjonene, som er bruksmessig tilnærmet helt lik som mysql, men mye sikrere?
  • Og som mange anre har nevnt; bruk aller helst PDO

Edit: edit :)
Mvh
Joachim M. Giæver
http://development.giaever.org
Brukerens avatar
Nukleuz
Seniormedlem
 
Innlegg: 1659
Registrert: 09.12.2006 2:08
Bosted: Tromsø

Re: En nybegynners feil i OOP

Innlegg Sorcher » 17.03.2013 1:45

Lær deg PDO kjapt på YouTube: søk bare "phpacademy PDO" :D
Sorcher
Nytt medlem
 
Innlegg: 3
Registrert: 17.03.2013 0:46

Re: En nybegynners feil ...

Innlegg nkm » 23.03.2013 8:58

Hei Sorcher, velkommen til Norsk Webforum.

Vi håper du blir med oss en stund slik at vi kan få nytte av din gode kunnskap.

Dette forumet har dessverre en svakhet. Det gjøres ikke tydelig nok oppmerksom på hvor lang tid som er gått siden en tråd ble startet, eller hvor lang tid som er gått siden siste innlegg i tråden. Like under overskriften på det enkelte innlegg står det en tidsangivelse, men den er ganske anonym og ikke lett å legge merke til.

En ganske vanlig nybegynnerfeil her i NWF er derfor at man legger inn et svarinnlegg i en tråd som forlengst er "gått ut på dato". Jeg mener ikke at temaet eller problemstillingen er avlegs, den informasjonen som er fremkommet er viktig nok, men den er sannsynligvis ikke særlig aktuell for trådstarteren lenger, og kanskje heller ikke for de øvrige deltakerne i tråden. Å kaste inn et nytt innlegg som om det var en aktuell pågående diskusjon, blir derfor meningsløst.

Det er spesielt lett å gå i denne "fella" når du finner et innlegg eller en tråd ved å søke på ord eller temaer. Da er det lett å kaste seg på uten å sjekke alderen på innlegget eller tråden. De fleste av oss har en eller annen gang tråkket uti dette.

Mitt tips til deg (og andre) er selvfølgelig å sjekke dato på det innlegget du har lyst til å svare på. Hvis det er flere uker gammelt, kan du åpne med å spørre om problemstillingen fortsatt er aktuell. Får du ikke svar i løpet av et par dager, så er den ikke det. Hvis det er noe du lurer på, hvis du vil stille spørsmål, kan du istedet åpne en ny tråd. Da er det fint hvis du nevner at du allerede har lest den gamle tråden om temaet, så du slipper å få intetsigende svar om at dette allerede er diskutert osv.

Som sagt, jeg håper du blir med oss her i Norsk Webforum en stund. Du kan få mange kloke svar på ting du lurer på, og det dukker sikkert opp spørsmål der du kan hjelpe oss andre.

Beste hilsen nkm
www.nkmoller.com
Jeg skriver aldri mot bedre vitende, men på en del områder kan andre vite mer enn meg. Utfordringen er å bruke egen og andres kunnskaper best mulig for å løse aktuelle oppgaver.
Brukerens avatar
nkm
Medlem
 
Innlegg: 891
Registrert: 20.07.2006 23:37
Bosted: Hedmark


Gå til Avansert PHP

Hvem er i forumet

Brukere som leser i dette forumet: Ingen registrerte brukere og 4 gjester