Salve,
dopo che il mio provider ha upgradato mysql dalla 4.0 alla 5.0, alcune parti del codice in php del sito di ecommerce hanno cominciato a dare (anzi a NON dare) i numeri.
Mi spiego meglio: questo è ad esempio il record di uno dei prodotti in vendita



Quando il prodotto viene caricato ex-novo, tutto il sito funziona perfettamente (come quando c'era il mysql 4.0). Non appena il prodotto viene modificato/aggiornato, il campo CATEGORY, in questo caso "41 347" genera msg di errore se viene ad esempio ricercato da un cliente per acquistarlo. Da notare che il record del prodotto, controllato mediante phpmyadmin, resta tale e quale (almeno apparentemente) sia prima che dopo l'aggiornamento (vedi immagine sopra).
Questa è la parte di codice che dovrebbe visualizzare Categoria, Produttore, Prodotto
Codice PHP:
  case "{$config['maindir']}product.php":
        if (!isset(
$_GET['p'])) $_GET['p'] = 0;
        
$product mysql_query("select * from {$config['prefix']}Products where id='{$_GET['p']}' limit 1");
        if (
$product)
          
$productinfo mysql_fetch_array($product);
        
$categoryid split(" ",$productinfo['category']);
        
$categoryid $categoryid[sizeof($categoryid)-1];
        
$category mysql_query("select * from {$config['prefix']}Categories where id='{$categoryid}' limit 1");
        if (
$category)
          
$categoryinfo mysql_fetch_array($category);
        
$manufacturer mysql_query("select * from {$config['prefix']}Manufacturers where id='{$productinfo['manufacturer']}' limit 1");
        if (
$manufacturer)
          
$manufacturerinfo mysql_fetch_array($manufacturer);
        
        
callModule("{$output['245']}","product_category.html","maindisplay/");
        
callModule("{$output['253']}","product_manufacturer.html","maindisplay/");
        
callModule("{$output['255']}","product_display.html","maindisplay/");
      break; 
Questa è la parte di codice che modifica il prodotto:

Codice PHP:
 if (trim($_POST['name']) != "" && trim($_POST['description']) != "" && trim($_POST['category']) != "" && 
      
trim($_POST['manufacturer']) != "" && trim($_POST['stock']) != "" && is_numeric($_POST['stock']) && 
      
trim($_POST['ean']) != "" && trim($_POST['iva']) != "" && is_numeric($_POST['price']) && trim($_POST['shipping']) != "" && 
      
is_numeric($_POST['shipping']) && trim($_POST['shipping2']) != "" && is_numeric($_POST['shipping2']) && 
      
trim($_POST['handling']) != "" && is_numeric($_POST['handling'])) {
    
mysql_query("update {$config['prefix']}Products set category='{$_POST['category']}'," .
                
"manufacturer='{$_POST['manufacturer']}',name='{$_POST['name']}',description='{$_POST['description']}'," .
                
"numdownloads='{$_POST['numdownloads']}',price='{$_POST['price']}',shipping='{$_POST['shipping']}'," .
                
"shipping2='{$_POST['shipping2']}',handling='{$_POST['handling']}',stock='{$_POST['stock']}'," .
                
"addbr='{$_POST['addbr']}',ean='{$_POST['ean']}',iva='{$_POST['iva']}',modified=NOW() where id={$_POST['id']}"); 
Con il prodotto creato ex-novo funziona perfettamente, non appena il prodotto viene modificato non visualizza più la categoria (che invece continua ad essere presente sul DATABASE...)

:master: