Creare pagina PHP come quella di phpMyadmin

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Salve,
ho una pagina php che mostra i dati di una tabella mysql (con SELECT).
Per modificare, cancellare o duplicare tali dati uso altrettante pagine php con i comandi (INSERT, DELETE ecc...). Richiamo gli ID con un checkbox.
La domanda è:
sarebbe possibile modificare i campi della tabella direttamente nella pagina nella quale li stampo senza passare dalla pagina "modifica"?
In pratica come posso ricreare la funzione che c'è nel phpmyadmin dove con un doppio clic la cella della tabella diventa un input text.
Spero di essere stato chiaro e scusate la mia totale ignoranza.
Grazie infinite!
 

3_g

Nuovo Utente
5 Set 2017
36
1
8
Ancona
credo che dovresti usare una pagina "multi funzione":eek:... nel senso che la stessa pagina contiene sia il codice per visualizzare i dati... sia quello per la modifica... e con le "strutture di controllo" del codice PHP (IF... ELSE) esegui la parte che ti serve:D
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
intanto ti do uno schema di come potersti fare
PHP:
<!DOCTYPE html>
<head>
<meta  charset=utf-8" />
<title>pagina elimina cancella</title>
</head>
<body>
<?php
if(isset($_POST['vai'])){
    if(!is_array($_POST['mod']) && !is_array($_POST['mod'])){
        echo "non hai scelto cosa fare";
    }else{
        if(is_array($_POST['mod'])){
            foreach($_POST['mod'] as $id =>$val){
                //al posto dell'echo ci sarà la query di modifica
                echo "hai modificato il titolo ".$_POST['titoli'][$id]." con id=$val<br>";
            }
        }
        if(is_array($_POST['del'])){
            foreach($_POST['del'] as $id =>$val){
                //al posto dell'echo ci sarà la query di modifica
                echo "hai eliminato il titolo ".$_POST['titoli'][$id]." con id=$val<br>";
            }
        }
    }
    //e qui un ritorno automatico al form dove i recor eliminati spariscono
    //e quelli modificati si vede la modifica
}


?>
<form action="#" method="post">
<table width="100%" border="4" cellspacing="2" cellpadding="2">
    <tr>
    <td>elemento</td>
    <td>modifica</td>
    <td>elimina</td>
  </tr>
    <!--
    evidente che i dati tabellati scritti nei campi deriveranno da una select e relativo ciclo while
    i numeri nei nomi di campi tipo array sono gli id del record $id
    i valori sono il contenuto di un altro camo $valore_del_campo
    -->
  <tr>
    <td><input name="titoli[1]" type="text" value="pinco si gratta" /></td>
    <td><input type="checkbox" name="mod[1]" value="1" id="mod" /></td>
    <td><input type="checkbox" name="del[1]" value="1" id="del" /></td>
  </tr>
  <tr>
    <td><input name="titoli[33]" type="text" value="pallo ride" /></td>
    <td><input type="checkbox" name="mod[33]" value="33" id="mod" /></td>
    <td><input type="checkbox" name="del[33]" value="33" id="mod" /></td>
  </tr>
  <tr>
    <td><input name="titoli[35]" type="text" value="sofinisba li guarda" /></td>
    <td><input type="checkbox" name="mod[35]" value="35" id="mod" /></td>
    <td><input type="checkbox" name="del[35]" value="35" id="mod" /></td>
  </tr>
  <tr>
    <td><input name="titoli[111]" type="text" value="e attenzio commenta" /></td>
    <td><input type="checkbox" name="mod[111]" value="111" id="mod" /></td>
    <td><input type="checkbox" name="del[111]" value="111" id="mod" /></td>
  </tr>
</table>

<input name="vai" type="submit" value="vai" />
</form>
</body>
</html>
provalo così come è e guarda se capisci cosa intendo
 
Ultima modifica:

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Ciao, grazie mille per la disponibilità!
Ho provato e va un po' oltre le mie già scarse possibilità...ossia lasciamo perdere...;)
Grazie infinite per il consueto preziosissimo aiuto!!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
se posti la struttura della tabella e e i dati che vuoi modificare lo metto giu lo script poi tu eventualmente aggiungi i css per farlo diventare bello
 

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Ciao, sei troppo gentile!
Ecco il codice:
PHP:
<?php
$conn = mysql_connect("localhost","root","");
mysql_select_db("calendariotoscanini",$conn);
$result = mysql_query("SELECT * FROM tcalendario ORDER BY Start_Date ASC, Start_Time ASC");
?>
<html>
<head>
<title>Calendario Toscanini</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script language="javascript" src="pdfs.js" type="text/javascript"></script>
</head>
<body>
<div class="pagina">
<a class="logo" href="index.php"><img src="design/logo5.png" alt="Calendario Toscanini" /></a>
<p class="title">MODIFICA IL PDF</p>
<form name="frmUser" method="post" action="">
<table border="0" cellpadding="10" cellspacing="1" width="1200" class="tblListForm">
<tr class="listheader">
<td colspan="8">
<input type='checkbox' class='checkall' onClick='toggle(this)' />Seleziona tutto
<input type="button" name="update" value="Modifica" onClick="setUpdateAction();" />
<input type="button" name="delete" value="Cancella"  onClick="setDeleteAction();" />
<input type="button" name="aggiungi" value="Aggiungi"  onClick="setAggiungiAction();" />
<input type="button" name="duplicate" value="Duplica"  onClick="setDuplicateAction();" />
<a href="pdfnewclvferrari.php" target="_blank"><img src="design/pdfP.png" alt="PDF"/ align="middle"></a>
<a href="informazioni.php"><img src="design/informazioniP.png" alt="Informazioni" align="middle"></a>
</td>
</tr>
<?php

$sql_avviso  = mysql_query("SELECT * FROM tavviso");
$lignes = mysql_fetch_assoc($sql_avviso)
 
?>       
<tr><td>&nbsp;</td><td>Dal: <?php echo $lignes["dal"]; ?> al <?php echo $lignes["al"]; ?></td></tr>
<tr class="listheader">
<td><img src="design/logo-toscanini.jpg"></td>
<td>Evento</td>
<td>Data</td>
<td>Dalle</td>
<td>Alle</td>
<td>Informazioni</td>
<td>Luogo</td>

</tr>
<?php
$i=0;
while($row = mysql_fetch_array($result)) {
if($i%2==0)
$classname="evenRow";
else
$classname="oddRow";
$time_array = explode(":",$row["Start_Time"]);
$time_array2 = explode(":",$row["End_Time"]);

?>
<tr class="<?php if(isset($classname)) echo $classname;?>">
<td><input type="checkbox" class='checkall' name="id[]" value="<?php echo $row["id"]; ?>" ></td>
<td><input type="text" value="<?php echo $row["Subject"]; ?>"></td>
<td><?php echo implode("-", array_reverse(explode("-", $row["Start_Date"]))); ?></td>
<td><?php echo $ora = $time_array[0] . ":" . $time_array[1]; ?></td>
<td><?php echo $ora = $time_array2[0] . ":" . $time_array2[1]; ?></td>
<td><?php echo $row["Description"]; ?></td>
<td><?php echo $row["Location"]; ?></td>
</tr>
<?php
$i++;
}
?>
<tr class="listheader">
<td colspan="8">
<input type='checkbox' class='checkall' onClick='toggle(this)' />Seleziona tutto
<input type="button" name="update" value="Modifica" onClick="setUpdateAction();" />
<input type="button" name="delete" value="Cancella"  onClick="setDeleteAction();" />
<input type="button" name="aggiungi" value="Aggiungi"  onClick="setAggiungiAction();" />
<input type="button" name="duplicate" value="Duplica"  onClick="setDuplicateAction();" />
<a href="pdfnewclvferrari.php" target="_blank"><img src="design/pdfP.png" alt="PDF" align="middle"></a>
<a href="informazioni.php"><img src="design/informazioniP.png" alt="Informazioni" align="middle"></a>
</td>
</tr>   
</table>
</form>
</div>
<iframe src="pdfnewclvferrari.php" width="1200px" height="1200px"></iframe>
</body></html>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
ho dato un occhio, ma forse non ho capito bene io o forse stai facendo tu un po' di confusione, se hai un po' di pazienza facciamo così:
metto giu una specifica di quello che ho capito che vuoi fare e, se sei daccordo, te la invio alla tua emai in quanto qui verrebbe un discorso troppo lungo.
tra l'altro ho dei dubbi, guardando il tuo script, su come hai strutturato le tabelle del db.
ultima cosa, ma non meno importante, vedo che usi le vecchie istruzioni php tipo mysql_eccetera, non so su che host sei, ma se sei su aruba (dove c'è il mio sito) a breve aggiorneranno php alla versione 5.6 quindi le vecchie istruzioni non sono più supportate e danno errore con conseguente arresto del sito, quindi devi passare alle nuove istruzioni mysqli_eccetera (sono simili, ma quell' i fa la differenza)
postami quindi se sei d'accordo che allora mi metto al lavoro
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
vedo che fai
PHP:
$result = mysql_query("SELECT * FROM tcalendario ORDER BY Start_Date ASC, Start_Time ASC");
quindi è sulla tabella tclendario che vuoi andare ad operare?
cioè modificare o cancellare o duplicare (cosa intendi per duplicare?) un record o più record di quella tabella?
se se è mi serve la sua struttura es
Codice:
id int(xy) autoincrenet primarikey
start_date ? cosa usi varchar? date?//inserite come gg/mm/aaaa ?
start_time varchar? //inserito come h:m ?
end_date
end_time
impegno varchar(250)
//ecc...se ci sono altri campi
e quali campi vuoi eventualmente modificare, tutti o solo alcuni, se alcuni quali?
da questo ti ricavo la disposizione a phpmyadmin
poi come sono inserite le i dati principalmente le date che da quello che ho capito sono inserite es così
10/11/2017 cioe in formato gg/mm/aaaa (o con altro separatore che non importa)
giusto?

