aiuto per Form di eliminazione record

  • Creatore Discussione Creatore Discussione Bertolo
  • Data di inizio Data di inizio

Bertolo

Nuovo Utente
6 Ago 2013
13
0
0
Buongiorno a tutti ragazzi,

sono nuovo dell'ambiente php e stavo partendo proprio basilarmente facendo dei semplici scrip per selezione , modifica e eliminazione.
Mi sono inceppato proprio qui alla base ;) nell'eliminazione del record.
Vi posto tutto nel caso mi possiate essere di aiuto:

-Questa è la pagina di selezione:

HTML:
<html>
<body>
<h1>ricerca scatole</h1>
<form action="elimina-modifica.php" method="post">

Azienda: <input type="text" name="azienda" /><br><br>
Codice: <input type="text" name="codice" /><br><br>

<input type="submit" name="registra" value="cerca"/>
</form>
</body>
</html>


-Dopodiché passo allo script dove vedo le mie selezioni con il click su elimina e modifica per ogni record:

PHP:
<?php
    $host = '127.0.0.1';
    $user = 'root';
    $password = 'ciccio90';
    $database = 'umberto';
 
    $db = mysql_connect($host, $user, $password)
    or die ("Impossibile connettersi al server $host");

    mysql_select_db($database, $db)
    or die ("Impossibile trovare databse $database");
        $azienda = trim($_POST['azienda']); 
        $codice = trim($_POST['codice']); 
        $we=" WHERE 1=1";
        if($azienda!= ""){$we.= " AND azienda = '$azienda'";} 
        if($codice != ""){$we.= " AND codice = '$codice'";} 
       
          $query = "select azienda, id, codice, conto from rientro $we";
           $dbresult = mysql_query($query, $db);
          $Arows = mysql_affected_rows($db);

        print "<table border=\"1\">\n";
        for ($index=0; $index<$Arows ; $index++)
       {
             $row=mysql_fetch_row($dbresult);
             if($index==0)
             {
                 print "<tr>\n";
                 foreach ($row as $k => $v)
                 {
                    $myfield = mysql_fetch_field($dbresult,$k);
                    print ("<td><b>"  . $myfield->name . "</b></td>");
                 }
                  print "</tr>\n";
              }
              
              foreach ($row as $k => $v)
              {
                  print ("<td>$v&nbsp;");
                  if ($k==0)
                  {
                      print "<br>";
                      print "<a href=\"cancella.php?id=$v\">cancella</a>";

                      print "<br>";
                      print "<a href=\"modifica.php?id=$v\">modifica</a>";
                   }
                   print ("</td>");
               }
               print "</tr>\n";
         }
      print "</table>\n";
    mysql_free_result($dbresult);
    mysql_close($db)
   ?>

-Fin qua penso di esserci arrivato....cliccato su cancella mi si dovrebbe aprire una pagina dove mi chiede se sono sicuro di voler eliminare e qui trovo l'intoppo.
Ho provato con questo ma non mi riconosce la $confirm (mi è stato detto di usarla ma io do ragione alla libreria php perché non saprei come associarla al tasto
Conferma:crying:)

PHP:
<?php
   
    $host = '127.0.0.1';
    $user = 'root';
    $password = 'ciccio90';
    $database = 'umberto';
 
    $confirm=$_REQUEST['confirm'];
    $id=$_REQUEST['id'];

    if ($confirm)
    {
       $db = mysql_connect($host, $user, $password)
    or die ("Impossibile connettersi al server $host");

    mysql_select_db($database, $db)
    or die ("Impossibile trovare databse $database");

       $query = "delete from rientro where id=$id";
       $dbresult = mysql_query($query, $db);
       $Arows =mysql_affected_rows($db);
       
       if ($Arows==0)
       {
         print("<h3>non esistono  record con i criteri selezionati</h3>");
       }
        else
       {
         print("<h3>Il record è stato eliminato<h3>");
         print("<h3><a href=\"elimina-modifica.php\">Torna alla lista</a></h3>");
       }


          mysql_close($db);
          }
          else
          {
             print("<h3>Eliminare il record?</h3>");
             print("<h3><a href=\"{$_SERVER['PHP_SELF']}?id=$id&confirm=1\">Conferma</a></h3>");
             print("<h3><a href=\"elimina-modifica.php\">Annulla</a></h3>");
            }
          ?>
       </body>



Spero di non aver creato caos e spero mi possiate aiutare,

Buonagiornata!
 
Ultima modifica di un moderatore:
ciao
prova così al massimo non funzia
PHP:
<?php
$id=$_GET['id'];
if (isset($_GET['confirm']) && $_GET['confirm']==1){
	require_once "connessione.php";//vedi quanto ti dico sotto
	$id=$_GET['id_d'];//ti conviene per sicurezza cambire nome al get
	$query = "DELETE FROM rientro WHERE id=$id";
	$dbresult = mysql_query($query, $db);
	//$Arows =mysql_affected_rows($db);
	if (!$dbresult){
		 print("<h3>non esistono  record con i criteri selezionati</h3>");
	}else{
		print("<h3>Il record è stato eliminato<h3>");
	}
	print("<h3><a href=\"elimina-modifica.php\">Torna alla lista</a></h3>");
}else{
	print("<h3>Eliminare il record?</h3>");
	print("<h3><a href=\"{$_SERVER['PHP_SELF']}?id_d=$id&confirm=1\">Conferma</a></h3>");
    print("<h3><a href=\"elimina-modifica.php\">Annulla</a></h3>");
}
?>
poi fatti un file php a parte chiamato es. connessione.php
PHP:
<?php
$host = '127.0.0.1';
$user = 'root';
$password = 'ciccio90';
$database = 'umberto';
$db = mysql_connect($host, $user, $password)
or die ("Impossibile connettersi al server $host");
mysql_select_db($database, $db)
or die ("Impossibile trovare databse $database");
?>
e usi lo includi, anche nell'altra parte dove fai la SELECT

p.s.
quando scrivi cìdel codice usa gli apposiyti tag, seconda riga formattazione del post ultime tre iconcine,
nell'ordine CODE, HTML, PHP
 
Ciao Borgo!

beh a parte che mi dice che mi da un errore sul GET riferito all' id cioe' che non riesce a identificarlo ...ma funziona!

Se magari sapessi dirmi come risolvere se no gli dico semplicemente di non farmi vedere gli errori (da vero nabbo:elvis:)

Ti ringrazio tantissimo....hai un fun in piu' adesso!!!!
 
ciao
ho capito
correggi
PHP:
<?php
$id=$_GET['id'];
if (isset($_GET['confirm']) && $_GET['confirm']==1){
    require_once "connessione.php";//vedi quanto ti dico sotto
    $id=$_GET['id_d'];//ti conviene per sicurezza cambire nome al get 
	//...ecc...
?>
in
PHP:
<?php
iff(isset($_GET['id'])){$id=$_GET['id'];}
if (isset($_GET['confirm']) && $_GET['confirm']==1){
    require_once "connessione.php";//vedi quanto ti dico sotto
    $id=$_GET['id_d'];//ti conviene per sicurezza cambire nome al get 
	//...ecc...
?>
 
ciao
ho capito
correggi
PHP:
<?php
$id=$_GET['id'];
if (isset($_GET['confirm']) && $_GET['confirm']==1){
    require_once "connessione.php";//vedi quanto ti dico sotto
    $id=$_GET['id_d'];//ti conviene per sicurezza cambire nome al get 
	//...ecc...
?>
in
PHP:
<?php
if (isset($_GET['id'])){$id=$_GET['id'];}
if (isset($_GET['confirm']) && $_GET['confirm']==1){
    require_once "connessione.php";//vedi quanto ti dico sotto
    $id=$_GET['id_d'];//ti conviene per sicurezza cambire nome al get 
	//...ecc...
?>

grazie tutto ok penso di aver anche mezzo capito perche'...cmq mi sai consigliare qualche discussione ,visto che ho creato oltre al tasto elimina anche quello modifica, dove posso prendere qualche spunto per fare uno script di modifica: in modo che possa visuallizzare i dati del record e modificarli ?

grazie!!
 
ciao
ci deve essere qualche 3d in giro. se lo ritrovo ti posto il link.
intanto ti do un'indicazione
1) ricevi l'id come per il delete
2) fai la query e con i valori estratti riempi i value di un form (tanti campi di input quanti sono i dati soggetti a modifica)
2a) ritrasmetti l'id con un campo hidden (oppure usi le sessioni)
3) al subim ricevi i dati ($_POST)
4) LI VERIFICHI: E' IMPORTANTE
5) fai la query di UPP e torni alla ricerca
 
ciao
ci deve essere qualche 3d in giro. se lo ritrovo ti posto il link.
intanto ti do un'indicazione
1) ricevi l'id come per il delete
2) fai la query e con i valori estratti riempi i value di un form (tanti campi di input quanti sono i dati soggetti a modifica)
2a) ritrasmetti l'id con un campo hidden (oppure usi le sessioni)
3) al subim ricevi i dati ($_POST)
4) LI VERIFICHI: E' IMPORTANTE
5) fai la query di UPP e torni alla ricerca


Grazie a brevissimo ci provo, ho i miei dubbi sulla riuscita ma senza provarci non si va avanti !
 
Ciao, per chiedere la conferma puoi usare la funzione confirm() di javascript
PHP:
print "<a onclick=\"if(!confirm('Sei sicuro?'))return false;\" href=\"cancella.php?id=$v\">cancella</a>";
 
modifica!

ciao
ci deve essere qualche 3d in giro. se lo ritrovo ti posto il link.
intanto ti do un'indicazione
1) ricevi l'id come per il delete
2) fai la query e con i valori estratti riempi i value di un form (tanti campi di input quanti sono i dati soggetti a modifica)
2a) ritrasmetti l'id con un campo hidden (oppure usi le sessioni)
3) al subim ricevi i dati ($_POST)
4) LI VERIFICHI: E' IMPORTANTE
5) fai la query di UPP e torni alla ricerca

Ciao!

Sono arrivato a un altro punto morto...praticamente ho scritto lo script qua sotto che mi da la possibilita' di aggiornare dei dati a seconda direttamente senza farmi vedere quelli che sono presenti nei record.
Praticamente nel pezzo html in fondo se mettessi anche il campo ID mi modificherebbe, ma non so come fare per prendere farmi gia' mettere i dati nelle caselle per poi andarle a modificare e aggiornarle.
aiuto!:cool:
PHP:
<html>
 <head>
  <title>modifica record</title>
 </head>
 <body>

<?php 
if (isset($_GET['id'])){$id=$_GET['id'];} 
if(isset($_POST['aggiorna'])){
    require_once "connessione.php"; 
    $id=$_GET['id_d'];

    $azienda = $_POST['azienda'];
    $codice = $_POST['codice'];
    $conto = $_POST['conto'];

    $sql = "UPDATE rientro".
           "SET azienda = $azienda , codice = $codice , conto = $conto".
           "WHERE id_d = $id" ;
    $risultato = mysql_query( $sql, $conn);
if(! $risultato)

{
die('Non riesco ad aggiornare i dati :' . mysql_error());
}
echo "Dati aggiornati con successo\n";
mysql_close($conn);
}
else
{
?>


<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Azienda</td>
<td><input name="azienda" type="text" id="azienda"></td>
</tr>
<tr>
<td width="100">Codice</td>
<td><input name="codice" type="text" id="codice"></td>
</tr>
<tr>
<td width="100">Conto</td>
<td><input name="conto" type="text" id="conto"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="aggiorna" type="submit" id="aggiorna" value="aggiorna">
</td>
</tr>
</table>
</form>
<?php
}
?>

       </body>
</html>
 
ciao
intanto il form
PHP:
<?php
//...
}
else
{//la tabella si chiama rientro?
	$query=mysql_query("SELECT * FROM rientro WHERE id=$id");
	$riga=mysql_fetch_array($query);
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input name="id" type="hidden" value="<?php echo $id;?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Azienda</td>
<td><input name="azienda" type="text" id="azienda" value="<?php echo $riga['azienda'];?>"></td>
</tr>
<tr>
<td width="100">Codice</td>
<td><input name="codice" type="text" id="codice" value="<?php echo $riga['codice'];?>"></td>
</tr>
<tr>
<td width="100">Conto</td>
<td><input name="conto" type="text" id="conto" value="<?php echo $riga['conto'];?>"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="aggiorna" type="submit" id="aggiorna" value="aggiorna">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>

verifica che in $riga['aaaa'] abbia messo giusto i nomi dei campi come hai in tabella azienda
ricorda che le istruzioni php devono terminare sempre con un ;
nota che ti ho aggiunnto un campo hidden per trasmetter l'id che poi preleverai con un _POST
 
Ultima modifica:
ciao
intanto il form
PHP:
<?php
//...
}
else
{//la tabella si chiama rientro?
	$query=mysql_query("SELECT * FROM rientro WHERE id=$id");
	$riga=mysql_fetch_array($query);
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input name="id" type="hidden" value="<?php echo $id;?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Azienda</td>
<td><input name="azienda" type="text" id="azienda" value="<?php echo $riga['azienda'];?>"></td>
</tr>
<tr>
<td width="100">Codice</td>
<td><input name="codice" type="text" id="codice" value="<?php echo $riga['codice'];?>"></td>
</tr>
<tr>
<td width="100">Conto</td>
<td><input name="conto" type="text" id="conto" value="<?php echo $riga['conto'];?>"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="aggiorna" type="submit" id="aggiorna" value="aggiorna">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>

verifica che in $riga['aaaa'] abbia messo giusto i nomi dei campi come hai in tabella azienda
ricorda che le istruzioni php devono terminare sempre con un ;
nota che ti ho aggiunnto un campo hidden per trasmetter l'id che poi preleverai con un _POST

Grazie Borgo!


mysql_fetch_array() expects parameter 1 to be resource, boolean given .....mi da questo errore, ho provato a mettere un mysql_assoc dove si da il $riga ma nn mi funzia.
 
ciao
metti un vardump e posta quello che riporta

PHP:
<?php
//...
}
else
{//la tabella si chiama rientro?
    $query=mysql_query("SELECT * FROM rientro WHERE id=$id");
    var_dump($query);
	//.....
?>
 
ciao
la
PHP:
$query=mysql_query("SELECT * FROM rientro WHERE id=$id");
è sintatticamente corretta, anche perche più semplice di così.
allora l'errore è
o nella tabella:
si chiama rientro? attento deve essere uguale comprese maiuscole/minuscole
il campo si chiama id? come sopra
hai messo i dati di connessione?
il campo idi è primary key autoincrement?
verifica anche con un echo $id il suo valore
dimenticavo:
guarda che devi accedere alla pagina dalla pagina in cui scegli cosa amodificare altrimenti $id è NULL
 
Ultima modifica:
ciao
la
PHP:
$query=mysql_query("SELECT * FROM rientro WHERE id=$id");
è sintatticamente corretta, anche perche più semplice di così.
allora l'errore è
o nella tabella:
si chiama rientro? attento deve essere uguale comprese maiuscole/minuscole
il campo si chiama id? come sopra
hai messo i dati di connessione?
il campo idi è primary key autoincrement?
verifica anche con un echo $id il suo valore
dimenticavo:
guarda che devi accedere alla pagina dalla pagina in cui scegli cosa amodificare altrimenti $id è NULL

allora l'id mi viene fuori facendo l'echo,
la tabella si chiama rientro e il campo id è primary key auto_increment.

è l'array che mi da questo errore:
: mysql_fetch_array() expects parameter 1 to be resource,
 
per echo $azienda non trova valori pero'...si vede che non sono riuscito a assegnarli
 
allora ho usato una scrittura semplice

PHP:
<html>
 <head>
  <title>modifica record</title>
 </head>
 <body>

<?php 
if (isset($_GET['id'])){$id=$_GET['id'];}

                         

    require_once "connessione.php"; 
    $id=$_GET['id'];

    

   


    $query=mysql_query("SELECT * FROM rientro WHERE id=$id");
    $riga=mysql_fetch_array($query);
?>


<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<input name="id" type="hidden" value="<?php echo $id;?>"> 
<table width="400" border="0" cellspacing="1" cellpadding="2"> 
<tr> 
<td width="100">Azienda</td> 
<td><input name="azienda" type="text" id="azienda" value="<?php echo $riga['azienda'];?>"></td> 
</tr> 
<tr> 
<td width="100">Codice</td> 
<td><input name="codice" type="text" id="codice" value="<?php echo $riga['codice'];?>"></td> 
</tr> 
<tr> 
<td width="100">Conto</td> 
<td><input name="conto" type="text" id="conto" value="<?php echo $riga['conto'];?>"></td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> </td> 
</tr> 
<tr> 
<td width="100"> </td> 
<td> 
<input name="aggiorna" type="submit" id="aggiorna" value="aggiorna"> 
</td> 
</tr> 
</table> 
</form> 


       </body>
</html>

e mi restituisce i valori giusti nelle determinate caselle ovviamente..cosa dici che dovrei fare per aggiornare i dati cambiandoli nelle caselle?
 
ciao
prova così
PHP:
<html>
<head>
<title>modifica record</title>
</head>
<body>
<?php 
require_once "connessione.php"; 
if (isset($_GET['id'])){$id=$_GET['id'];} 
if(isset($_POST['aggiorna'])){
	//questi dati andrebbero validati prima di inseririli nel db
    $id=$_POST['id'];//togli il  $id=$_GET['id_d']; 
    $azienda = $_POST['azienda'];
    $codice = $_POST['codice'];
    $conto = $_POST['conto'];
    //se non funzia metti anche qui i vardump come nella query di select
	$sql = "UPDATE rientro SET azienda = $azienda , codice = $codice , conto = $conto WHERE id = $id" ;
    $risultato = mysql_query($sql);
	if(! $risultato){
		echo 'Non riesco ad aggiornare i dati :' . mysql_error());
	}else{
		echo "Dati aggiornati con successo\n";
	}
	//e con questa riinvii in automatico alla pag che vuoi dopo 4 sec per far leggere il messaggio
	echo "<meta http-equiv='Refresh' content='4; URL=nome_pagina_a_cui_vuoi_rinviare.php'>";
	//mysql_close($conn); non serve ci pensa php a farlo quando serve
}else{
	$query_str="SELECT * FROM rientro WHERE id=$id"
	echo "<pre>";//se funzia gli echo pre e i var dump li togli o li commenti
	var_dump($query_str);//out es.: string(nn) "SELECT * FROM rientro WHERE id=33
	$query=mysql_query($query_str);
	var_dump($query);//out: RESOURCE se ok - boll false se ko
	echo "</pre>";
	$riga=mysql_fetch_array($query);
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input name="id" type="hidden" value="<?php echo $id;?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Azienda</td>
<td><input name="azienda" type="text" id="azienda" value="<?php echo $riga['azienda'];?>"></td>
</tr>
<tr>
<td width="100">Codice</td>
<td><input name="codice" type="text" id="codice" value="<?php echo $riga['codice'];?>"></td>
</tr>
<tr>
<td width="100">Conto</td>
<td><input name="conto" type="text" id="conto" value="<?php echo $riga['conto'];?>"></td>
</tr>
<td width="100">&nbsp;</td>
<td align="right"><input name="aggiorna" type="submit" id="aggiorna" value="aggiorna"></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
per aggiornare basta sovrascrivere il dato della casella di input e poi il submit, pero lggi il commento sui dati
poi mi sai dire
 

Discussioni simili