• User Attivo

    Query che non funziona

    Ciao, ragazzi.

    Ho realizzato queta query:

    
    $query1 = "SELECT id_sottocategoria FROM prodotti WHERE id = $id'";
           $result1=mysql_query($query1, $db); 
           while ($row1 = mysql_fetch_array($result1)) {
           $id_sottocategoria = $row1[id_sottocategoria]);
     } 
    
    

    Purtroppo, però, quando carico la pagina, mi resta una schermata bianca. E non capisco proprio cosa ci sia di sbagliato.
    Sono sicuro che dipende da quella query, perchè se nel codice di richiamo dell'array metto i 2 slash:

    
    // $id_sottocategoria = $row1[id_sottocategoria]);
    
    

    la pagina risulta essere funzionante (salvo il fatto, naturalmente, che il valore di $id_sottocategoria è 0 ).

    Mi sapete dire da cosa può dipendere?

    Grazie.


  • User Attivo

    mh... affianco a $id manca la virgoletta.. non so se può essere quello...
    cmq fai così:
    mysql_query(..) or die(mysql_error());

    almeno ti dice l'errore


  • User Attivo

    @fdalesio said:

    mh... affianco a $id manca la virgoletta.. non so se può essere quello...
    cmq fai così:
    mysql_query(..) or die(mysql_error());

    almeno ti dice l'errore

    Beh, sicuro la virgoletta era un errore 🙂 Mi sa che è meglio che mi prenda un pò di ferie 😉

    Comunque, ancora non ho risolto.

    Non solo. l'errore non me lo restituisce 😞

    Sarà che il tutto è in una form?
    Ecco il codice completo:

    
    if($action == "delete" && $id){
     $query1 = "SELECT id_sottocategoria FROM prodotti WHERE id = '$id'";
           $result1=mysql_query($query1, $db) or die (mysql_error());
           while ($row1 = mysql_fetch_array($result1)) {
           // $id_sottocategoria = $row1[id_sottocategoria]);
     } 
     $query2 = "INSERT INTO prodotti_elim (id_cats,id_prod_elim) VALUES ('$id_sottocategoria','$id')";
      mysql_query ($query2, $db);
     
     $query = "DELETE FROM ".$table." WHERE id='$id'";
     mysql_query ($query, $db);
    }
    
    

    Tra l'altro, se lascio // come indicato, tutto funziona correttamente!
    id_prod_elim per esempio viene memorizzato correttamente... mah


  • User

    @kru said:

    Beh, sicuro la virgoletta era un errore 🙂 Mi sa che è meglio che mi prenda un pò di ferie 😉

    Comunque, ancora non ho risolto.

    Non solo. l'errore non me lo restituisce 😞

    Sarà che il tutto è in una form?
    Ecco il codice completo:

    >
    if($action == "delete" && $id){
     $query1 = "SELECT id_sottocategoria FROM prodotti WHERE id = '$id'";
           $result1=mysql_query($query1, $db) or die (mysql_error());
           while ($row1 = mysql_fetch_array($result1)) {
           // $id_sottocategoria = $row1[id_sottocategoria]);
     } 
     $query2 = "INSERT INTO prodotti_elim (id_cats,id_prod_elim) VALUES ('$id_sottocategoria','$id')";
      mysql_query ($query2, $db);
     
     $query = "DELETE FROM ".$table." WHERE id='$id'";
     mysql_query ($query, $db);
    }
    
    >```Tra l'altro, se lascio // come indicato, tutto funziona correttamente!
    id_prod_elim  per esempio viene memorizzato correttamente... mah
    
    Allora,
    
    1- l'apice era un errore
    2- $action la crei nel codice oppure è passata da form? Se è passata da form prova a sostituire con $_GET['action'] (o $_POST['action'] a seconda).
    3- se $id = 0 non entrerà mai nell'if... non usare mai quel controllo. Piuttosto metti
    if (isint($id))
    o qualcosa del genere.
    4- $id_sottocategoria = $row1[id_sottocategoria] => logico che non vada. Metti $row1['id_sottocategoria'].
    
    Fammi sapere se funziona. ciao!

  • User Attivo

    Riepilogo:

    
    if($action == "delete" && $id){
     **$query1** = "SELECT id_sottocategoria FROM prodotti WHERE id = '$id'";
           $result1=mysql_query($query1, $db) or die (mysql_error());
           while ($row1 = mysql_fetch_array($result1)) {
           // $id_sottocategoria = $row1['id_sottocategoria']);
     } 
     **$query2** = "INSERT INTO prodotti_elim (id_cats,id_prod_elim) VALUES ('$id_sottocategoria','$id')";
      mysql_query ($query2, $db);
     
     **$query** = "DELETE FROM ".$table." WHERE id='$id'";
     mysql_query ($query, $db);
    }
    
    

    Ho provato tutto, tranne il tentativo con $GET, perchè comunque le altre query funzionano!

    $query, funziona alla perfezione;
    $query2 funziona fintantochè l'istruzione in azzurro resta tale. Per funzionare, intendo che correttamente mi viene inserito in tabella (prodotti_elim) il valore $id (che non può mai essere 0 !). Naturalmente non viene inserito il valore $id_sottocategoria, che non è stato richiamato.
    Se però tolgo // , allora la pagina non mi viene nemmeno caricata (resta bianca).

    Qualche altra idea?
    Grazie per la pazienza;)


  • User

    @kru said:

    Riepilogo:

    >
    if($action == "delete" && $id){
     **$query1** = "SELECT id_sottocategoria FROM prodotti WHERE id = '$id'";
           $result1=mysql_query($query1, $db) or die (mysql_error());
           while ($row1 = mysql_fetch_array($result1)) {
           // $id_sottocategoria = $row1['id_sottocategoria']);
     } 
     **$query2** = "INSERT INTO prodotti_elim (id_cats,id_prod_elim) VALUES ('$id_sottocategoria','$id')";
      mysql_query ($query2, $db);
     
     **$query** = "DELETE FROM ".$table." WHERE id='$id'";
     mysql_query ($query, $db);
    }
    
    >```Ho provato tutto, tranne il tentativo con $GET, perchè comunque le altre query funzionano!
     
    **$query**, funziona alla perfezione; 
    **$query2** funziona fintantochè l'istruzione in azzurro resta tale. Per funzionare, intendo che correttamente mi viene inserito in tabella (prodotti_elim) il valore $id (che non può mai essere 0 !). Naturalmente non viene inserito il valore $id_sottocategoria, che non è stato richiamato. 
    Se però tolgo // , allora la pagina non mi viene nemmeno caricata (resta bianca).
     
    Qualche altra idea?
    Grazie per la pazienza;)
    Togli il comment e fai un print_r di $id_sottocategoria seguito dal comando die() e dimmi cosa ti stampa. Già che ci siamo, posta la struttura della tabella, in particolare mi serve sapere i tipi di dato id_cats e id_prod_elim.

  • User

    Ma porc'immondo! 😄

    $id_sottocategoria = $row1['id_sottocategoria']);

    Che ci fa quella parentesi chiusa? Ma hai abilitato la stampa degli errori scusa? E' quello l'errore, sicuro.


  • User

    Un suggerimento finale. Questi errori li eviti se usi un qualsiasi programma di scripting php (se proprio non hai abilitato la stampa degli errori da php.ini). Io ti consiglio Eclipse col plugin "php developer" ch'è una bomba. Sennò è un ottimo strumento anche lo Zend.


  • User Attivo

    🙂

    Grazie. ora va 😉

    :ciauz: