Search Results

Search found 60 results on 3 pages for 'bless yahu'.

Page 3/3 | < Previous Page | 1 2 3 

  • Moose::Error::Croak error reporting not from perspective of caller.

    - by crashpoint_zero
    I just recently started out on Moose and its a great OO framework not only to use but also to learn new OO concepts. One of the things I wanted to do was to do error reporting from perspective of caller during object creation. I saw that Moose has the module Moose::Error::Croak which tells Moose to override the default error reporting by croak call. I used it but it did not seem to help Moose code - Foo.pm package Foo; use metaclass ( metaclass => 'Moose::Meta::Class', error_class => 'Moose::Error::Croak', ); use Moose; has 'attr1' => ( is => 'rw', isa => 'Str', required => '1', ); no Moose; 1; Moose code - fooser.pl #!/usr/bin/perl use strict; use warnings; use Foo; my $foobj = Foo->new(); This fails with error: Attribute (attr1) is required at /usr/local/lib/perl/5.8.8/Class/MOP/Class.pm line 364 which is terse than the actual stack trace if Moose::Error::Croak is not used. But it does not report it from perspective of caller. If this were a Perl 5 OO code and I had Foo.pm as: package Foo; use strict; use warnings; use Carp; sub new { my ($class, %args) = @_; my $self = {}; if (! exists $args{'attr1'}) { croak "ERR: did not provide attr1"; } $self->{'attr1'} = $args{attr1}; bless $self, $class; return $self; } 1; And if fooser.pl was executed I would have got the error: "ERR: did not provide attr1 at fooser.pl line 6" which is from the perspective of the caller as it points to line no. 6 of fooser.pl rather than MOP.pm's line no. 364. How can I do this in Moose? Or am I misunderstanding something here?

    Read the article

  • Why is Perl's Math::Complex taking up so much time when I try acos(1)?

    - by synapz
    While trying to profile my Perl program, I find that Math::Complex is taking up a lot of time with what looks like some kind of warning. Also, my code shouldn't have any complex numbers being generated or used, so I am not sure what it is doing in Math::Complex, anyway. Here's the FastProf output for the most expensive lines: /usr/lib/perl5/5.8.8/Math/Complex.pm:182 1.55480 276232: _cannot_make("real part", $re) unless $re =~ /^$gre$/; /usr/lib/perl5/5.8.8/Math/Complex.pm:310 1.01132 453641: sub cartesian {$_[0]->{c_dirty} ? /usr/lib/perl5/5.8.8/Math/Complex.pm:315 0.97497 562188: sub set_cartesian { $_[0]->{p_dirty}++; $_[0]->{c_dirty} = 0; /usr/lib/perl5/5.8.8/Math/Complex.pm:189 0.86302 276232: return $self; /usr/lib/perl5/5.8.8/Math/Complex.pm:1332 0.85628 293660: $self->{display_format} = { %display_format }; /usr/lib/perl5/5.8.8/Math/Complex.pm:185 0.81529 276232: _cannot_make("imaginary part", $im) unless $im =~ /^$gre$/; /usr/lib/perl5/5.8.8/Math/Complex.pm:1316 0.78749 293660: my %display_format = %DISPLAY_FORMAT; /usr/lib/perl5/5.8.8/Math/Complex.pm:1335 0.69534 293660: %{$self->{display_format}} : /usr/lib/perl5/5.8.8/Math/Complex.pm:186 0.66697 276232: $self->set_cartesian([$re, $im ]); /usr/lib/perl5/5.8.8/Math/Complex.pm:170 0.62790 276232: my $self = bless {}, shift; /usr/lib/perl5/5.8.8/Math/Complex.pm:172 0.56733 276232: if (@_ == 0) { /usr/lib/perl5/5.8.8/Math/Complex.pm:316 0.53179 281094: $_[0]->{'cartesian'} = $_[1] } /usr/lib/perl5/5.8.8/Math/Complex.pm:1324 0.48768 293660: if (@_ == 1) { /usr/lib/perl5/5.8.8/Math/Complex.pm:1319 0.44835 293660: if (exists $self->{display_format}) { /usr/lib/perl5/5.8.8/Math/Complex.pm:1318 0.40355 293660: if (ref $self) { # Called as an object method /usr/lib/perl5/5.8.8/Math/Complex.pm:187 0.39950 276232: $self->display_format('cartesian'); /usr/lib/perl5/5.8.8/Math/Complex.pm:1315 0.39312 293660: my $self = shift; /usr/lib/perl5/5.8.8/Math/Complex.pm:1331 0.38087 293660: if (ref $self) { # Called as an object method /usr/lib/perl5/5.8.8/Math/Complex.pm:184 0.35171 276232: $im ||= 0; /usr/lib/perl5/5.8.8/Math/Complex.pm:181 0.34145 276232: if (defined $re) { /usr/lib/perl5/5.8.8/Math/Complex.pm:171 0.33492 276232: my ($re, $im); /usr/lib/perl5/5.8.8/Math/Complex.pm:390 0.20658 128280: my ($z1, $z2, $regular) = @_; /usr/lib/perl5/5.8.8/Math/Complex.pm:391 0.20631 128280: if ($z1->{p_dirty} == 0 and ref $z2 and $z2->{p_dirty} == 0) { Thanks for any help!

    Read the article

  • Need an end of lexical scope action which can die normally

    - by Schwern
    I need the ability to add actions to the end of a lexical block where the action might die. And I need the exception to be thrown normally and be able to be caught normally. Unfortunately, Perl special cases exceptions during DESTROY both by adding "(in cleanup)" to the message and making them untrappable. For example: { package Guard; use strict; use warnings; sub new { my $class = shift; my $code = shift; return bless $code, $class; } sub DESTROY { my $self = shift; $self->(); } } use Test::More tests => 2; my $guard_triggered = 0; ok !eval { my $guard = Guard->new( #line 24 sub { $guard_triggered++; die "En guarde!" } ); 1; }, "the guard died"; is $@, "En guarde! at $@ line 24\n", "with the right error message"; is $guard_triggered, 1, "the guard worked"; I want that to pass. Currently the exception is totally swallowed by the eval. This is for Test::Builder2, so I cannot use anything but pure Perl. The underlying issue is I have code like this: { $self->setup; $user_code->(); $self->cleanup; } That cleanup must happen even if the $user_code dies, else $self gets into a weird state. So I did this: { $self->setup; my $guard = Guard->new(sub { $self->cleanup }); $user_code->(); } The complexity comes because the cleanup runs arbitrary user code and it is a use case where that code will die. I expect that exception to be trappable and unaltered by the guard. I'm avoiding wrapping everything in eval blocks because of the way that alters the stack.

    Read the article

  • fetching rows from mysql table and displaying them as JGROWL notifications

    - by jeansymolanza
    hey guys, i am having problems implementing my php/mysql code into a jgrowl if you are familiar with jgrowl you will know it delivers notifications like Growl does for OS X i am trying to get it read all the records from my table but at the moment it is only displaying one record as a notification and it loops through it 4 times another problem is that if i have 5 rows in the table then jgrowl will only display 4 notifications are going to be viewed how do i get it to view all the records in the table as notifications and how do i display the total number of records (5) as notifications and account for the missing one at the moment thanking you guys in advance... God bless <script type="text/javascript"> // In case you don't have firebug... if (!window.console || !console.firebug) { var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; window.console = {}; for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {}; } (function($){ $(document).ready(function(){ // This specifies how many messages can be pooled out at any given time. // If there are more notifications raised then the pool, the others are // placed into queue and rendered after the other have disapeared. $.jGrowl.defaults.pool = 5; var i = 1; var y = 1; setInterval( function() { if ( i < <?php echo $totalRows_comment; ?> ) { <?php echo '$.jGrowl("'.$row_comment['comment'].'",'; ?> { sticky: true, log: function() { console.log("Creating message " + i + "..."); }, beforeOpen: function() { console.log("Rendering message " + y + "..."); y++; } }); } i++; } , 1000 ); }); })(jQuery); </script> <p> </span> <p>

    Read the article

  • MBR status confusion

    - by Ahmed Ghoneim
    EB 58 90 6D 6B 64 6F 73 66 73 00 00 02 08 20 00 02 00 00 00 00 F8 00 00 3E 00 83 00 00 00 00 00 94 88 7E 00 98 1F 00 00 00 00 00 00 02 00 00 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 29 A9 38 B1 34 57 61 76 65 20 20 20 20 20 20 20 46 41 54 33 32 20 20 20 0E 1F BE 77 7C AC 22 C0 74 0B 56 B4 0E BB 07 00 CD 10 5E EB F0 32 E4 CD 16 CD 19 EB FE 54 68 69 73 20 69 73 20 6E 6F 74 20 61 20 62 6F 6F 74 61 62 6C 65 20 64 69 73 6B 2E 20 20 50 6C 65 61 73 65 20 69 6E 73 65 72 74 20 61 20 62 6F 6F 74 61 62 6C 65 20 66 6C 6F 70 70 79 20 61 6E 64 0D 0A 70 72 65 73 73 20 61 6E 79 20 6B 65 79 20 74 6F 20 74 72 79 20 61 67 61 69 6E 20 2E 2E 2E 20 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA Learning disk records, this is my USB MBR record viewed by bless on ubuntu formatted with disk utility as MBR table and FAT partition, referring to this Wiki of first record status (0x80 = bootable (active), 0x00 = non-bootable, other = invalid ) but my MBR shows first offset as EB. What's this record stands for ? also, can you provide me with good tables/images tutorials for MBR and other disks' records :)

    Read the article

  • Trying to use json to populate areas of my website using mysql, php, and jquery.

    - by RyanPitts
    Ok, so this is my first attempt at doing anything with JSON. I have done a lot with PHP and MySql as well as jQuery and JavaScript...but nothing with JSON. I have some data in a MySql database. In the codes below i am using a PHP file to retrieve the data from the MySql database and using json_encode to format it to JSON. This file is being called by the JavaScript that runs when the page loads (well, it runs on document.ready actually). I then use jQuery to access the JSON keys and values to fill in areas of the page "dynamically". Here is the code snippets i am using (excuse my "noobness" on writing these snippets, still learning all this). This is my script that is on my HTML page test.php: <script type="text/javascript"> $(document).ready(function(){ $.getJSON("json_events.php",function(data){ $.each(data.events, function(i,events){ var tblRow = "<tr>" +"<td>" + events.id + "</td>" +"<td>" + events.customerId + "</td>" +"<td>" + events.filingName + "</td>" +"<td>" + events.title + "</td>" +"<td>" + events.details + "</td>" +"<td>" + events.dateEvent + "</td>" +"<td><a href='assets/customers/testchurch/events/" + events.image + "'>" + events.image + "</a></td>" +"<td>" + events.dateStart + "</td>" +"<td>" + events.dateEnd + "</td>" +"</tr>" $(tblRow).appendTo("#eventsdata tbody"); }); }); $.getJSON("json_events.php",function(data){ $.each(data.events, function(i,events){ $("#title").html("First event title: " + events.title + " ..."); }); }); }); </script> This is the code for the php file being called by the above JS: json_events.php <?php require_once('includes/configread.php'); $arrayEvents = array(); $resultsEvents = mysql_query("SELECT * FROM events"); while($objectEvents = mysql_fetch_object($resultsEvents)) { $arrayEvents[] = $objectEvents; } $json_object_events = json_encode($arrayEvents); $json_events = "{\"events\": " . $json_object_events . " }"; echo $json_events; require_once('includes/closeconnread.php'); ?> This is my JSON that is held in the variable $json_events from my php file json_events.php: { "events": [ { "id": "2", "customerId": "1004", "filingName": "testchurch", "title": "Kenya 2011 Training Meeting", "details": "This meeting will be taking place on Sunday, February 10th @ 6pm. Get ready for our annual Kenya trip in 2011. We have been blessed to be able to take this trip for the past 3 years. Now, it's your turn to bless others! Come to this training meeting to learn how to minister to the people in Kenya and also learn what we'll be doing there.", "dateEvent": "2011-02-10", "image": "kenya2011.jpg", "dateStart": "2010-09-04", "dateEnd": "2011-02-10" }, { "id": "6", "customerId": "1004", "filingName": "testchurch", "title": "New Series: The Journey", "details": "We will be starting our new series titled "The Journey". Come worship with us as we walk with Paul on his 2nd missionary journey.", "dateEvent": "2011-01-02", "image": "", "dateStart": "2010-09-06", "dateEnd": "2011-01-02" } ] } This is my HTML on test.php: <table id="eventsdata" border="1"> <thead> <tr> <th>id</th> <th>customerId</th> <th>filingName</th> <th>title</th> <th>details</th> <th>dateEvent</th> <th>image</th> <th>dateStart</th> <th>dateEnd</th> </tr> </thead> <tbody></tbody> </table> <div id="title"></div> I have two questions really... Question 1: Does this code look like it is written correctly at first glance? Question 2: I want to be able to select only the title from the first event in the JSON array. The code i am using now is selecting the second events' title by default it seems. How can i accomplish this?

    Read the article

  • selectOneMenu - java.lang.NullPointerException when adding record to the database (JSF2 and JPA2-OpenJPA)

    - by rogie
    Good day to all; I'm developing a program using JSF2 and JPA2 (OpenJPA). Im also using IBM Rapid App Dev't v8 with WebSphere App Server v8 test server. I have two simple entities, Employee and Department. Each Department has many Employees and each Employee belongs to a Department (using deptno and workdept). My problem occurs when i tried to add a new employee and selecting a department from a combo box (using selectOneMenu - populated from Department table): when i run the program, the following error messages appeared: An Error Occurred: java.lang.NullPointerException Caused by: java.lang.NullPointerException - java.lang.NullPointerException I also tried to make another program using Deptno and Workdept as String instead of integer, still doesn't work. Pls help. Im also a newbie. Tnx and God bless. Below are my codes, configurations and setup. Just tell me if there are some codes that I forgot to include. Im also using Derby v10.5 as my database: CREATE SCHEMA RTS; CREATE TABLE RTS.DEPARTMENT (DEPTNO INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), DEPTNAME VARCHAR(30)); ALTER TABLE RTS.DEPARTMENT ADD CONSTRAINT PK_DEPARTMNET PRIMARY KEY (DEPTNO); CREATE TABLE RTS.EMPLOYEE (EMPNO INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), NAME VARCHAR(50), WORKDEPT INTEGER); ALTER TABLE RTS.EMPLOYEE ADD CONSTRAINT PK_EMPLOYEE PRIMARY KEY (EMPNO); Employee and Department Entities package rts.entities; import java.io.Serializable; import javax.persistence.*; @Entity public class Employee implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int empno; private String name; //bi-directional many-to-one association to Department @ManyToOne @JoinColumn(name="WORKDEPT") private Department department; ....... getter and setter methods package rts.entities; import java.io.Serializable; import javax.persistence.*; import java.util.List; @Entity public class Department implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int deptno; private String deptname; //bi-directional many-to-one association to Employee @OneToMany(mappedBy="department") private List<Employee> employees; ....... getter and setter methods JSF 2 snipet using combo box (populated from Department table) <tr> <td align="left">Department</td> <td style="width: 5px">&#160;</td> <td><h:selectOneMenu styleClass="selectOneMenu" id="department1" value="#{pc_EmployeeAdd.employee.department}"> <f:selectItems value="#{DepartmentManager.departmentSelectList}" id="selectItems1"></f:selectItems> </h:selectOneMenu></td> </tr> package rts.entities.controller; import com.ibm.jpa.web.JPAManager; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import com.ibm.jpa.web.NamedQueryTarget; import com.ibm.jpa.web.Action; import javax.persistence.PersistenceUnit; import javax.annotation.Resource; import javax.transaction.UserTransaction; import rts.entities.Department; import java.util.List; import javax.persistence.Query; import java.util.ArrayList; import java.text.MessageFormat; import javax.faces.model.SelectItem; @SuppressWarnings("unchecked") @JPAManager(targetEntity = rts.entities.Department.class) public class DepartmentManager { ....... public List<SelectItem> getDepartmentSelectList() { List<Department> departmentList = getDepartment(); List<SelectItem> selectList = new ArrayList<SelectItem>(); MessageFormat mf = new MessageFormat("{0}"); for (Department department : departmentList) { selectList.add(new SelectItem(department, mf.format( new Object[] { department.getDeptname() }, new StringBuffer(), null).toString())); } return selectList; } Converter: package rts.entities.converter; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import rts.entities.Department; import rts.entities.controller.DepartmentManager; import com.ibm.jpa.web.TypeCoercionUtility; public class DepartmentConverter implements Converter { public Object getAsObject(FacesContext facesContext, UIComponent arg1, String entityId) { DepartmentManager departmentManager = (DepartmentManager) facesContext .getApplication().createValueBinding("#{DepartmentManager}") .getValue(facesContext); int deptno = (Integer) TypeCoercionUtility.coerceType("int", entityId); Department result = departmentManager.findDepartmentByDeptno(deptno); return result; } public String getAsString(FacesContext arg0, UIComponent arg1, Object object) { if (object instanceof Department) { return "" + ((Department) object).getDeptno(); } else { throw new IllegalArgumentException("Invalid object type:" + object.getClass().getName()); } } } Method for Add button: public String createEmployeeAction() { EmployeeManager employeeManager = (EmployeeManager) getManagedBean("EmployeeManager"); try { employeeManager.createEmployee(employee); } catch (Exception e) { logException(e); } return ""; } faces-conf.xml <converter> <converter-for-class>rts.entities.Department</converter-for-class> <converter-class>rts.entities.converter.DepartmentConverter</converter-class> </converter> Stack trace javax.faces.FacesException: java.lang.NullPointerException at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241) at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:156) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1147) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:722) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:449) at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1020) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:886) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1655) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1650) Caused by: java.lang.NullPointerException at rts.entities.converter.DepartmentConverter.getAsString(DepartmentConverter.java:29) at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:656) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.getSubmittedOrSelectedValuesAsSet(HtmlRendererUtils.java:444) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.internalRenderSelect(HtmlRendererUtils.java:421) at org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils.renderMenu(HtmlRendererUtils.java:359) at org.apache.myfaces.shared_impl.renderkit.html.HtmlMenuRendererBase.encodeEnd(HtmlMenuRendererBase.java:76) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:626) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1320) at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) ... 24 more

    Read the article

  • posting multiple radio button values to mysql using "foreach"

    - by jeansymolanza
    i have adjusted my code slightly but i am still having difficulty posting it to the table. could someone please provide me with an example of the foreach array? form page <div style="padding: 15px;"> <span class="loginfail" style="font-size:24px; font-weight: bold">Notifications</span><p> <?php include("progress_insertcomment.php"); ?> <?php // Make a MySQL Connection mysql_select_db("speedycm_data") or die(mysql_error()); $query_comment = "select * from tbl_alert order by id desc limit 1"; $comment = mysql_query($query_comment, $speedycms) or die(mysql_error()); $row_comment = mysql_fetch_assoc($comment); $totalRows_comment = mysql_num_rows($comment); ?> <!--- add notification ---> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <span id="sprytextarea1"> <textarea id='comment' name="comment" style="height: 75px; width:330px;"><?php echo $row_comment['comment']; ?></textarea> </span> <p> <button type="submit">Add</button> <input type="hidden" name="notc" value="1"/> </form> <!--- notification history ---> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <table border="0" cellspacing="2" cellpadding="2"> <?php if ( $row_comment == 0 ) { echo "<span style='font-size: 11px;'>No current alerts.</span>"; } else { // Get all the data from the "example" table $result = mysql_query("SELECT * FROM tbl_alert ORDER BY id DESC") or die(mysql_error()); while($rows=mysql_fetch_array($result)){ ?> <tr> <td> <?php echo "<div class='bubble'><div class='pimped'> <blockquote>" . $rows['comment'] . " </blockquote></div> <cite><strong>" . $rows['user'] . "</strong> @ " . $rows['date'] . "</cite> <span style='font-size: 10px;'> <p> <a href='editalert.php?id=". $rows['id'] ."' class='form' >Edit</a>&nbsp;&#8226;&nbsp;<a href='deletealert.php?id=". $rows['id'] ."' class='form'>Delete</a> </span> </div> "; ?> </td> <td valign="top" align="center"><div style="padding-left: 30px;"><span style="font-size: 10px;">Completed?</span> <p class="field switch"> <!--- determine status of notification ---> <?php $status = $rows['status']; ?> <input type="radio" name="selstatus" value="no" <?php if($status == 'yes') {echo 'checked';} else {echo '';} ?>/> <input type="radio" name="selstatus" value="yes" <?php if($status == 'yes') {echo 'checked';} else {echo '';} ?>/> <input type="hidden" name="statusid" value="<?php echo $rows['id']; ?>"/> <label for="radio1" class="cb-enable <?php if($status == 'yes') {echo 'selected';} else {echo '';} ?>"><span>Yes</span></label> <label for="radio2" class="cb-disable <?php if($status == 'no') {echo 'selected';} else {echo '';} ?>"><span>No</span></label> </p> </div></td> </tr> <tr> <td></td> <?php } } ?> <td align="center"><div style="padding-left: 30px;"> <button type="submit">Update</button> <input type="hidden" name="notc2" value="1"/> </div></td> </tr> </table> </form> </div> </body> processing <?php // 6) update notifications if (array_key_exists('notc2',$_POST)) { echo "<p style='font-size: 12px;'>Thank you. The notifications have been updated successfully.<p>"; echo "<p><span style='font-size: 12px;'> <a onClick=\"history.go(-1)\" class='form'>Return</a></p> <p></span> "; exit; }; ?> after doing some research i learnt that the only way to insert multiple radio values into the MYSQL table is to use arrays. there was a similar question raised somewhere on this site: http://stackoverflow.com/questions/1656260/php-multiple-radio-buttons that recommended using a foreach loop. use a foreach loop <?php foreach ( $_POST as $key => $val ) echo "$key -> $val\n"; ?> $key will be the name of the selected option and $val, well, the value. how would this apply to my situation as i am struggling to find any help on the internet. i understand that i would use this on the processing page to pull out any radio values from the previous page and then loop the INSERT MYSQL code within the process until it was all done. any advice would be appreciated! GOD BLESS.

    Read the article

  • more radio problems * sighs * been at this for one week now

    - by jeansymolanza
    hi guys really i don't know what im doing wrong... i am trying to process multiple radios with mysql. the first step has involved me echoing the results on the process page. each time i select any radio option it simply displays the first row result. this is that i see after trying to submit the form: Notifications Thank you. The notifications have been updated successfully. statusid: 14 notc2: 1 Return this is the code for the form: <div style="padding: 15px;"> <span class="loginfail" style="font-size:24px; font-weight: bold">Notifications</span><p> <?php include("progress_insertcomment.php"); ?> <?php // Make a MySQL Connection mysql_select_db("speedycm_data") or die(mysql_error()); $query_comment = "select * from tbl_alert order by id desc limit 1"; $comment = mysql_query($query_comment, $speedycms) or die(mysql_error()); $row_comment = mysql_fetch_assoc($comment); $totalRows_comment = mysql_num_rows($comment); ?> <!--- add notification ---> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <span id="sprytextarea1"> <textarea id='comment' name="comment" style="height: 75px; width:330px;"><?php echo $row_comment['comment']; ?></textarea> </span> <p> <button type="submit">Add</button> <input type="hidden" name="notc" value="1"/> </form> <!--- notification history ---> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <table border="0" cellspacing="2" cellpadding="2"> <?php if ( $row_comment == 0 ) { echo "<span style='font-size: 11px;'>No current alerts.</span>"; } else { // Get all the data from the "example" table $result = mysql_query("SELECT * FROM tbl_alert ORDER BY id DESC") or die(mysql_error()); while($rows=mysql_fetch_array($result)){ ?> <tr> <td> <?php echo "<div class='bubble'><div class='pimped'> <blockquote>" . $rows['comment'] . " </blockquote></div> <cite><strong>" . $rows['user'] . "</strong> @ " . $rows['date'] . "</cite> <span style='font-size: 10px;'> <p> <a href='editalert.php?id=". $rows['id'] ."' class='form' >Edit</a>&nbsp;&#8226;&nbsp;<a href='deletealert.php?id=". $rows['id'] ."' class='form'>Delete</a> </span> </div> "; ?> </td> <td valign="top" align="center"><div style="padding-left: 30px;"><span style="font-size: 10px;">Completed?</span> <p class="field switch"> <!--- determine status of notification ---> <?php $status = $rows['status']; $id = $rows['id']; ?> <input type="radio" name="selstatus[<?php echo $id; ?>]" value="no" <?php if($status == 'yes') {echo 'checked';} else {echo '';} ?>/> <input type="radio" name="selstatus[<?php echo $id; ?>]" value="yes" <?php if($status == 'yes') {echo 'checked';} else {echo '';} ?>/> <input type="hidden" name="statusid" value="<?php echo $id; ?>"/> <label for="radio1" class="cb-enable <?php if($status == 'yes') {echo 'selected';} else {echo '';} ?>"><span>Yes</span></label> <label for="radio2" class="cb-disable <?php if($status == 'no') {echo 'selected';} else {echo '';} ?>"><span>No</span></label> </p> </div></td> </tr> <tr> <td></td> <?php } } ?> <td align="center"><div style="padding-left: 30px;"> <button type="submit">Update</button> <input type="hidden" name="notc2" value="1"/> </div></td> </tr> </table> </form> </div> this is the code for the processing page: <?php // 6) update notifications if (array_key_exists('notc2',$_POST)) { $update = $_POST['selstatus']; echo "<p style='font-size: 12px;'>Thank you. The notifications have been updated successfully.<p>"; foreach($_POST as $key => $value){ echo $key . ': ' . $value . '<br>'; } echo "<p><span style='font-size: 12px;'> <a onClick=\"history.go(-1)\" class='form'>Return</a></p> <p></span> "; exit; }; ?> how do i resolve this problem? please any help would be appreciated. i would like to display the id and value of the selected checkbox on the processing page before inserting it into the table. thanking you in advance. GOD BLESS

    Read the article

  • internet explorer and google chrome rendering issues

    - by jeansymolanza
    hi guys, i'm trying to build a login and main page on dreamweaver for a client and testing them in google chrome and internet explorer but i am running into a lot of unexpected difficulties. the main thing has to be the way the tables are being rendered on the different pages. it seems to appear well on google chrome but when i test the page under internet explorer there have been issues with the way the footer is being rendered. i've included several images showing the problem: login page on IE8 http://i39.tinypic.com/iz9lw3.jpg login page on google chrome http://i44.tinypic.com/1zn0qd2.jpg main page on IE8 http://i41.tinypic.com/2d0gyhf.jpg main page on google chrome http://i42.tinypic.com/2ry58aw.jpg login fail on IE8 http://i40.tinypic.com/2jea9ac.jpg login fail on google chrome http://i43.tinypic.com/sl35h2.jpg please help! i have included the source code below. i spent an entire night trying to figure out what was wrong but to little success. login page: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="resources/css_01.css"> <link rel="shortcut icon" href="resources/favicon.ico"> <title>Speedy CMS</title> <script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script> <script src="SpryAssets/SpryValidationPassword.js" type="text/javascript"></script> <link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" /> <link href="SpryAssets/SpryValidationPassword.css" rel="stylesheet" type="text/css" /> </head> <body class="oneColElsCtr" background="resources/bg_01.jpg"> <div id="container"> <div id="mainContent"> <!-- start #mainContent --> <table id="Table_01" width="1024" height="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td valign="top" rowspan="3"> <img src="resources/login_01.png" width="93" height="440" alt=""></td> <td valign="top" rowspan="3"> <img src="resources/login_02.png" width="457" height="440" alt=""></td> <td valign="top"> <img src="resources/login_03.png" width="474" height="86" alt=""></td> </tr> <tr> <td valign="top"><img src="resources/login_04.png" width="474" height="89" /></td> </tr> <tr> <td valign="top" width="100%" height="100%" align="left"> <form ACTION="<?php echo $loginFormAction; ?>" METHOD="POST" name="login" > <h3 class="login">Username</h3> <span id="sprytextfield1"> <input name="username" type="text" class="input" /> </span> <h3 class="login">Password</h3> <span id="sprypassword1"> <input name="password" type="password" class="input" /> </span> <p></p> <div align="left" style="width:474px; padding-top: 10px; padding-left: 100px;"> <input name="login" type="submit" id="Log in" value="Log in" class="btn"/> </div> </p> </form> </td> </tr> </table> </div> </div> <!-- end #mainContent --> <!-- start #footer --> <?php include("resources/footer.php"); ?> <!-- end #footer --> <script type="text/javascript"> <!-- var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1"); var sprypassword1 = new Spry.Widget.ValidationPassword("sprypassword1"); //--> </script> </body> </html> main page: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="resources/css_01.css"> <link rel="shortcut icon" href="resources/favicon.ico"> <title>Speedy CMS</title> <body class="oneColElsCtr" background="resources/bg_01.jpg"> <div id="container"> <div id="mainContent"> <!-- start #mainContent --> <table id="Table_01" width="1024" border="0" cellpadding="0" cellspacing="0"> <tr> <td rowspan="7"> <img src="resources/main_01.png" width="93" height="440" alt=""></td> <td colspan="2"> <img src="resources/main_02.png" width="457" height="95" alt=""></td> <td colspan="3" valign="bottom"> <!-- start #navbar --> <?php include("resources/navbar.php"); ?> <!-- end #navbar --> </td> </tr> <tr> <td colspan="2"> <img src="resources/main_04.png" width="457" height="1" alt=""></td> <td colspan="3" rowspan="2" valign="top"><a class="bottom2" href="<?php echo $logoutAction ?>">Log off</a></td> </tr> <tr> <td colspan="2"> <img src="resources/main_06.png" width="457" height="29" alt=""></td> </tr> <tr> <td rowspan="4"> <img src="resources/main_07.png" width="456" height="315" alt=""></td> <td colspan="2"> <img src="resources/main_08.png" width="75" height="94" alt=""></td> <td rowspan="3"> <img src="resources/main_09.png" width="6" height="281" alt=""></td> <td align="left" valign="middle" style="padding-left:20px;"><h2 class="home">Hello, <?php echo $_SESSION['MM_Username']; ?></h2></td> </tr> <tr> <td rowspan="3"> <img src="resources/main_11.png" width="1" height="221" alt="" /></td> <td> <img src="resources/main_12.png" width="74" height="90" alt=""></td> <td align="left" valign="middle" style="padding-left:20px;"><h3 class="home"><?php echo date("l F d, Y, h:i A"); ?></h3></td> </tr> <tr> <td> <img src="resources/main_14.png" width="74" height="97" alt="" /></td> <td align="left" valign="middle" style="padding-left:20px;"><h3 class="home">You currently have <a href="progress.php" class="main"><?php echo $totalCases; ?> claims</a> running</h3></td> </tr> <tr> <td colspan="3"> <img src="resources/main_16.png" width="474" height="34" alt=""></td> </tr> </table> </div> </div> <!-- end #mainContent --> <!-- start #footer --> <?php include("resources/footer.php"); ?> <!-- end #footer --> </body> </html> <?php mysql_free_result($tbl_accident); ?> login fail page <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="resources/css_01.css"> <link rel="shortcut icon" href="resources/favicon.ico"> <title>Speedy CMS</title> <script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script> <script src="SpryAssets/SpryValidationPassword.js" type="text/javascript"></script> <link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" /> <link href="SpryAssets/SpryValidationPassword.css" rel="stylesheet" type="text/css" /> </head> <body class="oneColElsCtr" background="resources/bg_02.jpg"> <div id="container"> <div id="mainContent"> <table id="Table_01" width="1024" height="" border="0" cellpadding="0" cellspacing="0"> <tr> <td rowspan="4"> <img src="resources/default2_01.png" width="93" height="440" alt=""></td> <td colspan="2"><img src="resources/default_02.png" width="457" height="95" /></td> <td valign="bottom"></td> </tr> <tr> <td colspan="2"> <img src="resources/default2_03.png" width="457" height="1" alt=""></td> <td> <img src="resources/default2_04.png" width="474" height="1" alt=""></td> </tr> <tr> <td colspan="3"> <div align="left" style="padding-left: 18px;"> <h3 class="loginfail">Sorry, but your username and password is incorrect.</h3> <h4 class="loginfail">Please try again!</h4> <form ACTION="<?php echo $loginFormAction; ?>" METHOD="POST" name="login" > <h5 class="loginfail">Username</h5> <span id="sprytextfield1"> <input name="username" type="text" class="input2" /> </span> <h5 class="loginfail">Password</h5> <span id="sprypassword1"> <input name="password" type="password" class="input2" /> </span> <img src="resources/spacer.gif" width="1" height="5" alt="" /> <p></p> <div align="left" style="width:474px; padding-top: 10px;"> <input name="login" type="submit" id="Log in" value="Log in" class="btn"/> </div> </p> </form> </td> </tr> <tr> <td colspan="3" height="100%"> </td> </tr> <tr> <td> <img src="resources/spacer.gif" width="93" height="1" alt=""></td> <td> <img src="resources/spacer.gif" width="337" height="1" alt=""></td> <td> <img src="resources/spacer.gif" width="120" height="1" alt=""></td> <td> <img src="resources/spacer.gif" width="474" height="1" alt=""></td> </tr> </table> </div> </div> <!-- start #footer --> <?php include("resources/footer2.php"); ?> <!-- end #footer --> <script type="text/javascript"> <!-- var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1"); var sprypassword1 = new Spry.Widget.ValidationPassword("sprypassword1"); //--> </script> </body> </html> footer.php <table width="1024px" border="0" cellspacing="0" cellpadding="0" style="padding-left: 200px; padding-top: 10px; padding-bottom: 36px; text-align: left;"> <!-- speedy claim links --> <td width="33%" valign="top"> <div class="bottom" style="padding-left: 40px; text-align: left;">Learn About Us</div> <div class="hr" style="margin-left: 40px; width: 200px;"><hr /></div> <div style="padding-left: 40px; text-align: left;"> <a href="http://www.speedyclaim.co.uk/php/gifts.php" class="bottom2" target="_blank">Free Gifts</a><BR /> <a href="http://www.speedyclaim.co.uk/php/calculator.php" class="bottom2" target="_blank">Injury Calculator</a><BR /> <a href="http://www.speedyclaim.co.uk/php/aboutus.php" class="bottom2" target="_blank">About Us</a><BR /> <a href="http://www.speedyclaim.co.uk/php/claimonline.php" class="bottom2" target="_blank">Claim Online</a><BR /> <a href="http://www.speedyclaim.co.uk/php/contactus.php" class="bottom2" target="_blank">Contact Us</a><BR /> </div> </td> <!-- speedy claim links --> <td width="33%" valign="top"> <div class="bottom" style="padding-left: 40px; text-align: left;">Get Help</div> <div class="hr" style="margin-left: 40px; width: 200px;"><hr /></div> <div style="padding-left: 40px;"> <a href="http://www.speedyclaim.co.uk/php/services.php#roadaccident" class="bottom2" target="_blank">Road Traffic Accident</a><BR /> <a href="http://www.speedyclaim.co.uk/php/services.php#workaccident" class="bottom2" target="_blank">Work Accident</a><BR /> <a href="http://www.speedyclaim.co.uk/php/services.php#criminalinjury" class="bottom2" target="_blank">Criminal Injury</a><BR /> <a href="http://www.speedyclaim.co.uk/php/services.php#medicalnegligence" class="bottom2" target="_blank">Medical Neglicence</a><BR /> <a href="http://www.speedyclaim.co.uk/php/services.php#publicl" class="bottom2" target="_blank">Public Liability</a><BR /> <a href="http://www.speedyclaim.co.uk/php/services.php#taxiaccident" class="bottom2" target="_blank">Taxi Related Accident</a><BR /> </div> <!-- speedline --> <td width="33%" valign="top"> <div class="bottom" style="padding-left: 40px; text-align: left;">Taxi Service</div> <div class="hr" style="margin-left: 40px; width: 200px;"><hr /></div> <div style="padding-left: 40px;"> <a href="http://www.speedlinetaxi.com/airport.asp" class="bottom2" target="_blank">Airport Meet & Greet</a><BR /> <a href="http://www.speedlinetaxi.com/register.asp" class="bottom2" target="_blank">Automated Booking</a><BR /> <a href="http://www.speedlinetaxi.com/business.asp" class="bottom2" target="_blank">Business Accounts</a><BR /> <a href="http://www.speedlinetaxi.com/technology.asp" class="bottom2" target="_blank">Technology</a><BR /> <a href="https://ebook.autocab.net/3037" class="bottom2" target="_blank">E-Booking</a><BR /> <a href="http://www.speedlinetaxi.com/recruitment.asp" class="bottom2" target="_blank">Recruitment</a><BR /> <a href="http://www.speedlinetaxi.com/feedback.asp" class="bottom2" target="_blank">Feedback</a><BR /> <BR /> </div> </td> <tr> <td colspan="3" valign="top" style="padding-top:5px; padding-left:40px;"> <span class="bottom"> &copy; <?php echo date("Y")?> Speedline </span> </td> </tr> </table> footer2.php <table width="100%" border="0" cellspacing="0" cellpadding="0" style="padding-left: 188px; padding-top: 10px; text-align: left;" align="center"> <!-- speedy claim links --> <tr> <td width="99%" valign="top" style="padding-top:5px; padding-left:40px; padding-bottom: 10px;"> <span class="bottom"> &copy; <?php echo date("Y")?> Speedline </span> </td> </tr> </table> css_01.css html, body { height: 100%; margin: 0 0 1px; padding: 0; } body { font: 100% Arial, Helvetica, sans-serif; background-repeat: repeat-x; margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ padding: 0; text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */ color: #000000; } .oneColElsCtr #container { width: 1024px; margin: 0 auto; /* the auto margins (in conjunction with a width) center the page */ text-align: left; /* this overrides the text-align: center on the body element. */ } .oneColElsCtr #mainContent { padding: 0 0px; /* remember that padding is the space inside the div box and margin is the space outside the div box */ text-align: right; } .loginfail { font-family: Arial, Helvetica, sans-serif; text-decoration:none; color: #3399cc; } .login { font-family: Arial, Helvetica, sans-serif; text-decoration:none; color: #3399cc; padding-left: 100px; } .navbar { font-family: Arial, Helvetica, sans-serif; text-decoration:none; color: #FFF; font-size: 16px; } .navbar:hover { font-family: Arial, Helvetica, sans-serif; text-decoration:underline; color: #FFF; font-size: 16px; } .login2 { font-family: Arial, Helvetica, sans-serif; font-size: 10px; text-decoration:none; color: #3399cc; } .window { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration:none; } .login2:hover { font-family: Arial, Helvetica, sans-serif; font-size: 10px; text-decoration:underline; color: #3399cc; } .main { font-family: Arial, Helvetica, sans-serif; text-decoration:none; color: #3399cc; } .main:hover { font-family: Arial, Helvetica, sans-serif; text-decoration:underline; color: #3399cc; } .form { font-family: Arial, Helvetica, sans-serif; text-decoration:none; color: #3399cc; } .form:hover { font-family: Arial, Helvetica, sans-serif; text-decoration:underline; color: #3399cc; } .input { margin-left: 100px; background-color:#FFF; border: none; width: 14em; height: 1.2em; font-family: Arial, Helvetica, sans-serif; font-size: 22px; } .input2 { background-color: #F2F2F2; border: none; width: 14em; height: 1.2em; font-family: Arial, Helvetica, sans-serif; font-size: 22px; } .btn { height: 2em; width: 8em; color: #FFF; background: #3399cc; font-weight: bold; font-size: 18px; border: none; } .btn:hover { color: #FFF; background: #333; cursor: pointer; /* cursor: hand; for IE5 */ } .bottom { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; color: #7e8081; } .bottom2 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration: none; color: #7e8081; } .bottom2:hover { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration: underline; color: #7e8081; } .bottom3 { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration: none; color: #333; } .bottom3:hover { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration: underline; color: #333; } div.hr { height: 1px; background: #CCC url(hr1.gif) no-repeat scroll center; } div.hr hr { display: none; } .home { font-family: Arial, Helvetica, sans-serif; text-decoration:none; color: #3399cc; } .form2 { font-family: Arial, Helvetica, sans-serif; text-decoration:none; font-size: 12px; } .rta {border-width: 1px; border-style: solid; border-color: #CCC; } .box { width: 100%; padding-right: 3px; color: #000; text-decoration:none; } .box:hover { width: 100%; padding-right: 3px; color: #000; text-decoration:underline;} .box2 { width: 100%; color: #C00; text-decoration:none; } .box2:hover { width: 100%; padding-right: 3px; color: #C00; text-decoration:underline;} thanking in you advance. God bless.

    Read the article

< Previous Page | 1 2 3