Topic: Dansk

🇩🇰 Danske artikler og tutorials.

  • Phpscaffold laver ikke “well formed” XML

    Phpscaffold producerer kun skitsen til en *ML. Koden er ikke “well formed”:

    <p><b>Id:</b><br /><input type='text' name='Id'/>

    Hvis koden skal validere bør dem se sådan ud:

    <p><b>Id:</b><br /><input type='text' name='Id'/> </p>

    W3Schools defineres “well formed” xml sådan:

    Well Formed XML Documents

    A “Well Formed” XML document has correct XML syntax.

    The syntax rules were described in the previous chapters:

    • XML documents must have a root element
    • XML elements must have a closing tag
    • XML tags are case sensitive
    • XML elements must be properly nested
    • XML attribute values must be quoted

    Output fra phpscaffold skal redigeres, hvis koden skal validere.

  • Dashboard widget

    Her er opskriften til en dashboard widget, inspireret af Olinik & Jackson “The WordPress Anthology” (2011):

    function kanbanAdmin() {
    	require('log-new.php');
    }
    
    // Register the new Dashboard widget
    function add_kanbanAdmin(){
    	wp_add_dashboard_widget('webkanban', 'Webkanban Create Log', 'kanbanAdmin' );
    }
    
    // add to the Dashboard 
    add_action('wp_dashboard_setup','add_kanbanAdmin');
  • Trin II

    • Nu virker mit udkast
    • Så skal alle CRUD-filer laves.
  • Phpscaffold og wpdb klassen

    <? 
    global $wpdb; // henter klassen
    
    if (isset($_POST['submitted'])) { 
    foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
    $sql = "INSERT INTO `KbnLog` ( `Id` ,  `Date` ,  `KbnProjects_Id` ,  `KbnNotes_Id` ,  `KbnStates_Id`  ) VALUES(  '{$_POST['Id']}' ,  '{$_POST['Date']}' ,  '{$_POST['KbnProjects_Id']}' ,  '{$_POST['KbnNotes_Id']}' ,  '{$_POST['KbnStates_Id']}'  ); "; 
    
    // mysql_query($sql) or die(mysql_error()); 
    $wpdb->query($wpdb->prepare($sql)); // Query
    
    echo "Added row.<br />"; 
    } 
    ?>
    
    <form action='' method='POST'> 
    <p><b>Id:</b><br /><input type='text' name='Id'/> 
    <p><b>Date:</b><br /><input type='text' name='Date'/> 
    <p><b>KbnProjects Id:</b><br /><input type='text' name='KbnProjects_Id'/> 
    <p><b>KbnNotes Id:</b><br /><input type='text' name='KbnNotes_Id'/> 
    <p><b>KbnStates Id:</b><br /><input type='text' name='KbnStates_Id'/> 
    <p><input type='submit' value='Add Row' /><input type='hidden' value='1' name='submitted' /> 
    </form>

    Phpscaffold genererer en kode, der næsten kan anvendes; men et par linjer skal rettes. For det føste skal wpdb gøres global. For det andet anvendes wpdb-klassen til at udføre en SQL query:

    <? global $wpdb; // henter klassen // include('config.php'); - denne linje slettes er ikke noedvendig if (isset($_POST['submitted'])) { foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } $sql = "INSERT INTO `KbnLog` ( `Id` , `Date` , `KbnProjects_Id` , `KbnNotes_Id` , `KbnStates_Id` ) VALUES( '{$_POST['Id']}' , '{$_POST['Date']}' , '{$_POST['KbnProjects_Id']}' , '{$_POST['KbnNotes_Id']}' , '{$_POST['KbnStates_Id']}' ); "; // linjen herunder skal aendres til en wpdb klasse // se denne vejledning http://codex.wordpress.org/Class_Reference/wpdb // mysql_query($sql) or die(mysql_error()); // sikkerhed: brug wp prepare // echo $sql; // rens evt. m. prepare $wpdb->query($sql); // query //echo "Added row.<br />"; //echo "<a href='log-list.php'>Back To Listing</a>"; } ?> <form action='' method='POST'> <p><b>Id:</b><br /><input type='text' name='Id'/> <p><b>Date:</b><br /><input type='text' name='Date'/> <p><b>KbnProjects Id:</b><br /><input type='text' name='KbnProjects_Id'/> <p><b>KbnNotes Id:</b><br /><input type='text' name='KbnNotes_Id'/> <p><b>KbnStates Id:</b><br /><input type='text' name='KbnStates_Id'/> <p><input type='submit' value='Add Row' /><input type='hidden' value='1' name='submitted' /> </form>

    Phpscaffolds kildekode burde relativt enkelt kunne redigeres til at “kompilere” en WordPress egnet kode; men det et andet projekt.

    Ovenstående kode beskytter ikke mod forsøg på SQL-indsprøjtninger. Ved hjælp af prepare opnås en bedre beskyttelse. Wpdblinjen skal se sådan ud:

    $wpdb->query($wpdb->prepare($sql));

    Den rensede kode ser herefter sådan ud:

    <? 
    global $wpdb; // henter klassen
    
    if (isset($_POST['submitted'])) { 
    foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
    $sql = "INSERT INTO `KbnLog` ( `Id` ,  `Date` ,  `KbnProjects_Id` ,  `KbnNotes_Id` ,  `KbnStates_Id`  ) VALUES(  '{$_POST['Id']}' ,  '{$_POST['Date']}' ,  '{$_POST['KbnProjects_Id']}' ,  '{$_POST['KbnNotes_Id']}' ,  '{$_POST['KbnStates_Id']}'  ); "; 
    
    $wpdb->query($wpdb->prepare($sql)); // Query
    
    echo "Added row.<br />"; 
    } 
    ?>
    
    <form action='' method='POST'> 
    <p><b>Id:</b><br /><input type='text' name='Id'/> 
    <p><b>Date:</b><br /><input type='text' name='Date'/> 
    <p><b>KbnProjects Id:</b><br /><input type='text' name='KbnProjects_Id'/> 
    <p><b>KbnNotes Id:</b><br /><input type='text' name='KbnNotes_Id'/> 
    <p><b>KbnStates Id:</b><br /><input type='text' name='KbnStates_Id'/> 
    <p><input type='submit' value='Add Row' /><input type='hidden' value='1' name='submitted' /> 
    </form>

    I stedet for at rette global-linjen i alle filerne kan man bevare include(‘config.php’); – og lave en phpfil med dette indhold:

    <?php global $wpdb; ?>
  • CRUD eksperimenter

    Dagens arbejde består i at få phpscaffold til at generere en kode, der kan bruges af WordPress. Jeg tager udgangspunkt i en relativt enkel tabel.

    1. Generere “stillads”.
    2. Omdanne “stilladset” til en WP plugin i Dashboard.
    ER-golden
    ER-diagram for webkanban.

    Phpscaffold skaber fire CRUD-filer og forudsætter import af en databasekonfigurationsfil.

    Phpscaffold eksempel
    Phpscaffold eksempel
  • Uge 8 – programmerer prototypen

    I den kommende uge vil jeg prøve at programmere en fungerende prototype til en webkanban ved hjælp af phpscaffold. Databasen er eksporteret til min server, så nu kan arbejdet begynde. Regner med at der skabes en simpel CRUD-funktionalitet.

    CRUD skal betjenes via et administrationspanel i WP. Det skal desuden være muligt at editere de enkelte “tegn” via en knap, der leder til et redigeringsfelt.

    Når “stilladset” er på plads skal en præsentationskanban programmeres. Der skal laves en shortcode, som looper gennem databasen. CSS formatterer alt efter skærmstørrelse.

    Mht. editor vil jeg arbejde med Pico og Emacs

  • Seminar 8.2. 2013

    Århus: På fredag afholdes seminar for masterstuderende, der skriver den sidste afhandling i forløbet. Man skal medbringe problemformulering mv.

  • Scrum board på arbejdet

    I begyndelsen af januar scorede teamet en opslagstavle og aftalte korte ugentlige scrummøder i en frokostpause. Scrumboardet er ikke kommet fra start, fordi vi mangler … af alle ting … knappenåle.

  • Stativ

    Bruger phpscaffold.com til at lave et stativ af filer til editering af kanban databasen. Resultatet er 16 filer, der igen skal tilrettes til et WordPress miljø. Hvis det virker, så har jeg sparet mange timers arbejde.

    Lige nu eksperimenterer jeg med sed i bash (og her er det jo herligt at Macs terminal er en unixklon!). Det må være muligt at fjerne og editere linjer en masse via en trunkering a la *.php. Det er dog ikke lykkedes at fjerne mønstre i mere end én fil endnu.

    De 16 filer skal have fjernet linje 1 – og tabellerne skal formatteres ordentligt (border = 1 er ikke kønt, og friseringen bør ligge i css – border = 1 bør ændres til en class).

    Lægger hovedet i blød for en smart sed – eller noget i den stil…

  • Virtualbox med linux for langsom

    Jeg havde sat en virtualbox linux server op; men den kører alt for langsomt på en Mac. Så nu er filerne exporteret til en anden lokal server.

  • Phpscaffold og WordPress

    Phpscaffold skaber en række filer, der kan inkluderes i et plugin. Men filerne skal editeres en anelse. Linjen include(‘config.php’);  skal fjernes, og resten burde teoretisk set fungere a la det her:

    $Id = (int) $_GET['Id']; 
    // mysql_query("DELETE FROM `kbnNotes` WHERE `Id` = '$Id' ") ; 
    $wpdb->query("DELETE FROM `kbnNotes` WHERE `Id` = '$Id' ");
    echo (mysql_affected_rows()) ? "Row deleted.<br /> " : "Nothing deleted.<br /> ";

    (NB: jeg har ikke afprøvet koden endnu, så det her er kun noter…)

  • Phpscaffold

    Efter lidt søgen på nettet med nøgleord som “CRUD” og “PHP” faldt jeg over http://www.phpscaffold.com/ – hvis det fungerer, så sparer man en masse tid. Scaffolding er et glansnummer som CakePHP, Symphony, Ruby on Rails – og andre MVC frameworks kan udføre. Mindre kan altså gøre det. Herligt site 🙂

    Phpscaffold

    Det skal da afprøves. Jeg vil se om dette stillads virker sammen med mit kanban plugin. Hvis det fungerer kan man spare mange timers arbejde i pico.

    Includefilen må kunne ændres til noget, som $wpdb forstår.

Enable Notifications OK No thanks

We use cookies - more information

Multimusen.dk will set a few cookies from Doubleclick, Google and the Social Media plugins they ay set some cookies. Some of my pages use APIs - such as YouTube, LinkedIn, Google Fonts, Google Maps, Mapbox, Spotify, Jetpack, Twitter, Facebook &c.. Such plugins may set the odd cookie.

Close