[php]icone funzioni tabelle

niuzz0

Nuovo Utente
3 Nov 2016
12
0
1
51
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.046
150
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
51
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: 307

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
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
51
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.046
150
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
51
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.046
150
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
51
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.046
150
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
51
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.046
150
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
51
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10

Discussioni simili