Cancellare record su più tabelle con PHP

alessiof86

Utente Attivo
6 Lug 2009
134
0
0
Buonasera sono un neofita del php e mysql, devo creare uno script per la cancellazione di record che sono in relazione fra loro. Le tabelle interessate sono 2:
1) mel contenente i seguenti campi id_mel - lotto_conf - quantita
2) stoc contenete i campi id_stoc - lotto_conf - data

le tabelle sono in relazione tramite lotto_conf

ora dovrei creare una query per cancellare al click dell utente la riga selezionata e i dati inerenti alla tabella stoc in relazione con la tabella mel. La pagina passa il valore id_mel, uqesto lo recupero ma non so ocme strutturare la query. Cosa mi suggerite? Grzie mille
 
Quindi dorei scrivere

DELETE mel.*
FROM mel INNER JOIN stoc
ON mel.lotto_conf = stoc.lotto_conf
WHERE id_mel = $id_mel

il valore $id_mel la recupero prima della query. Quindi mi confermi che così facendo cancello il record selezioato della tabella mel e quello in relazione con questo della tabella stoc?

Grazie mille per l'aiuto
 
No, in teoria cancelli solo quello nella tabella mel
se devi cancellarli entrambi ti conviene fare due DELETE prima in una tabella e poi nell'altra
 
Quindi devo prima ricavarmi il valore di lotto_con e poi creare una nuova delete che va a cancellare il record nella tabella stoc?

Sto uscendo pazzo, mi sto incartando su una cosa banale. Come lo ricavo il valore lotto_conf sapendo id_mel della tabella mel?

Grazie per la tua pazienza
 
puoi fare una semplice select
select lotto_conf form mel where id_mel = $id
e poi fai le due delete
oppure
fai la delete con la join dell'articolo e poi una delete normale sull'altra tabella
 
puoi fare una semplice select
select lotto_conf form mel where id_mel = $id
e poi fai le due delete
oppure
fai la delete con la join dell'articolo e poi una delete normale sull'altra tabella

Quindi dovrei fare questo... puoi dirmi se può funzionare o ci sono errori di sintassi

PHP:
sql="SELECT lotto_conf FROM mel WHRE id_mel = $id";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$lotto_conf = $row["visite"];

sql2="DELETE FROM mel WHERE id_mel = $id";
$result2=mysql_query($sql2);

sql3="DELETE FROM stoc WHERE lotto_conf = $lotto_conf";
$result3=mysql_query($sql3);

Grazie di nuovo per la tua pazienza
 
Quindi dovrei fare questo... puoi dirmi se può funzionare o ci sono errori di sintassi

PHP:
sql="SELECT lotto_conf FROM mel WHRE id_mel = $id";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$lotto_conf = $row["visite"];

sql2="DELETE FROM mel WHERE id_mel = $id";
$result2=mysql_query($sql2);

sql3="DELETE FROM stoc WHERE lotto_conf = $lotto_conf";
$result3=mysql_query($sql3);

Grazie di nuovo per la tua pazienza

Ciao scusate ma non finziona potreste indicare il punto dove sbaglio grazie milllleeeee
 
$lotto_conf = $row["visite"];
sicuro che il campo si chiama visite ?
sql3="DELETE FROM stoc WHERE lotto_conf = $lotto_conf";
se $lotto_conf non è numerico devi mettere anche gli apici
PHP:
sql3="DELETE FROM stoc WHERE lotto_conf = '$lotto_conf'";
 
sicuro che il campo si chiama visite ?

se $lotto_conf non è numerico devi mettere anche gli apici
PHP:
sql3="DELETE FROM stoc WHERE lotto_conf = '$lotto_conf'";


Ho correttovisite che non si chiamava così ma ora mi restituisce questo errore
Parse error: syntax error, unexpected '=' ........

sullaprima riga di codice, quindi la prima select
 
Il problema ora è che esegue solo la delete sulla tabella mel, mentre quella sulla tabella stoc viene ignorata, mi sai indicare il perchè e come potrei risolvere
 
usa le funzioni di mysql per trovare gli errori
PHP:
if(!$result3) {
echo "errore" . mysql_error();
}
 
usa le funzioni di mysql per trovare gli errori
PHP:
if(!$result3) {
echo "errore" . mysql_error();
}


Ho provato ma non mi restitutisce nessun errore ti posto il codice

PHP:
$sql="SELECT lott_conf FROM melari WHRE id_mel=$id";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$lotto_conf = $row["lott_conf"];


$result2 = mysql_query("DELETE FROM melari WHERE id_mel=$id")
or die(mysql_error());

$result3 = mysql_query("DELETE FROM stoc_conf WHERE lotto_conf='$lotto_conf'")
or die(mysql_error());

La prima delete viene eseguita mentre la seconda no.
 
Separa la query dalla sua esecuzione e stampala
PHP:
$query = "DELETE FROM stoc_conf WHERE lotto_conf='$lotto_conf'";
$result3 = mysql_query($query); 
echo $query;
Se ti sembra corretta eseguila direttamente su phpmyadmin e vedi cosa ti restituisce
 
Ho eliminato la delete eseguita correttamente lasciando solo le righe necessarie per la seconda delete

PHP:
$sql="SELECT lott_conf FROM melari WHRE id_mel=$id";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$lotto_conf = $row["lott_conf"];
$query = "DELETE FROM stoc_conf WHERE lotto_conf='$lotto_conf'";
$result3 = mysql_query($query); 
echo $query;

e mi restituisce il seguente errore

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/.....................on line 25
DELETE FROM stoc_conf WHERE lotto_conf=''

Non riesco a capire a questo punto il problema sta quando vado a memorizzare il valore di $row["lott_conf"] nela variabile $lotto_conf
 
il problema è abbastanza chiaro
Codice:
DELETE FROM stoc_conf WHERE lotto_conf=''
$lotto_conf non è valorizzato
il problema sta nella SELECT
fai la stampa anche di quella
 
Ho provato solo a scirvere questo

PHP:
$sql="SELECT lott_conf FROM melari WHRE id_mel=$id";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$lotto_conf = $row["lott_conf"];
echo $sql;

e mi restituisce il seguente risultato
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/htdoc...........on line 25
SELECT lott_conf FROM melari WHRE id_mel=2

Cioè nn recupera il valore.... cosa mi consigli di fare
 
nella delete scrivi
Codice:
WHERE lotto_conf
nella select
Codice:
SELECT lott_conf
o è lott o è lotto
devi stare più attento a quello che scrivi
e rileggerlo più volte
 

Discussioni simili