Cancellazione record

Stato
Chiusa ad ulteriori risposte.
ciao
scusa, ma non hai visto DOVE hai messo il form?
il form deve andare tra
PHP:
if($cosa=="M"){
//qui la query ecc di selezione del db poi il form
//qui il form
e la
PHP:
}elseif($cosa=="D"){
 
Ciao

Quindi dovrebbe esse così:

PHP:
if($cosa=="M"){
$sql = 'SELECT * FROM film where id=$id_del_film';

var_dump($id_del_film);
var_dump($sql);
$result = mysql_query ($sql);
$row = mysql_fetch_assoc($result);
var_dump($row['attoreprincipale']);

?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
<br> <br> <br>
Attore Principale: <input type="text" name="attoreprinc" value="<?php echo $row['attoreprincipale'];?>"> <br> <br>
Titolo Film: <input type="text" name="titolofilm" value="<?php echo $row['titolofilm'];?>"> <br> <br>
Raccolta: <input type="text" name="raccolta" value="<?php echo $row['raccolta'];?>"> <br> <br>
Genere:
<?php
require_once("arraydiselezione.php");

echo "<select name=\"genere\">";
foreach($genere as $chiave => $valore){//ciclo l'array
    
       $sel="";if($row['genere']==$chiave){$sel=" selected ";}

    echo "<option value=\"$chiave\" $sel>$valore</option>";
}
echo "</select>";
?>
<br> <br>
Tipo DvD:

<?php

echo "<select name=\"tipodvd\">";
foreach($tipodvd as $chiave => $valore){//ciclo l'array

       $sel="";if($row['tipodvd']==$chiave){$sel=" selected ";}

    echo "<option value=\"$chiave\" $sel>$valore</option>";
}
echo "</select>";
?>

<br> <br>
Data: <input type="text" name="data"  value="<?php echo $row['data'];?>">
<!-- il campo nascosto ti serve perche col submit il $id_del_film=$_GET['id'] si perde quini lo trasmettiamo di nuovo prima di perderlo-->
<input name="id_m" type="hidden" id="<?php echo $id_del_film;?>">
<br> <br> <br> <br>
<center>
<input name="modifica" type="submit" id="modifica" value="Modifica">

</center>
</form>

}elseif($cosa=="D"){
    $query_del="DELETE FROM film WHERE id=$id";
    $ris=mysql_query($query_del);
    echo "<h1>record eliminato</h1>";
    echo '<meta http-equiv=\'Refresh\' content=\'3; URL="inscerca.php"\' />';
}



</body>
</html>
 
ciao
sembrerebbe.
se ti appaiono, selezionando e dando modifica, i vecchi valori nei campi è giusto (cosa ti danno i var_dump?)
se è giusto, consolati, siamo quasi alla fine
 
Ciao

Purtroppo il compilatore, mi da un errore alla riga finale, non specifica che tipo di errore. devo aver saltato qualche parentesi di chiusura :( Risolto eheheheh. Vedi che ho ragione dicendo che il caffè aiuta a ocncentrarsi ??? Sopratutto quello del bar ihihihihihi Finalmente sono riuscito a farlo girare e mi da questo:

Notice: Undefined variable: id_del_film in C:\xampp\htdocs\Archivio\cancella 2.php on line 22
NULL string(40) "SELECT * FROM film where id=$id_del_film"
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Archivio\cancella 2.php on line 25
NULL
A e sotto compare la seguente cosa che riguarda la parte del record eliminato:

}elseif($cosa=="D"){ $query_del="DELETE FROM film WHERE id=$id"; $ris=mysql_query($query_del); echo "
record eliminato
"; echo ''; }


Inoltre, se faccio doppio clic su "attore principale", mi compare questo: <br /><b> </b> on line <b>49</b><br />
 
Ultima modifica:
ciao
non vorrei sembrare scettico, ma hai aperto/chiuso bene i tag php ?
e verifica anche di non esserti dimenticato qualche parentesi {}.
come mai i vardump ti danno quei valori? sino a ieri con l'elimina fi valori erano giusti
 
Ciao

Sull fatto dei valori ti posso rispondere subito, è perkè ho messo elseif, alla fine di tutto quanto. Ho verificato duecentomila volte l'apertura e chiusura del php, e mi sembra tutto regolare. Per quanto riguarda l'ultimo errore della parentesi. Effettivamente ne mancava una e di fatti l'ho aggiunta. Il fatto che mi visualizza tutto il codice, è dovuto che sta in formato html e lo prende come scritta.Mi sta facendo impazzire questa pagina del cavolo. Se vuoi ti riposto il codice per intero. Magari 4 occhi vedono meglio di due. ora ricontrollo di nuovo i tag del php. In attesa della tua risposta se vuoi che ti posto il codice oppure no.

Ti posto il codice non riesco proprio a trovarlo l'errore:

PHP:
$cosa=$_GET['cosa'];
$id=$_GET['id'];


if($cosa=="M"){
$sql = 'SELECT * FROM film where id=$id_del_film';

var_dump($id_del_film);
var_dump($sql);
$result = mysql_query ($sql);
$row = mysql_fetch_assoc($result);
var_dump($row['attoreprincipale']);

?>

  <html>
<head>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
<br> <br> <br>
Attore Principale: <input type="text" name="attoreprinc" value="<?php echo $row['attoreprincipale'];?>"> <br> <br>
Titolo Film: <input type="text" name="titolofilm" value="<?php echo $row['titolofilm'];?>"> <br> <br>
Raccolta: <input type="text" name="raccolta" value="<?php echo $row['raccolta'];?>"> <br> <br>
Genere:
</html>
</head>

<?php
require_once("arraydiselezione.php");

echo "<select name=\"genere\">";
foreach($genere as $chiave => $valore){//ciclo l'array
    
       $sel="";if($row['genere']==$chiave){$sel=" selected ";}

    echo "<option value=\"$chiave\" $sel>$valore</option>";
}
echo "</select>";
?>

<html>
<head>
<br> <br>
Tipo DvD:
</html>
</head>

<?php

echo "<select name=\"tipodvd\">";
foreach($tipodvd as $chiave => $valore){//ciclo l'array

       $sel="";if($row['tipodvd']==$chiave){$sel=" selected ";}

    echo "<option value=\"$chiave\" $sel>$valore</option>";
}
}
echo "</select>";
?>
<html>
<head>
<br> <br>
Data: <input type="text" name="data"  value="<?php echo $row['data'];?>">
<!-- il campo nascosto ti serve perche col submit il $id_del_film=$_GET['id'] si perde quini lo trasmettiamo di nuovo prima di perderlo-->
<input name="id_m" type="hidden" id="<?php echo $id_del_film;?>">
<br> <br> <br> <br>
<center>
<input name="modifica" type="submit" id="modifica" value="Modifica">
</center>
</form>

</html>
</head>

<php (questo php, iò compilatore anzicchè segnalarmelo di color nero (quindi tutto bene), me lo segnala di colre azzurro. E di fatti, mi legge tutto il codice come se fosse una csritta normale)

}elseif($cosa=="D"){
    $query_del="DELETE FROM film WHERE id=$id";
    $ris=mysql_query($query_del);
    echo "<h1>record eliminato</h1>";
    echo '<meta http-equiv=\'Refresh\' content=\'3; URL="inscerca.php"\' />';
}
?>

</body>
</html>

Comunque mettendo prima l'else e dopo tutto il resto funziona a dovere. E mi da questo risultato qua appena clicco su modifica su tutti i campi tranne su tipodvd e genere:


<br /><b>Notice</b>: Undefined variable: row in <b>C:\xampp\htdocs\Archivio\cancella 2.php</b> on line <b>42</b><br />
 
Ultima modifica:
Ciao

Ok, anche se troppo tardi. Te l'ho messo in file txt del block notes Penso che vada bene ugualmente, ora te lo allego. Ecco fatto. Come vedrai, così ognuno fa le sue funzioni, però mi appaiono le casselle in bianco. Tranne genere e tipodvd che di default stanno sulla prima voce selezionata. Inoltre, mi da quest'errore qua:

Notice: Undefined variable: id_del_film in C:\xampp\htdocs\Archivio\cancella 2.php on line 22
NULL string(40) "SELECT * FROM film where id=$id_del_film"
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Archivio\cancella 2.php on line 25
NULL

Perdonami, se premo sul tasto modifica mi compare tutti i campi compilati con la seguente scritta:

<br /><b>Notice</b>: Undefined variable: row in <b>C:\xampp\htdocs\Archivio\cancella 2.php</b> on line <b>41</b><br />
 

Allegati

Ultima modifica:
ciao
ecco lo script corretto, guarda se i nomi dei campi tabella sono giusti e, quando funzia togli o commenta tutti i var_dump
come al solito leggi i commenti

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Modifica ed Elimina record</title>
</head>
<body>
<?php
require_once("connetti.php");
require_once("paginaprotetta.php");
require_once("presenta.php");

$cosa=$_GET['cosa'];
$id=$_GET['id'];//**!!!*** PERCHE' qui lo chiami $id e poi...
//qui la parte di script che modifica
if(isset($_POST['modifica']) && $_POST['modifica']=="modifica"){//entro solo se ho premuto il subit di modifica
	//in teoria (e anche in pratica) ci vorrebbero TUTTI i controlli dei vari input
	$attoreprinc=$_POST['attoreprinc'];
	$titolofilm=$_POST['titolofilm'];
	$raccolta=$_POST['raccolta'];
	$genere=$_POST['genere'];
	$tipodvd=$_POST['tipodvd'];
	$data=$_POST['data'];
	$id_m=$_POST['id_m'];
	$query="UDPDATE film SET attoreprinc='$attoreprinc', titolofilm='$titolofilm', raccolta='$raccolta', genere='$genere', tipodvd='$tipodvd', data='$data' WHERE id=$id_m";
	var_dump($query);
	$ris=mysql_query($query);
	echo "<h1>record  $id_m modificato</h1>";
	//la riga sotto la decommenti quando tutto funzia
    //echo '<meta http-equiv=\'Refresh\' content=\'3; URL="inscerca.php"\' />';
}//fine script di modifica

if($cosa=="M"){
	$sql = 'SELECT * FROM film where id=$id_del_film';//**!!!*** e qui lo chiami $id_del_film ???
	var_dump($id_del_film);
	var_dump($sql);
	$result = mysql_query ($sql);
	$row = mysql_fetch_assoc($result);
	var_dump($row['attoreprinc']);// perchè hai messo il form fuori dall'if della modifica ???
//********************IL FORM VA TRA QUI
?>
<!-- che cavolo c'entrano questi due tag in questa posizione
<html>
<head>
-->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
<br> <br> <br>
Attore Principale: <input type="text" name="attoreprinc" value="<?php echo $row['attoreprinc'];?>"> <br> <br>
Titolo Film: <input type="text" name="titolofilm" value="<?php echo $row['titolofilm'];?>"> <br> <br>
Raccolta: <input type="text" name="raccolta" value="<?php echo $row['raccolta'];?>"> <br> <br>
Genere:
<!-- che cavolo c'enrtano questi due tag in questa posizione
<html>
<head>
-->
<?php
	require_once("arraydiselezione.php");
	echo "<select name=\"genere\">";
	foreach($genere as $chiave => $valore){//ciclo l'array
			$sel="";if($row['genere']==$chiave){$sel=" selected ";}
    		echo "<option value=\"$chiave\" $sel>$valore</option>";
	}
	echo "</select>";
?>
<!-- che cavolo c'entrano questi due tag in questa posizione
<html>
<head>
-->
<br> <br>
Tipo DvD:
<!-- che cavolo c'entrano questi due tag in questa posizione
</html>
</head>
-->
<?php
	echo "<select name=\"tipodvd\">";
	foreach($tipodvd as $chiave => $valore){//ciclo l'array
		$sel="";if($row['tipodvd']==$chiave){$sel=" selected ";}
    	echo "<option value=\"$chiave\" $sel>$valore</option>";
	}
	echo "</select>";
?>
<!-- che cavolo c'entrano questi due tag in questa posizione
<html>
<head>
-->
<br> <br>
Data: <input type="text" name="data"  value="<?php echo $row['data'];?>"><!-- NON avevi chiuso l'input-->
<!-- è il value che devi trasmettere (qui non so se avevo sbagliato io a scrivere)-->
<input name="id_m" type="hidden" id="id_m" value="<?php echo $id_del_film;?>"><!-- anche qui o $id_del_film o $id-->
<br> <br> <br> <br>
<center>
<input name="modifica" type="submit" id="modifica" value="Modifica">
</center>
</form>
<!--che cavolo c'entrano questi due tag in questa posizione
</html>
</head>
-->
<?php
//********************E QUI
}elseif($cosa=="D"){
    $query_del="DELETE FROM film WHERE id=$id";//**!!!*** e qui lo chiami nuovamente $id ??? o TUTTI $id o TUTTI $id_del_film
    $ris=mysql_query($query_del);
    echo "<h1>record  $id_del_film eliminato</h1>";
    echo '<meta http-equiv=\'Refresh\' content=\'3; URL="inscerca.php"\' />';
}
?>
</body>
</html>
salvo errori ed omissioni, dovrebbe funzuare

domanda: ma perchè metti i tag html e head in giro? ne va uno per pagina (come il body). spero che nei file che includi tu non li abbia messi
poi cerca di mettere le istruzioni dove servono e non random

@alex: ti prego non inorridire, abbi pietà di me
 
Ciao

Ehmmm no è solo ignranza pura sull'html. perdonami. Alcuni tag gli ho mesis per vedere se tante volte li piaceva o meno. Ora provo e ti dico, dai che facciamo contento alex. Almeno spero. E' stata più dura questa che la fase di cancellazione ehehehhe.
 
Ciao

Mi restituisce questo errore:

Notice: Undefined variable: id_del_film in C:\xampp\htdocs\Archivio\cancella 2.php on line 35
NULL string(40) "SELECT * FROM film where id=$id_del_film"
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Archivio\cancella 2.php on line 38
NULL

Ed inoltre, non mi legge il campo da modificare, ossia: titolo=altrimenti ci arrabiamo" ecc. ecc. Tutto vuoto.Vedi l'allegato Modifica modificato.txt
 
ciao
metti gli apici " "
$sql = "SELECT * FROM film where id=$id_del_film";

prova questo semplicissimo script per vedere la differenza di effetto tra apici singoli e doppi

PHP:
<?php
$variabile="pinco pallo";
//qui uso i doppi
echo " stampo la variabile $variabile <br>";
// e qui i singoli
echo ' stampo la variabile $variabile <br>';
?>
 
Ciao

Senti o so io de coccio, o so che so cecato. Però non vuole sapere di andare :(:( Continua a non leggermi i campi. Tutti vuoti. Ho rimodificato gli id, in id_del_film, come tu mni avevi messo la prima volta. pernsavo che fosse un tuo errore. invece dopo l'ho capito che non era un tuo errore. Nella tabella il campo "id" si chiama proprio "id". Non so più che fa :( E poi mi da il solito errore quello che ti avevo postato precdentemente.

Notice: Undefined index: id_del_film in C:\xampp\htdocs\Archivio\cancella 2.php on line 14
NULL string(49) "SELECT * FROM film where id_del_film=$id_del_film"
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Archivio\cancella 2.php on line 38
NULL
E dopo che premo su "modifica", mi da i seguenti errori notice ecc. ecc.

Notice: Undefined index: cosa in C:\xampp\htdocs\Archivio\cancella 2.php on line 13

Notice: Undefined index: id_del_film in C:\xampp\htdocs\Archivio\cancella 2.php on line 14

Vedi l'allegato Modifica modificato.txtVedi l'allegato Modifica modificato.txtVedi l'allegato Cancella.txt

Scusa che significa quando dici "in teoria (e anche in pratica) ci vorrebbero TUTTI i controlli dei vari input" ??? Cos aintendi per controlli ???
 
Ultima modifica:
ciao
altre correzioni e commenti
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Modifica ed Elimina record</title>
</head>
<body>
<?php
require_once("connetti.php");
require_once("paginaprotetta.php");
require_once("presenta.php");

$cosa=$_GET['cosa'];//ma nella pagina precedente non avevi messo " - <a href=\"pinco_pallo.php?cosa=M&id=".$read['id']."\">Modifica</a>";?
//e per cancellare - <a href=\"pinco_pallo.php?cosa=D&id=".$read['id']."\">Elimina</a>";
//al posto di pinco_pallo il nome di questa pagina (che non mi ricordo)
$id_del_film=$_GET['id'];//**!!** PARLAVO DELLA VARIABILE $id o come è meglio $id_del_film non dell'indice del get
//attento nel submit hai messo value="Modifica" ora Modifica è diverso da modifica, correggi uno dei due (non l'indice del post)
if(isset($_POST['modifica']) && $_POST['modifica']=="modifica"){
	//per controlli intendo (es.) che il campo non sia vuoto o contenga caratteri strani o qualche porcheria
	//probabilmente dovrai mettere $attoreprinc=addslashes($_POST['attoreprinc']); così anche negli altri se hai apostrofi
    $attoreprinc=$_POST['attoreprinc'];
    $titolofilm=$_POST['titolofilm'];
    $raccolta=$_POST['raccolta'];
    $genere=$_POST['genere'];
    $tipodvd=$_POST['tipodvd'];
    $data=$_POST['data'];
    $id_del_film=$_POST['id_m'];//COME HAI CHIAMATO IL CAMPO HIDDEN DEL FORM??? mi sembra id_m !!
    $query="UDPDATE film SET attoreprinc='$attoreprinc', titolofilm='$titolofilm', raccolta='$raccolta', genere='$genere', tipodvd='$tipodvd', data='$data' WHERE id=$id_del_film";//NON IL NOME DEL CAMPO
    var_dump($query);
    $ris=mysql_query($query);
    echo "<h1>record $id_del_film modificato</h1>";
    //la riga sotto la decommenti quando tutto funzia
    //echo '<meta http-equiv=\'Refresh\' content=\'3; URL="inscerca.php"\' />';
}//fine script di modifica

if($cosa=="M"){
    $sql = "SELECT * FROM film where id=$id_del_film";//**!!!*** NON IL NOME DEL CAMPO E POI I DOPPI APICI
    var_dump($id_del_film);
    var_dump($sql);
    $result = mysql_query ($sql);
    $row = mysql_fetch_assoc($result);
    var_dump($row['attoreprinc']);
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
<br> <br> <br>
Attore Principale: <input type="text" name="attoreprinc" value="<?php echo $row['attoreprinc'];?>"> <br> <br>
Titolo Film: <input type="text" name="titolofilm" value="<?php echo $row['titolofilm'];?>"> <br> <br>
Raccolta: <input type="text" name="raccolta" value="<?php echo $row['raccolta'];?>"> <br> <br>
Genere:
<?php
    require_once("arraydiselezione.php");
    echo "<select name=\"genere\">";
    foreach($genere as $chiave => $valore){//ciclo l'array
            $sel="";if($row['genere']==$chiave){$sel=" selected ";}
            echo "<option value=\"$chiave\" $sel>$valore</option>";
    }
    echo "</select>";
?>
<br> <br>
Tipo DvD:
<?php
    echo "<select name=\"tipodvd\">";
    foreach($tipodvd as $chiave => $valore){//ciclo l'array
        $sel="";if($row['tipodvd']==$chiave){$sel=" selected ";}
        echo "<option value=\"$chiave\" $sel>$valore</option>";
    }
    echo "</select>";
?>
<br> <br>
Data: <input type="text" name="data"  value="<?php echo $row['data'];?>">
<!-- ??? id_del_film="id_del_film" ??? non esiste per un campo di input il parametro id_del_film= -->
<input name="id_m" type="hidden" id="id_m" value="<?php echo $id_del_film;?>">
<br> <br> <br> <br>
<center>
<input name="modifica" type="submit" id="modifica" value="Modifica"><!-- !! nel if hai messo =="modifica" ora Modifica != modifica -->
</center>
</form>
<?php
}elseif($cosa=="D"){
    $query_del="DELETE FROM film WHERE id=$id_del_film";//**!!!*** PARLAVO DELLA VARIABILE $id_del_film NON DEL NOME DEL CAMPO
    $ris=mysql_query($query_del);
    echo "<h1>record $id_del_film eliminato</h1>";
    echo '<meta http-equiv=\'Refresh\' content=\'3; URL="inscerca.php"\' />';
}
?>
</body>
</html>
 
Ciao

Perdonami ma sono imbranato :( Migliorerò. Anche perkè non mi arrendo facilmente. Nella mia vita non mi sono mai arreso. Non ci crederai, ma mi da quest'errore ora.:

string(2) "31" string(40) "SELECT * FROM film where id=$id_del_film"
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Archivio\cancella 2.php on line 41
NULL
 
Ultima modifica:
ciao
da qualche parte c'è un errore

string(2) "31" questo è giusto legge l'id del record proveniente dalla pg precedente
string(40) "SELECT * FROM film where id=$id_del_film" questo no, avrebbe dovuto darti

string(28) "SELECT * FROM film where id=31"

anche se non capisco perchè ti risulti
string(40) "SELECT * FROM film where id=$id_del_film"
hai messo i doppi apici " " ?

il Warning è conseguemza del fatto che la $sql contenga "SELECT * FROM film where id=$id_del_film" e non "SELECT * FROM film where id=31"
analogamente per NULL (non fa la query)
 
Ciao

Ciao,

Quindi in pratica mi stai dicendo che c'è un errore nella select se non ho capito male. Non so più dove sbattere la testa :( Oggi lo rivedo un attimo, ma tanto so gi che non ci capirò na mazza .
 
Ciao

Ciao,

Senti piccolo problema, ho cambiato il pc da quello fisso al portatile, perkè sto fuori. Ho copiato la cartela di default my_fabiodefe in xampp, il programa di localhost che adopero. Però non mi ha fatto visualizzare i database che avevo sul fisso :( Tu per caso ne sai qualcosa ???? Se no lascia perdere. Come se non ti avessi chiesto niente.Però considera che fino a domenica non starò sul fisso e non potrò controllare gli errori. Non avendo gli stessi db mi sono sorti altri tipi di errori. Quindi al limite se conosci il programma di localhost e se mi dai una dritta forse riesco a risolvere il problema. Sennò ci sentimo domenica pome. Eventualmente ti lascio un po' di tregua ehehehehe.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili