- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query che non funziona
-
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.
-
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
-
@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
-
@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!
-
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;)
-
@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.
-
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.
-
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.
-
Grazie. ora va