problema input e echo più linee di una tabella mysql

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
Buona sera, mi scuso per il disturbo, premetto che sono inesperto nel php ma ho creato insieme all'aiuto di due amici un gestionale per il mio centro addestramento. Funziona tutto a dovere, un sito semplice semplice che non deve fare grandi cose, ma c'è un problema che sembra molto difficile da sormontare.
Ho nel mio database mysql una tabella chiamata
attivita e questa tabella ha 4 colonne

id | IDCane | attivita | data

io dovrei fare un modo che mi compaiano tutte le attivita e data con lo stesso IDCane e che siano editabili.
Ad esempio
Attività: [attività già presente nel database ma editabile]
Data: [data già inserita ma editabile]
Attività: .....
Data: ....
Attività:...
Data:....
In pratica tutte le attività per quello specifico IDCane che può essere una o che possono essere anche 200

Incollo qui il codice che però mi stampa e rende editabile solo la prima attività e la prima data di IDCane

PHP:
<?php session_start(); ?>

<?
	if ((!isset($_SESSION['login'])))
        {
?>
            <script type="text/javascript">location.href="index.php"</script>
<?	
	}
        //includo la configurazione del database
	include("connection.php");
?>

<?

 
// crea il form di modifica record
// dal momento che questo modulo è utilizzato più volte in questo file, ho fatto una funzione facilmente riutilizzabile
function renderForm($IDCane, $attivita, $data, $error)
{
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/style.css" />
    </head>
    <body>
        <br /><br />  
        <center>
        <div id="boxAdmin">
            <br />
            <img src="image/logo.png" width="100px" />
            <br /><br /><br /><br />
            <fieldset style="width:800px; border: 0;">
            <table border="0" width="800px">
                <tr>
                    <td align="left"><a href="admin.php">homepage</a> > lista clienti</a></td>
                    <td align="right"><a href="admin.php">Indietro</a></td>
                </tr>
            </table>
            <br /><br /><br />
            <table align="left" border="0" width="800px" cellpadding="0px" cellspacing="0px">
<?
// se ci sono errori, vengono visualizzati
if ($error != '')
{
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
}
?>
 
<form action="" method="post">
<input type="hidden" name="IDCane" value="<?php echo $IDCane; ?>"/>
<div>
<p><strong>IDCane:</strong> <?php echo $IDCane; ?></p>
<strong>attivita: </strong> <input type="text" name="attivita" value="<?php echo $attivita; ?>"/><br/> <br/>
<strong>Data: </strong> <input type="text" name="attivita" value="<?php echo $data; ?>"/><br/><br/>     
                             
<input type="submit" name="submit" value="Invia">
</div>
</form>
</body>
</html>
<?
}
 
 
// verifica se il modulo è stato inviato. Se lo è, inizia a elaborare il modulo e lo salva nel database
if (isset($_POST['submit']))
{
// verificare che il valore di 'IDCane' sia un intero valido prima di ottenere i dati del modulo
if (is_numeric($_POST['IDCane']))
{
// ottenere i dati del modulo e verific che siano valIDCanei
$IDCane = $_POST['IDCane'];
$attivita = mysql_real_escape_string(htmlspecialchars($_POST['attivita'])); 
$data = mysql_real_escape_string(htmlspecialchars($_POST['data'])); 


{
// salva i dati nel database
mysql_query("UPDATE attivita SET IDCane='$IDCane', attivita='$attivita', data='$data' WHERE IDCane='$IDCane'")
or die(mysql_error());
 
// una volta salvato, si viene reindirizzati alla pagina di visualizzazione
header("Location: lista-cliente.php");
}
}
else
{
// Se l' 'IDCane' non è valido, viene visualizzato un errore
echo 'Error!';
}
}
else
// se il kodulo non è stato inviato, ottengo i dati dal db e visualizzare il modulo
{
 
// ottiene il valore 'IDCane' dall'URL (se esiste), assicurandosi che sia valIDCaneo (controlla che sia numerico/maggiore di 0)
if (isset($_GET['IDCane']) && is_numeric($_GET['IDCane']) && $_GET['IDCane'] > 0)
{
// query db
$IDCane = $_GET['IDCane'];
$result = mysql_query("SELECT * FROM attivita WHERE IDCane=$IDCane")
or die(mysql_error());
$row = mysql_fetch_array($result);
 
// verifica che l' 'ID' corrisponda a una riga nel database
if($row)
{
 
// ottiene i dati dal db
$IDCane = $row['IDCane'];
$attivita = $row['attivita'];
$data = $row['data'];

 
// visualizza il modulo
renderForm($IDCane, $attivita, $data);
}
else
// se non corrisponde visualizza il risultato
{
echo "Nessun risultato!";
}
}
else
// se l' 'IDCane' nell'URL non è valido, o se non vi è alcun valore di 'IDCane', visualizza un errore
{
echo 'Errore!';
}
}
?>
 
Ultima modifica di un moderatore:

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
modatt.jpg
Ho allegato foto per farvi capire cosa esce fuori con ciò che ho creato. Solo che è incompleto in quanto ci sono altre 4 attività con 4 rispettive date nella tabella attività che non legge.
In più se vado a modificare il primo campo, e schiaccio invia (per confermare) nel database mi cancella tutte le attività di quell'IDCane nel caso specifico IDCane 33 e mi sposta tutte le date su attività.
Spero di essere stato chiaro.
 
Ultima modifica:

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Ciao H3yB0y,
se ho ben capito quello che intendi fare, ho realizzato qualcosa di simile: se mi dai un po' di tempo faccio qualche prova e poi ti dico. Intanto io metterei un messaggio per l'utente indicante il numero totale di attività per quel cane e il nr. di quell'attività (es.: Attività 2 di 4 o 2/4). Poi darei la possibilità all'utente di andare avantoi e indietro tra le varie attivirtà. Faccio qualche prova e ti faccio sapere. A presto:byebye::byebye:



Zorro
 

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
Ciao H3yB0y,
se ho ben capito quello che intendi fare, ho realizzato qualcosa di simile: se mi dai un po' di tempo faccio qualche prova e poi ti dico. Intanto io metterei un messaggio per l'utente indicante il numero totale di attività per quel cane e il nr. di quell'attività (es.: Attività 2 di 4 o 2/4). Poi darei la possibilità all'utente di andare avantoi e indietro tra le varie attivirtà. Faccio qualche prova e ti faccio sapere. A presto:byebye::byebye:



Zorro
Dicamo che io ho questa situazione completa. Dove allego foto.
Ho una lista di tutti i cani che vengono al centro addestramento, su quella schermata ho un tasto elimina ed un tasto modifica. Cliccando su modifica si apre un altra schermata dove posso modificare i campi che ho inserito all'aggiunta del cane. Sotto a programma dovrebbero comparire anche tutte le attività da poter modificare. Io lo dovrei implementare sulla modifica del cane (ho estrapolato il codice per rendere più chiaro ciò di cui avevo bisogno). Se è poi troppo complicato lo metto separato aggiungendo un altro tasto magari chiamato modifica attività.
Anche perchè tutto ciò che è presente ora su modifica cane viene da una tabella del db che si chiama "cane" , mentre le attività sono in un altra tabella del db che si chiama "attivita" quindi avrei bisogno di fare più query a due tabelle separate nello stesso file php.
Spero di essere stato chiaro, purtroppo sono un autodidatta, molto arrugginito e non espertissimo in php.
Rimetto mano ad un codice php dopo 6 anni di "pausa" , tanto è il tempo che ho deciso di smettere con l'informatica e dedicarmi ai cani all'aria aperta. :eek::mavieni:
Grazie mille per l'interessamento, purtroppo sono giorni e notti che cerco googlando ma non sono riuscito a trovare nulla che facesse al caso mio. Ho trovato qualcosa che spiegava di farlo con gli array ma non sono riuscito a farlo funzionare, anche perchè non ho ben capito qual'è precisamente il loro utilizzo.
listacane.jpgmodcane.jpg
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Ciao H3yB0y,
ho fatto qualche prova e ti posto il codice.
Ho creato du tabelle di prova: una (CANI) composta da 4 record e 2 campi: IDCane e CANE e una ATTI con 4 campi: IDAtti, IDCane, ATTIVITA'e DATA. Poi ho creato 4 script php: uno che legge la prima tabella (leggicani.php) che ti da l'elenco ddei cani; un alro (leggiatti.php) che ti da l'elenco delle attività per quel cane; un terzo che permette la modifica dell'attività ed infine un quarto che registra le modfiche.

LEGGICANE.PHP

PHP:
<?php

//connessione al server DB
$link_connessione=mysql_connect("localhost","............",".........") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db("...........", $link_connessione) or die ("Database inesistente!");

//Visualizzazione dei record di una tabella
$query="SELECT * FROM CANI";
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

echo '<table border="0">';
echo '<tr>';
echo '    <td width="40" height="50">ID</td>';
echo '    <td width="140">CANE</td>';

//Esecuzione della query
while ($riga=mysql_fetch_array($tabella)) {
       $idcane=$riga['ID'];
       $nome=$riga['NOME'];
                   
       echo '<tr>';
       echo '    <td>'.$idcane.'</td>';
       echo '    <td>'.$nome.'</td>';
       echo '    <td><a  href="leggiatti.php?idcane='.$idcane.'">Elenca attivita\'</a></td>';
       echo '</tr>';
}
echo '</table>';

?>


LEGGIATTI.PHP


PHP:
<?php

$idcane = $_GET['idcane'];
echo 'id passato: '.$idcane;

//connessione al server DB
$link_connessione=mysql_connect("localhost","............","") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db("..............", $link_connessione) or die ("Database inesistente!");

//Visualizzazione dei record di una tabella
//$query="SELECT * FROM ATTIVITA' where ID_Cane == $idcane";
$query="SELECT * FROM ATTI WHERE ID_Cane = $idcane";
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

echo '<table border="0">';
echo '<tr>';
echo '    <td width="120" height="50">ID_Cane</td>';
echo '    <td width="120">ID_Activity</td>';
echo '    <td width="300">ATTIVITA\'</td>';
echo '    <td width="140">DATA</td>';

//Esecuzione della query
while ($riga=mysql_fetch_array($tabella)) {
       $idatti=$riga['ID_atti'];
       $idcane=$riga['ID_Cane'];
       $activity=$riga['ATTIVITA\''];
       $data=$riga['DATA'];
                   
       echo '<tr>';
       echo '    <td>'.$idcane.'</td>';
       echo '    <td>'.$idatti.'</td>';
       echo '    <td>'.$activity.'</td>';
       echo '    <td>'.$data.'</td>';
       echo '    <td><a href="modify.php?idatti='.$idatti.'&idcane='.$idcane.'&attivita='.$activity.'&data='.$data.'">Modifica attivita\'</a></td>';
       echo '</tr>';
}
echo '</table>';

?>



MODIFY.PHP

PHP:
<?php

$idatti = $_GET['idatti'];
$idcane = $_GET['idcane'];
$attivita = $_GET['attivita'];
$data = $_GET['data'];
echo 'attiviti passata: '.$attivita.'<br>';

session_start();
$_SESSION['IDATTI'] = $idatti;
$_SESSION['IDCANE'] = $idcane;
$_SESSION['ACTIVITY'] = $attivita;
$_SESSION['DATA'] = $data;

echo 'ID_attivita\': '.$idatti.'<br>';
echo 'ID_Cane:  '.$idcane.'<br><br><br>';

