Formulier (bestellijst-achtig) werkt niet meer

Status
Niet open voor verdere reacties.

steef27

Gebruiker
Lid geworden
16 sep 2007
Berichten
51
Goedemorgen,

2 jaar geleden heb ik een formulier (bestellijst-achtig) gemaakt in PHP waarmee ik data kan opslaan en opvragen uit een database. Het formulier gebruikte ik als boodschappenlijst, waarbij ik gebruik maak van vastgelegde "artikelen" waarvoor ik een aantal moet invullen. Het heeft altijd prima gewerkt.

Nu wil ik de lijst weer gaan gebruiken maar ik zie dat deze niet meer werkt. Waarschijnlijk heeft het met de nieuwe PHP7.0 versie te maken.

Het probleem is dat er wel connectie gemaakt wordt, maar het scherm blijft blanco. Zou iemand mij kunnen helpen?

PHP:
<?php
$host="localhost";  
$username="root"; 
$password=""; 
$db_name="app"; 
$tbl_name="list"; 

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select database");
	
if ("POST" === $_SERVER['REQUEST_METHOD']) {	
	foreach( $_POST["id"] AS $id ) {
		$item = mysql_real_escape_string($_POST["item"][$id]);
		$class = mysql_real_escape_string($_POST["class"][$id]);
		$unity = mysql_real_escape_string($_POST["unity"][$id]);
		$qty = mysql_real_escape_string($_POST["qty"][$id]);
		$memo = mysql_real_escape_string($_POST["memo"][$id]);
		$update = "UPDATE $tbl_name SET `item` = '$item', `class` = '$class', `qty` = '$qty', `unity` = '$unity', `memo` = '$memo' WHERE `id` = $id";
		mysql_query($update) or die( mysql_error());
		}
		}	
$sql = "SELECT * FROM $tbl_name order by    
			case  
				when class = 'Fruit' 						then 10
				when class = 'Aardappelen'  				then 20
				when class = 'Groenten'    					then 30
			else 9999
			end,
			case
				when qty = 0 							then 0
				when qty = null         				then 0
			else 1
			end DESC,
			item,
			id" ;

$res = mysql_query( $sql ) or die( mysql_error() );

if ( mysql_num_rows( $res ) > 0 ) {	
	echo '<div class="headertext" id="headertext">Lijst</div><p>'."\n";
	echo '<form name="form1" id="form1" method="post">';

	while ( $row = mysql_fetch_assoc( $res ) ) {
			if ( $row["qty"] == '0' ) {
				$class = 'form-control-inactief';  
				}
			else {
				$class = 'form-control-actief';
			}
		
		echo ' <div id="' . $class . '">' ."\n";
		echo ' <input type="text" min="0" class="  ' . $class . '" name="qty[' . $row["id"] . ']" placeholder="<aantal>" value="'.$row["qty"].'" size="4">'."\n";
		echo ' <select class="' . $class . '" name="unity[' . $row["id"] . ']">'."\n";
		echo '      <option value=""'. ($row['unity'] == '' ? ' selected="selected"' : '') .'></option>'."\n";
		echo '      <option value="Stuks"'. ($row['unity'] == 'Stuks' ? ' selected="selected"' : '') .'>Stuks</option>'."\n";
		echo '      <option value="Set"'. ($row['unity'] == 'Set' ? ' selected="selected"' : '') .'>Set</option>'."\n";
        echo '      <option value="Gram"'. ($row['unity'] == 'Gram' ? ' selected="selected"' : '') .'>Gram</option>'."\n";
		echo '      <option value="Pak"'. ($row['unity'] == 'Pak' ? ' selected="selected"' : '') .'>Pak</option>'."\n";
		echo '      <option value="Fles"'. ($row['unity'] == 'Fles' ? ' selected="selected"' : '') .'>Fles</option>'."\n";
		echo '      <option value="Krat"'. ($row['unity'] == 'Krat' ? ' selected="selected"' : '') .'>Krat</option>'."\n";
		echo '      <option value="Zak"'. ($row['unity'] == 'Zak' ? ' selected="selected"' : '') .'>Zak</option>'."\n";
		echo '      <option value="Bak"'. ($row['unity'] == 'Bak' ? ' selected="selected"' : '') .'>Bak</option>'."\n";
		echo '      <option value="Pot"'. ($row['unity'] == 'Pot' ? ' selected="selected"' : '') .'>Pot</option>'."\n";
		echo ' </select>'."\n";
		echo ' <input type="text" class="' . $class . '_bold" name="item[' . $row["id"] . ']" placeholder="<item>" value="'.$row["item"].'" size="20">'."\n";
		echo ' <input type="text" class="' . $class . '" name="memo[' . $row["id"] . ']" placeholder="<memo>" value="'.$row["memo"].'" size="10">'."\n";
		echo ' <select class="' . $class . '" name="class[' . $row["id"] . ']">'."\n";
		echo '      <option value=""'. ($row['class'] == 'ZZZZZZZZZ' ? ' selected="selected"' : '') .'></option>'."\n";		
		echo '      <option value="Fruit"'. ($row['class'] == 'Fruit' ? ' selected="selected"' : '') .'>Fruit</option>'."\n";
		echo '      <option value="Aardappelen"'. ($row['class'] == 'Aardappelen' ? ' selected="selected"' : '') .'>Aardappelen</option>'."\n";
		echo '      <option value="Groenten"'. ($row['class'] == 'Groenten' ? ' selected="selected"' : '') .'>Groenten</option>'."\n";
		echo ' </select>'."\n";
		echo '<input type="hidden" name="id[]" value="' . $row["id"] . '">  ' . "\n";

	}
	echo '<br>'. "\n";
	echo '<input type="submit" size=40 name="submit" value="Bewaren">' . "\n";
	echo '</div>' . "\n";
}

?>
 
Houd u vorig resultaat als old ik heb het niet getest
maar dat moet het ongeveer zijn.

PHP:
<?php
$host='localhost';  
$username='root'; 
$password=''; 
$db_name='app'; 
$tbl_name='list';
$sharset = 'utf8';
$conn = 'mysql:host='.$host.';dbname='.$db_name;
$dboptions=[PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \''.$sharset.'\'',PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
try{
  $DB = new PDO($conn,$username,$password,$dboptions);
}catch(Exception $ex){
  die('cannot connect or cannot select database');
}
if('POST' === $_SERVER['REQUEST_METHOD']){    
    foreach($_POST["id"] AS $id){
        $item = mysql_real_escape_string($_POST["item"][$id]);
        $class = mysql_real_escape_string($_POST["class"][$id]);
        $unity = mysql_real_escape_string($_POST["unity"][$id]);
        $qty = mysql_real_escape_string($_POST["qty"][$id]);
        $memo = mysql_real_escape_string($_POST["memo"][$id]);
        try{
            $dbStmt = $DB->prepare("UPDATE $tbl_name SET `item`='$item', `class`='$class', `qty`='$qty', `unity`='$unity', `memo`='$memo' WHERE `id`=$id");
            $dbStmt->execute($param);
            @$dbStmt->closeCursor();
        }catch(PDOException $e){
            print_r($e);
        }
     }
}   
$dbStmt = $DB->prepare("SELECT * FROM $tbl_name order by    
            case  
                when class = 'Fruit'                        then 10
                when class = 'Aardappelen'                  then 20
                when class = 'Groenten'                     then 30
            else 9999
            end,
            case
                when qty = 0                            then 0
                when qty = null                         then 0
            else 1
            end DESC,
            item,
            id") ;
if($dbStmt->execute()){ 
    echo '<div class="headertext" id="headertext">Lijst</div><p>'."\n";
    echo '<form name="form1" id="form1" method="post">';
    $options = ['','Stuks','Set','Gram','Pak','Fles','Krat','Zak','Bak','Pot'];
    while($row = $dbStmt->fetchAll(PDO::FETCH_ASSOC)){
            if($row["qty"] == '0'){
                $class = 'form-control-inactief';
            }else{
                $class = 'form-control-actief';
            }
        echo ' <div id="' . $class . '">' ."\n";
        echo ' <input type="text" min="0" class="  ' . $class . '" name="qty[' . $row["id"] . ']" placeholder="<aantal>" value="'.$row["qty"].'" size="4">'."\n";
        echo ' <select class="' . $class . '" name="unity[' . $row["id"] . ']">'."\n";
        foreach($options as $option){
            echo '<option value="'$option'"'.(($row['unity'] ==$option)?' selected="selected"':'').'>'.$option.'</option>'."\n";
        }
        echo ' </select>'."\n";
        echo ' <input type="text" class="' . $class . '_bold" name="item[' . $row["id"] . ']" placeholder="<item>" value="'.$row["item"].'" size="20">'."\n";
        echo ' <input type="text" class="' . $class . '" name="memo[' . $row["id"] . ']" placeholder="<memo>" value="'.$row["memo"].'" size="10">'."\n";
        echo ' <select class="' . $class . '" name="class[' . $row["id"] . ']">'."\n";
        echo '      <option value=""'. ($row['class'] == 'ZZZZZZZZZ' ? ' selected="selected"' : '') .'></option>'."\n";     
        echo '      <option value="Fruit"'. ($row['class'] == 'Fruit' ? ' selected="selected"' : '') .'>Fruit</option>'."\n";
        echo '      <option value="Aardappelen"'. ($row['class'] == 'Aardappelen' ? ' selected="selected"' : '') .'>Aardappelen</option>'."\n";
        echo '      <option value="Groenten"'. ($row['class'] == 'Groenten' ? ' selected="selected"' : '') .'>Groenten</option>'."\n";
        echo ' </select>'."\n";
        echo '<input type="hidden" name="id[]" value="' . $row["id"] . '">  ' . "\n";
 
    }
    echo '<br>'. "\n";
    echo '<input type="submit" size=40 name="submit" value="Bewaren">' . "\n";
    echo '</div>' . "\n";
}else{
    echo 'Helaas ik heb geen informatie gevonden' . "\n";
}
 
?>
je querys moet je nog veranderen naar volgens voorbeeld

PHP:
$dbStmt = $DB->prepare( 'UPDATE `tablename` SET `ENABLED`=:ENABLED WHERE `id`=:id and `accound_id`=:accound_id');
               $value = [':ENABLED'=>$ENABLED,':id'=>$item_id,':accound_id'=>$accound_id];
$dbStmt->execute($value);
 
Laatst bewerkt:
ik zie geen reactie dat wil zeggen dat het niet werkt

als het niet werkt plaats dan gelijk ook eens op lijn 13 zoals onderaan zoals op lijn 27
PHP:
catch(PDOException $e){
            print_r($e);
}
en ik bedoel dan als volgd
PHP:
}catch(PDOException $e){
    print_r($e);//indien online verwijderen om externe personen geen interne info te geven
}catch(Exception $ex){
  die('cannot connect or cannot select database');
}
 
Ikzelf raad mysqli aan. Meestal een kwestie van een 'i' toevoegen, en bij sommige functies een identifier-variabele van je connectie.

PDO is ook tof, maar dat werkt in grote lijnen behoorlijk anders.
 
Ik heb het ondertussen opgelost met mysqli. Het werkt nu prima! Bedankt voor het meedenken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan