[php]icone funzioni tabelle

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Buonasera a tutti,
sono di nuovo qui a chiedervi un aiutino
Ho creato un motore di ricerca per il mio database ma ora,poichè a fianco ad ogni record trovato ho inserito le 3 icone(modifica,cancella,visualizza) vorrei sapere come posso far si che al click di una delle 3 icone su di una riga(record), questa mi compia l'azione richiesta solo su quella determinata riga.
in poche parole, avrei pensato ad un if che collegherebbe la riga selezionata all'icona di quest'ultima ma le ho provate di tutti i colori.
Potrebbe anche essere usato il metodo della spunta? [Alla spunta di quella determinata riga associo l'id della stessa e quindi nn avrei problemi ad effettualele 3 operazioni]
Il problema che sto riscontrando è proprio nella chiave primaria da utilizzare. Non vorrei mettere nessun menu a tendina per scegliere id o altro campo, mi basterebbe o un check o una spunta.
Confido in voi.
Aspetto vostre notizie
Buona serata
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
potresti fare in questo modo (ometto tutti gli essenziali controlli)
PHP:
<?php
//dati connessione
//query alla tabella
$ris=mysql_query($conn, $query);
echo "<table>";
while($riga=mysql_fetch_assoc($ris)){
    //a titolo di esempio
    $id=$riga['id'];
    $nome=$riga['nome'];
    echo "<tr>";
    echo "<td>$nome</td><td><a href='file.php?m=$id'>mod</a></td><td><a href='file.php?d=$id'>del</a></td><td><a href='file.php?v=$id'>vis</a></td>";
    echo "</tr>";
    
}
echo "</table>";
//...
?>
e la pagina file.php
PHP:
<?php
//essenziali i vari controlli sui get, ma semplifico
//dati di connessione
if(isset($_GET['m']) || isset($_GET['v'])){//modifico o visualizzo il record
    if(isset($_GET['v'])){
        $id=$_GET['v'];
    }else{
        $id=$_GET['m'];
    }
    $riga=mysqli_fetch_assoc(mysqli_query($conn,"SELECT * FROM tabella WHERE id=$id"));
    $nome=$riga['nome'];
    if(isset($_GET['v'])){//visualizzo il record
        echo "<table>>tr><td>$id</td><td>$nome</td></tr></table>";
        //e un link per tornare dove vuoi
    }
    if(isset($_GET['m'])){//visualizzo il form di modifica
        echo "<form action='".$_SERVER['php_self']."' method='post' name='modifica'>";
        echo "<input name='nome' type='text' value='$nome'>";
        echo "<input name='id' type='hidden' value='$id'>";
        echo "<input name='modifica' type='submit' value='m'>";
    }
}
if(isset($_POST['modifica'])){
    $id=$_POST['id'];
    $nome=$_POST['nome'];
    $ris=mysqli_query($conn,"UPDATE tabella SET nome='$nome' WHERE id=$id");
    if($ris){echo "record aggiornato";}else{echo "ERRORE riprova";}
    //e un link per tornare dove vuoi
}
if(isset($_GET['d'])){
    $id=$_GET['d'];
    $ris=mysqli_query($conn."DELETE FROM tabella WHERE id=$id");
    if($ris){echo "record eliminatoo";}else{echo "ERRORE riprova";}
    //e un link per tornare dove vuoi
}
?>
 

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Grazie Borgo per il tuo aiuto.
Ripensandoci stanotte sono riuscito a risolvere 2 dei 3 problemi.
Visualizzazione e Cancellazione funzionano alla perfezione ora mi tocca risolvere l'inghippo della Modifica poichè avrei pensato di utilizzare lo stesso formato della visualizzazione ma aggiungendo a fianco di ogni campo uno vuoto per la modifica

Ti posto il codice per spiegarti meglio:

PHP:
$Query_nome = "SELECT * FROM tabella WHERE id = '$id'";
$rs=mysql_query($Query_nome)
or die("Errore nella query $Query_nome: " . mysql_error());
while ($row=mysql_fetch_array($rs))
{
echo <<<EOM
<form name="nc1" action="mod.php" method="POST">
<p style="text-align: center">ID: <small>$row[id]</small></p>
<p style="text-align: center"><small>$row[owner]</small></p>
<table align='center' border='1' cellpadding='0' cellspacing='0' width='37%'>
        <tr><td width='200'><small><b>Codice Materiale</b></small></td><td width='161' style="text-align: right"><small>$row[cod_mat]</small></td><td><input name="cod_mat" type="text" size="20"></td> </tr>
        <tr><td width='200'><small><b>Descrizione</b></small></td><td width='161' style="text-align: right"><small>$row[descriz]</small></td><td><input name="descriz" type="text" size="20"></td></tr>
</table><hr>
<input type="submit" value="Carica i Dati">
EOM;
}

alla tabella pre-esistente ho aggiunto ad ogni campo un <input name=...> e all'inizio della stessa, un <form...>
Il problema che ho è che quando provo ad inserire un codice materiale, questi non mi si aggiorna ma si azzera su tutti i record.


PHP:
 <?php
session_start();
$ids=$_GET['id'];
.........controlli per la connessione.......
$cod_mat = $_POST['cod_mat'];
    $descriz = $_POST['descriz'];  
    $sql="UPDATE tabella SET cod_mat = '$cod_mat' AND descriz='$descriz' WHERE id='$ids'";
    if($result=mysql_query($sql))
{
    echo "<center><b><br><br><br><br><br>Registrazione effettuata. Esegui nuovo<a href='inserimento.php'> inserimento</a></center></b>";
   }
   else {
   echo "<center><b><br><br><br><br><br>Errore registrazione. Riprovare<a href='inserimento.php'></a></center></b>";
}
?>

spero di esser stato chiaro
 

Allegati

  • Immagine.png
    Immagine.png
    6,5 KB · Visite: 161

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
cosi a naso, intanto è sbagliata le query
PHP:
$sql="UPDATE tabella SET cod_mat = '$cod_mat' AND descriz='$descriz' WHERE id='$ids'";
correggi in
PHP:
$sql="UPDATE tabella SET cod_mat = '$cod_mat', descriz='$descriz' WHERE id='$ids'";
poi aggiungi subito dopo un var_dump per vedere se la query visen scritta come dovrebbe
PHP:
$sql="UPDATE tabella SET cod_mat = '$cod_mat', descriz='$descriz' WHERE id='$ids'";
var_dump($sql);
prova poi sappimi dire
dimenticavo
se l'id è un intero non ci vanno gli apici
.... WHERE id=$ids"
 

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Codice:
string(60) "UPDATE tabella SET cod_mat = 9867979, descriz='' WHERE id=''"

come vedi mi inserisci il dato cod_mat ma non mi trova l'id. Dimenticavo che non è obbligatorio modificare tutti i campi della tabella. Posso scegliere se modificarne uno o tutti.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
guardando meglio il tuo form per la modifica, devo dirti che secondo me c'è un errore concettuale, tu fai tanti form quanti sono i record
tu metti l'echo del form nel while quindi per fare un esempio se hai due record tu ottieni il seguente 'html (tra l'altro senza la chiusura del tag form)
HTML:
<form name="nc1" action="mod.php" method="POST">
<p style="text-align: center">ID: <small>1</small></p>
<p style="text-align: center"><small>PINCO</small></p>
<table align='center' border='1' cellpadding='0' cellspacing='0' width='37%'>
<tr>
<td width='200'><small><b>Codice Materiale</b></small></td>
<td width='161' style="text-align: right"><small>333333</small></td>
<td><input name="cod_mat" type="text" size="20"></td>
</tr>
<tr>
<td width='200'><small><b>Descrizione</b></small></td>
<td width='161' style="text-align: right"><small>VERDE</small></td>
<td><input name="descriz" type="text" size="20"></td>
</tr>
</table><hr>
<input type="submit" value="Carica i Dati">
<!--qui o alla fina manca il tagt </form>-->
<form name="nc1" action="mod.php" method="POST">
<p style="text-align: center">ID: <small>2</small></p>
<p style="text-align: center"><small>PALLO</small></p>
<table align='center' border='1' cellpadding='0' cellspacing='0' width='37%'>
<tr>
<td width='200'><small><b>Codice Materiale</b></small></td>
<td width='161' style="text-align: right"><small>777777</small></td>
<td><input name="cod_mat" type="text" size="20"></td>
</tr>
<tr>
<td width='200'><small><b>Descrizione</b></small></td>
<td width='161' style="text-align: right"><small>ROSSO</small></td>
<td><input name="descriz" type="text" size="20"></td>
</tr>
</table><hr>
<input type="submit" value="Carica i Dati">
<!--chiusura tagt </form>?-->
in questo caso ti ritrovi con due campi che si chiamano emtrambi "cod_mat", due "descriz", due "cod_mat" e due pulsanti di submit anche loro con lo stesso nome, mettiamo che il tutto funzioni, come minimo al submit viene trasmesso slo l'ultimo valore dell'ultimo campo indipendentemente che tu modifichi il primo.
il tutto condito dal fatto che non vedo dove trasmetti il valore dell'id (che risulta vuotoi nella query di upp) e da dove salti fuori quel
$ids=$_GET['id'];
quindi o usi il metodo che ti ho postato se vuoi usare il form devi modificare il tutto (se hai pazienza con calma) ti butto giù un esempio
 

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Grazie sempre per la disponibilità.
Accetto con piacere il tuo aiuto e attenderò il tuo esempio in modo da studiarlo e capire gli errori e le possibili modifiche.
Purtroppo il php è un linguaggio che sto imparando da solo e una "mano" come quella che mi stai dando è davvero ben accetta.
Grazie ancora
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ti schematizzo, poi css tabelle e mettere tutto in php ci pensi tu
form di modifica:
PHP:
<?php
//dati connessione
$ris=mysqli_query($conn,"SELECT * FROM tabella");
?>
<form name="nc1" action="mod.php" method="POST">
<?php
while($riga=mysqli_fetch_assoc($ris)){
    $id=$riga['id'];
    $owner=$riga['owner'];
    $cod_mat=$riga['cod_mat'];
    $descriz=$riga['descriz'];
    //devi trasmettere anche ownwr?
    echo "<input name='id[]' type='text' value='$id' readonly>";//non modificabile: readonly
    echo "<input name='cod_mat[]' type='text' value='$cod_mat'>";//modificabile
    echo "<input name='descriz[]' type='text' value='$descriz'>";//modificabile
  
}
?>
<input name="m" type="submit" value="m">
</form>
file mod.php
PHP:
//dati connessione
$num_rec=count($_POST['id']);//i vari $_POST sono array di array avendo mess (es.) name='id[]'
for($k=0;$k<$num_rec;$k++){
    $id=$_POST['id'][$k];
    $cod_mat=$_POST['cod_mat'][$k];
    $descriz=$_POST['descriz'][$k];
    $sis=mysqli_query($conn,"UPDATE tabella SET cod_mat='$cod_mat', descriz='$descriz' WHERE id=$id");
    //NOTA: mysql non uppa i campi se vede che i valori dei campi sono uguali a quanto inputato
   //quindi no te preocupe se li passi tutti
}
//e link di ritorno
in questo modo puoi uppare più record contemporaneamente

un suggerimento soprattutto se il lavoro che stai fadendo è importante e deve durare nel tempo: passa alle nuove istruzioni mysqli
 

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Grazie ancora ma nada.
Se inserisco solo il cod_mat mi da come risultato string(58) "UPDATE tabella SET cod_mat='4546', descriz='1' WHERE id=68"
Stavo pensando se fosse possibile inserire un bottone di fianco ad ogni campo che se clikkato questi mi rimanda ad una funzione del tipo mod.php?campo=$cod_mat
mod.php?campo=$descriz
ecc...
oppure inserire qualche if di controllo
if(is_null($cod_mat){
cod_mat dovrebbe essere linkato al vecchio cod_mat preso dalla tabella
così come descriz
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
scusa ma non capisco bene cosa intendi, con lo script che ho postato se ad es. inizialmente hai tre record
Codice:
id    cod_mat    descrizione
60    11111    verde
61    22222    rosso
62    33333    turchino
e vai sul form di modifica vedrai i record (vedi fig. 1)

ora gli unici valori che puoi modificare sono il cod_mat e/o la descrizione
se decidi di modificare la descrizione del record id=61 es. da "rosso" a "a pallini" l'unica cosa che si modifica è il campo descrizione, quindi ti troverai dopo il submit
Codice:
61    22222    a pallini
tornando al form vedrai come fig. 2
se tu avessi modificato anche il codice (prima del sub) o anche un altro record ne form di modifica e in tabella troverai le modifiche fatte
form_modifica.jpg
 

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Buongiorno,
con quel semplice form se ho capito bene mi creo una tabella di record modificabili ? Quindi alla pressione del tasto m avvieremo la query di update?
In questo modo salterei il passaggio di linkare un bottone dalla tabella di ricerca ad un form di modifica effettuando tutti i comandi direttamente dalla tabella iniziale con la.semplice pressione dei bottoni ? (io invece di un form ho linkato mod?id=$id )
Grazie per l'aiuto
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
si, ti presenta i record inizialmente con i valori che sono in tabella, se ne modifichi uno (o più) ti aggiorna i relativi campi/record
si si evita il link
evidentemente se dopo una modifica torni al form ti riporta il valore dopo la modifica (il/i record/s sono stati uppati)
 

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
48
Grazie per la tua collaborazione/aiuto.
Sono riuscito a scrivere un codice in php abbastanza funzionale.
Ora sto passando al secondo step: trasformare queste maschere in un vero e proprio software, magari in java.
 
Discussioni simili
Autore Titolo Forum Risposte Data
D [WordPress] [PHP] icone distanziate su Iphone x WordPress 2
Fuego2806 [PHP] Icone template - index.php PHP 2
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 0
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14
N file manager da php 5 a 7 PHP 15
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11

Discussioni simili