se è così, quel formato contiene un 'piccolo' errore:
tu nella query dai l'ORDER BY Start_Date ASC, Start_Time ASC cioè prima gli impegni a scadenza più vicini
ti faccio presente che se hai due impegni una che inizia il 22 novembre e uno l'1 dicembre l'ordine con cui vengono stampati o visualizzati i record è
01/12/2017 .......
22/11/2017 .......
che è errato (i pc sono stupidi) in quanto il confronto tra le date è un confronto tra stringhe e la stringa che inizia per 01 e minore di quella che inizia per 22 e quindi visualizzata/stampata per prima
tieni presente che quando si lavora con le date e relativi intervalli di tempo sono indispensabili opportuni controlli, controlli cosiddette "a prova di stupido".
se non usi tali controlli puoi ottenere un'agenda incasinata che non serve poi a nulla.
ti dico questo perchè stai facendo un lavoro che sarebbe sprecato, pensa se le note di un'opera di verdi fossero messe a caso sullo spartito e non nel loro ordine oppure nella partitura fossero inseriti pezzi di puccini, a che ti servirebbe lo spartito?
 

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Ciao!
Ho provato a inserire 2 impegni nelle date che mi hai scritto come esempio (22/11 e 01/12), ma vengono registrate sul database in ordine corretto, idem nella pagina php...Non capisco dov'è l'errore...
Considera che il calendario in realtà è il google calendar. Il codice php costruisce il file csv con questi campi:
Start_Date, Start_Time, End_Time, Subject, Description, Location,...ecc
Poi importiamo questo csv sul google calendar. Fine della storia. Se l'orchestra si trova a Boston (magari!!!) da un qualsiasi PC o da smartphone si accede al calendar e si compila lì.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
allora credo che ci pensi google calendar a sistemare le date (ma controlla anche l'eventuale accavallamento?), ma sai io sono abituato a fare tutto manina manina senza usare qualcosa di precustituito (o se precustituito è qualcosa che avevo già fatto).
quindi, se ho capito, una volta inserito tutto google calendar ti salva gli impegni su quella tabella?
detto tra noi il processo mi sembra alquanto macchinoso
 

Fabrizio Villa

Utente Attivo
19 Gen 2013
131
0
16
Sicuramente mi sono spiegato male...ma non importa!:):):):)
In realtà è più semplice di come s'immagini. Dovrei fartelo vedere..:):):)
Cmq l'importante è che funzioni perciò non mi stancherò mai di rinnovare i ringraziamenti per l'indispensabile aiuto.
Non essendo io un programmatore probabilmente la mia costruzione ti apparirà un marasma totale. Come se ascoltassi effettivamente un concerto con spartiti di autori diversi mischiati tra loro...capisco!
Però il vantaggio qui è che non c'è pubblico...quindi possiamo fare quello che ci pare! Tanto non lo vede nessuno! L'importante è che funzioni. Se non lo fa...beh...ecco che intervieni tu!;)
Non mi picchiare...