echo '<form action="scrivimod.php" method="get">';
echo '<table border="0">';
echo '<tr>';
echo '    <td width="140">ATTIVITA\'</td>';
echo '    <td><input type="text" name="atti" value="'.$attivita.'"></td>';
echo '</tr>';
echo '<tr>';
echo '    <td width="140">DATA</td>';
echo '    <td><input type="text" name="data" value="'.$data.'"></td>';
echo '</tr>';
echo '<tr>';
echo '    <td height="140" colspan="2"> <input type="submit" name="invia" value="Registra modifiche">
</td>';
echo '</tr>';
echo '</table>';
echo '</form>';

?>


e l'ultimo SCRIVIMOD.PHP


PHP:
 <?php

$attivita = $_GET['atti'];
$data = $_GET['data'];

session_start();
$idattiv = $_SESSION['IDATTI'];
$idcane = $_SESSION['IDCANE'];

echo 'attivity da modidicare: '.$idattiv;
echo'<br>relativo al cane: '.$idcane;

//connessione al server DB
$link_connessione=mysql_connect("localhost","..................","") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db(".............", $link_connessione) or die ("Database inesistente!");

//Esecuzione della query
$query="UPDATE `ATTI` SET `ATTIVITA'` = '".$attivita."',`DATA` = '".$data."' WHERE ID_atti = '".$idattiv."'";
echo '<br><br>';

if (mysql_query($query, $link_connessione)) {
	echo 'il record e\' stato correttamente modificato';
} else {    
	echo 'Attenzione: errore nella query';
}    

echo '<br><br><a href="leggicani.php">TORNA ALL\'ELENCO DEI CANI</a>';
echo '<br><br><a href="leggiatti.php?idcane='.$idcane.'">MODIFICA ALTRE ATTIVITA\' DELLO STESSO CANE</a>';

?>


Io l'ho provato e funziona
Puoi vedere il funzinamento qui (ovviamente lo devi adattare).
Spero di esserti stato d'aiuto, sempre che era questo che intendevi.:byebye::byebye:


Zorro
 

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
Grazie davvero tanto per l'aiuto!
Io "leggicane" lo avrei su listacane come puoi vedere da foto, quello che proverò a fare è implentare leggi attivita, modifica e scrivi che hai creato tu su modificane.php che ho io.
Vediamo cosa esce fuori, se riesco incollo il risultato quì, altrimenti... ti chiederò aiuto.
 

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
<?php

//connessione al server DB
$link_connessione=mysql_connect("host","user","pass") or die ("Connessione impossibile");

//Selezione del database
$db=mysql_select_db("nomedb", $link_connessione) or die ("Database inesistente!");

//Visualizzazione dei record di una tabella
$query="SELECT * FROM cane";
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");

echo '<table border="0">';
echo '<tr>';
echo '<td width="40" height="50">ID</td>';
echo '<td width="140">CANE</td>';

//Esecuzione della query
while ($riga=mysql_fetch_array($tabella)) {
$id=$riga['ID'];
$nomecane=$riga['NOME'];

echo '<tr>';
echo '<td>'.$id.'</td>';
echo '<td>'.$nomecane.'</td>';
echo '<td><a href="leggiatti.php?id='.$id.'">Elenca attivita\'</a></td>';
echo '</tr>';
}
echo '</table>';

?>

leggicane.jpg
Non so perchè, ma sono ore e ore che provo a capire il problema ma niente.
Poi preso spunto ho creato questomodatti.jpg
Ora devo solo studiare come fare in modo che quei campi che legge dal db, se voglio modificarli me li modifica o se voglio cancellarli li cancella. :D
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Errata corrige:
in LEGGICANE.PHP, all'inizio del ciclo WHILE, quando recuperi le variabili della tabella, devi sostituirre


PHP:
$idcane=$riga['ID'];

con

PHP:
 $idcane=$riga['IDCane'];


in pratica, tra le parentesi quadre, devi inserire il nome del campo della tabella (i nomi devono corrispondere, altrimenti non ti visualizza niente).
Coòmunque, se dovessi avere problemi, chiedi pure. :byebye::byebye:



Zorro
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
PS
In pratica non ti visualizza niente perchèprobabilmente i nomi non corrispondono.

Tabella CANI:
2 campi: IDCane e NOME

Tabella ATTI:
4 campi: ID_atti, ID_Cane, ATTIVITA', DATA
 

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
Perfetto grazie mille!!!!! Non mi ero accorto, forse la tarda ora...
Ho messo a confronto il tuo con quello che poi ho realizzato io, alla fine sono riuscito a far funzionare anche il mio... la mia compagna (che è lei che lo utilizza maggiormente) ha promosso il tuo e bocciato il mio
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Contento di esserti stato d'aiuto.
Ovviamente io ho cercato di semplificare al massimo le cose. Grazie anche alla tua compagna per la promozione:):):):)



Zorro:byebye::byebye:
 

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
Le cose semplici, sono le più funzionali
Più tardi cercherò di impaginarlo ed implementarlo. Più in avanti (ora ho pochissimo tempo a disposizione) metterò un tasto "invia regolamento" in modo che appena inseriamo un cliente sarà subito possibile inviare il regolamento del centro, un tasto invia fattura ed uno stampa fattura. Nel tempo mi piacerebbe dare accesso ad ogni singolo cliente di accedere alla propria scheda con le attività il numero di lezioni (i video se ci sono). Ma pian piano...
Alla fine di tutto (ci sarà mai una fine? Booo ahahah) vorrei riguardarlo tutto, pulite tutto il codice e rifare la veste grafica.
È un progetto a lungo termine ma sono davvero contento di essermelo vestito addosso anche grazie agli aiuti di amici, forum e te.
 

H3yB0y

Nuovo Utente
14 Mag 2016
8
0
0
Ciao! Ecco quà l'implementazione, per il momento ci siamo accontentati di questo (poi vorrei che mi uscisse l'output direttamente sulla pagina della terza foto "modifica-cane.php")
Graficamente non è il massimo (infatti la devo rifare, per il momento è funzionale e questo è quello che conta), ho editato un campo input con textarea, perchè sulla descrizione delle attività scriviamo molte cose ed era difficile leggere tutto. Prossimamente proverò a fare su leggiatti (seconda foto che pubblico su questo posto) una riga di un colore e una di un altro alternate, come su lista-cane.php, la prima foto che pubblicherò.
newgest.jpgleggiatti.jpgmodatt.png
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
ROMA
Ciao,
infatti anch'io pensavo ad una textarea per visualizzare le attività.
La data, poi, io l'ho definita varchar(10) perché definendola Date il php avrebbe richiesto il formato americano (aaaa-mm-gg) che poi avresti dovuto convertire in gg/mm/aaaa. Così invece, a meno che non debba fare operazioni sulle date, eviti la conversione. Quando poi le devo modificare, io preferisco suddividerle in gg, mm ad aaaa ed inserirla in altrettante select-box, per evitare possibili errori inserendola manualmente.
Nella tabella CANI io ho inserito solo 4 cani, ma avendo più cani (come sicuramente sarà), per evitare lo scrolling dello schermo dovrai suddividere la tabella in più pagine, prevedendo dei pulsanti (avanti e indietro) per viaualizzare tutti i cani.
Se hai problemi........chiedi pure

Zorro
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
S [HTML] Problema <input type="date"> HTML e CSS 0
G Problema input type range Javascript 0
P Problema immagine input type HTML e CSS 18
P Piccolo problema Input di un file. HTML e CSS 1
V problema con form in input/output PHP 3
L problema con form ed input PHP 6
M problema con l'inserimento di dati in un tag input PHP 3
I problema con cambiamento automatico di value in un input type text Javascript 1
D problema con checkbox e input text PHP 6
H z-index e input type: PROBLEMA STORICO HTML e CSS 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0

Discussioni simili