Gå til innhold

OIS

Medlemmer
  • Innlegg

    222
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av OIS

  1. Okei, noen som vet en kode for hvordan at det blir automatisk satt inn en data o mysql databasen når jeg poster en nyhet?:)(

    Hvis du mener dato kan du enkelt bruke timestamp.

    opprettet timestamp default CURRENT_TIMESTAMP comment 'the time this datarow was created. do not include in insert or update'
    

     

    NB: virker kun på et felt for hver tabell, og det kan være når det blir laget, når det endres (ON UPDATE) eller begge, men kun et felt i hver tabell. Hvis du vil ha et felt for opprettet og et for endret må du lage en trigger.

    create trigger tablenameTimeCreated before insert on tablename for each row set NEW.opprettet = NOW();
    create trigger tablenameTimeUpdated before update on tablename for each row set NEW.endret = NOW();
    

  2. Kor får du $p fra?

    Midt inni koden settes $p til $_GET['p'] som da er en tekststreng og ikke et tall. Når du bruker $p senere for å sammenligne med 8 for å inkludere kampanje så vil den ikke virke.

     

    <?php $p = $_GET['p']; if($p == "index"){$p = "";} if($_GET['p']){ include($p .".php"); } else { include("home.php");} ?>

    Her prøver du å inkludere .php hvis $_GET['p'] er 'index'. Du bør lage en "hvitliste" over filer som kan inkluderes.

    $files = array(
    'home',
    'fil2',
    'fil3',
    );
    if (!in_array($p, $files, true)) { $p = $files[0]; } 
    include($p . '.php');
    

  3. Gang og sykkelvei er ikke fortau.

     

    På fortau er forgjengerne konger og dronninger. De må passeres i gangfart, og hvis det er for mange til å passere dem sikkert må du gå av sykkelen.

     

    Men gang og sykkelvei er en vei forbeholdt gående og syklister, og da må fotgjengerene gå på venstreside av veien mens syklistene sykler på høyre. Det er ingen fartsgrense på gang og sykkelveier, selv når du passerer fotgjengere. Men man har ikke påkjørsrett heller, og skal vise hensyn til andre.

     

    Mange fotgjengere og syklister som ikke skjønner dette...

  4. Du må nesten bruke en blanding da mange av funksjonene som kommer med PHP ikke finnes som klassemetoder.

     

    Et objekt er bedre jo mer fokusert det er, og jo mer uvitende det er om alt annet en hovedoppgaven.

     

    Et objekt med brukerdata:

    • bør sende data med valideringsregler til et annet objekt.
    • sendes/peker til et annet objekt som henter og lagrer data.
    • bør ha en ekstern utility funksjon (gjerne som metode i en statisk klasse) som formatterer data til HTML, epost, tekst, etc.
    • bruker et annet objekt/funksjon for å autorisere bruker som logget inn.
    • bruker et annet objekt/funksjon for å se om denne brukeren har tilgang til noe.

    PS: sjekk linken til 7 gode PHP OO vaner i signaturen min.

  5. Det er kanskje enklere hvis du prøver å skille logikk og presentasjon litt.

    function wrapData($array, $before, $after)
    {
    return $before . implode($after . $before, $array) . $after;
    }
    
    $pictures = array();
    while($row = mysql_fetch_array($select)) { 
    $pictures[] = $row['bilder'];
    }
    
    $fields = 2;
    $pictureRows = array_chunk($pictures, $fields);
    
    $totalRows = count($pictureRows);
    
    $lastRow =& $pictureRows[$totalRows - 1];
    $lessRows = $fields - count($lastRow);
    if ($lessRows) {
    $lastRow = array_merge($lastRow, array_fill(0, $lessRows, ' '));
    }
    
    for ($i = 0; $i < $totalRows; $i++) {
    $dataRows[] = wrapData($pictureRows[$i], '<td>',  '</td>');
    }
    $data = wrapData($dataRows, '<tr>', '</tr>');
    
    echo '<table>', /*table header here*/ $data, '</table>';

  6. Vil forøvrig ikke anbefale å opprette variabler på denne måten, men kun bruke dette for å legge til ekstra innhold. Dette blant annet fordi du vil risikere å du lett vil miste oversikten over hvilke variabler som allerede dersom du gjør det slik. I enkelte tilfeller vil du også få feilmeldinger dersom du legger til (ekstra) innhold til en variabel som ikke eksisterer.

    Er du usikker på om en variabel allerede eksisterer eller er brukt, så er det på tide å splitte koden i flere funksjoner/klasser/metoder.

  7. Om jeg har forstått rett så er problemet at:

     

    Hosting leverandøren har antageligvis ikke slettet ditt domene fra sin vhost konfigurasjon i mail-oppsettet slik at mailen blir sendt til hostingleverandørens interne mailserver. Du må kontakte de og få de til å slette domenet som de ikke har kontroll på lenger. :)

    Jepp er nok dns feil på webserveren.

  8. Korfor har du header data i språk filen din? Her er det blanding av to forskjellige ting.

     

    Slik ville eg lagd språk filen din:

    <?php
    return array(
    		'lang-id' => "no",
    		//		
    		// Gjestebok
    		//
    		// Skriv nytt innlegg:
    		'gjestebok_navn' => 'Ditt navn:',
    		'gjestebok_email' => 'Din email:',
    		'gjestebok_kommentar' => 'Ditt innlegg:',			
    		// Gjestebok Innlegg
    		'gjestebok_tekst' => 'Gjesteboka!',
    		'gjestebok_add' => 'Legg igjen en kommentar!',
    		'gjestebok_navn2' => 'Skrevet av:',
    		'gjestebok_email2' => 'Email:',
    		'gjestebok_kommentar2' => 'Kommentar:',	
    		// Gjestebok Enkelt innlegg
    		'gjestebok_enkelt_innlegg' => 'Du viser nå innlegget med ID:',
    		'gjestebok_enkelt_innlegg2' => 'Klikk her for å se alle innleggene',
    		// Gjestebok admin
    		'gjestebok_delete' => 'Slett ',
    		'gjestebok_delete2' => 'Posten ble slettet ',
    		'gjestebok_delete3' => 'Klikk her for å gå tilbake',
    		'gjestebok_edit' => 'Endre',
    		//
    		// Menu
    		//
    		'menu' => 'Hjem<br />
    		Admin<br />
    		Gjestebok',
    		//		
    		// Footer
    		//
    		'footer_left'  => 'Velg språk:',
    		'footer_center'  => 'Copyright © 2009 - Mikael | Siste  oppdatering: 10 - Mai - 2009',
    	);

    Merk ingen ?> så vi ikke sender noe data og dermed ikke kan endre headere.

     

    Denne språkfilen inkluderes på følgende måte:

    $sprak = require('no_NB.php');

     

    Og hvis du vil kunne endre headere (som ved redirect) så må du ikke sende noe. En god regel er:

    hvis du har ?>i en fil vil den sende data (hvis du ikke bruker output buffering).

    (Dette er det samme som at et skytevåpen er alltid ladet).

  9. I den ser du blandt annet: no.php det vil si en språk fil. På linje 7 er det:

    <?php

    Alt før første <?php og alt mellom ?> og <?php blir sendt til klienten. Da sendes alle headere også og du kan ikke sende flere.

    Så, korfor har du en <?php på linje 7?

     

    En "fiks" er å bruke output buffering (ob_start). Det har mange fordeler, men det kan være greit å rydde kode allikevel.

  10. Til alle som får problemet:

    Sørg for at

    session_start();

    er i toppen av koden.

    Og pass på at INGEN ting er før den :wee:

    Nja. Pass på at ingenting blir sendt til klienten før du kaller session_start(). Den vil sette et header for å lage cookie til PHPSESSID eller hva du kaller den.

    Det samme gjelder for alle andre headere du vil sende (som location for redirect).

×
×
  • Opprett ny...