-
Innlegg
4 374 -
Ble med
-
Besøkte siden sist
Hjelpsomme svar
-
Crowly's innlegg in [Løst] hvorfor nyeste versjon av enkelte program ikke lar seg installere på eldre distroer ble markert som svaret
De forskjellige distro'ene er støttet med oppdateringer en viss periode, alt fra rundt ett til 5+ år. Etter det så kan det være at nyere programmer benytter nyere biblioteker enn hva som er installert på systemet. Siden alle, eller i alle fall de fleste, programmer benytter bibliotekene installert på systemet i stedet for å inkludere sine egne filer (slik som er normalt på Windows), så kan man få problemer når man ikke har de påkrevde versjonene installert. For å unngå slike problemer bør man kun installere programmer fra pakkebrønnene. Ulempen med dette for fixed release distro'er at er man kun får tilgang til de versjonene som distro'en har bestemt seg for å tilby i den utgaven av distro'en. Kommer nok til en viss grad rundt dette med 3. parts pakkebrønner, men ingen garanti.
Ønsker man ikke å oppdatere så ofte så er distro'er som har LTS (long term support) utgaver eller generell lang support tid, f.eks. CentOS å anbefale så fremt man klarer seg med de versjonene som er tilgjengelig i pakkebrønnene. Alternativt velge en rolling release distro.
-
Crowly's innlegg in [Løst] php mysql inner join med variabler ble markert som svaret
Du blander tabell navn og database navn. F.eks. hvis $kommunedb = crowly så blir sql'en din slik
SELECT * FROM crowly INNER JOIN postnr ON crowly.postnr=postnr.postnr WHERE $type='ja' AND godkjent ='ja' ORDER by crowly.postnrTa også i bruk alias på tabell navn, så blir det enklere å referere til dem. Når du bruker variabler inne i double quote strenger, bruk {} rundt variablene. Bruk også ` rundt felt og tabell navn, slik at du unngår konflikt med reserverte ord. Vil også anbefale å bruke engelsk språk i stedet for norsk på felt og tabell navn.Hvis alle tabellene er i en database kan du droppe database referansen og kun oppgi tabell navnet.
SELECT * er en uting å bruke hvis ikke du trenger alle feltene, plukk ut kun de feltene du trenger.
Gjør slik, omskrevet til generell syntaks
SELECT * FROM `databaseNavn`.`tabellNavn` AS tab1 INNER JOIN `databaseNavn`.`postnrTabellNavn` AS pnr ON pnr.`postnr` = tab1.`postnr` WHERE tab1.`{$type}` = 'ja' -- regner med at dette er i tab1 tabellen, hvis ikke så flytt det til ON delen i join delen AND tab1.`godkjent` = 'ja' ORDER BY tab1.`postnr` -
Crowly's innlegg in Import fra Google Sheets gir feil tegnsetting ble markert som svaret
Tilkoblingen til databasen må også være utf8, prøv med
$connection = .... mysqli_set_charset($connection, "utf8"); -
Crowly's innlegg in problemer med henting av ID fra database ble markert som svaret
Først så må du slutte å ukritisk kopiere kode uten å forstå hva den gjør. Finn ut hva
fetch_array(MYSQLI_NUM) gjør, spesielt MYSQLI_NUMhttp://php.net/manual/en/mysqli-result.fetch-array.php
Punkt 2, lær deg litt debugging. Den enkleste formen er å legge til noe midlertidig kode for å se hvilke verdier som faktisk ligger i variablene, print_r() og var_dump() er kjekke funksjoner til dette. Skal du ha det enda bedre så installerer/legger du til en debugger som f.eks. xdebug og tar i bruk ett IDE (netbeans, phpstorm osv), da får du mulighet til å legge til break points i koden, og kan single steppe deg igjennom og følge med på hva som skjer.
-
Crowly's innlegg in [Løst] Forbedre en DB klasse med div. bugs ble markert som svaret
Hvorfor ikke bare hente ut alle rader først i en array, og så telle opp antall forekomster?
Modifisert eksempel fra http://php.net/manual/en/pdostatement.fetchall.php
$sth = $dbh->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* Fetch all of the remaining rows in the result set */ print("Fetch all of the remaining rows in the result set:\n"); $result = $sth->fetchAll(); $numRows = count($result ?: []); // antall rader i selecten -
Crowly's innlegg in Beste lærebøker for linux? ble markert som svaret
Drivere ligger i kjernen og oppdages under boot. Har du veldig ny hardware kan du evt. komme i en situasjon at driverne ikke er lagt til enda eller i verste fall ikke finnes (da må du klage til hardware produsenten).Nvidia og Amd drivere kan det være man må installere fra pakkebrønnen i etterkant, for nvidia bør det holde med
sudo apt-get install nvidia-current Du bruker normalt ikke dist-upgrade, kun upgrade. Hvis du ser meldinger om at noen pakker er holdt tilbake, først da er det nødvendig med dist-upgrade hvis man vil ha inn de oppdateringene.I utgangspunktet ikke, men som jeg nevnte litt tidligere så kan dist-upgrade fjerne pakker som kommer i konflikt med andre pakker som er regnet som mindre viktige. Skulle skrivebords miljøet blir avinstallert så er det bare å installere det igjen, f.eks.
sudo apt-get install ubuntu-desktop Som nevnet 16.04 blir lansert 21 april. Vent til da, det som evt. er ute nå er i beta. Release candidate kommer den 14.
Du trenger makemkv, se mine egne notater under Blu-ray her: https://www.diskusjon.no/index.php?showtopic=1583855&do=findComment&comment=21673443Fungerer helt fint på min media pc.
Du må nok bare finne deg i at Windows har nyere driver versjoner enn linux, klag til Nvidia, det er de som må endre på dette.
For film er ikke nyeste drivere nødvendig, i min media pc har jeg ett Nvidia GT 210 som er ett rimelig svakt kort, kjører Blu-ray og alt annet over HDMI helt fint, driver versjonen er 340.96.
Du må også gi opp tanken på at linux skal bli identisk med Windows. Da kan du like gått bare bruke Windows. Linux har sine styrker og svakheter, noen av svakhetene blir ikke endret over natten.
-
Crowly's innlegg in [Løst] PHPmailer, mysql, litt ajax. ble markert som svaret
Du må ha 2-3 sql'er, en update og en eller to select.
Noe slikt, har ikke testet:
if($stmt->execute()) // utfør UPDATE { $sendMail = $stmt->affected_rows > 0; $stmt->close(); if ($sendMail) { $sql = "SELECT * FROM po WHERE idd = ?"; // utvid med en (INNER) JOIN (om mulig) for å få brukers epost adresse ++, hvis ikke må du ha en ny select for å hente dette $mailStmt = $conn->prepare($sql); $mailStmt->bind_param('i', $id); $mailStmt->execute(); $mailRes = $mailStmt->get_result(); // du oppdaterer kun en rad, og henter derfor kun ut en rad, ikke nødvendig å legge ting i en while løkke $mailData = $mailRes->fetch_assoc(); $mailRes->close(); $mailStmt->close(); // utfør SELECT for å hente brukers epost og slikt her om nødvendig // phpmailer her } }Det du har gjort ser ganske greit ut. Selv om du bruker prepared statments ville jeg ha hatt litt validering og sanitering av bruker input:
$nm = $_POST['nm']; $id = $_GET['id']; // eks. $nm = filter_input(INPUT_POST, 'nm', FILTER_SANITIZE_STRING); $id = (int)$_GET['id']; -
Crowly's innlegg in Kople seg til MySQL fra annen server? ble markert som svaret
Hvis du skal flytte databasen må du installere mysql på nytt på den maskinen du skal flytte til. Så eksporterer du databasen fra den gamle maskinen og importerer på den nye, phpmyadmin har funksjonalitet for dette.
Cli kommando for eksport
mysqldump databasenavn --user=brukernavn --password=passord > exportfilnavn.sql Import
mysql -u brukernavn -p databasenavn < file.sql Det er sikkert mulig å kopiere database filene eller sette opp replikering i mellom databasene, men det har jeg ikke noe erfaring med.
På den nye maskinen så må du åpne for at brukere kan koble seg til databasen fra andre maskiner. I phpmyadmin gjør du dette under Privileges -> add new user eller Edit Privileges -> velg og sett riktig verdi i Host feltet
Sql (for det meste generert av phpmyadmin i dette tilfellet)
CREATE USER 'brukernavn'@'host, ip eller % for alle' IDENTIFIED BY 'passord'; GRANT USAGE ON *.* TO 'brukernavn'@'host, ip eller % for alle' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;