- Home
- Categorie
- Coding e Sistemistica
- Coding
- Inserimento/delete/modifica dati da form con casella a discesa e id collegati
- 
							
							
							
							
							
con il consiglio di Ultima ho fixato il codice ;), adesso i valori non sono duplicati, 
 solo che vorrei ottenere uno spazio vuoto per avere la possibilita' di non inserire nulla [PHP]<?php 
 // select actor records
 $query = 'SELECT
 people_id, people_fullname
 FROM
 people
 WHERE
 people_isactor = 1
 ORDER BY
 people_fullname';
 $result = mysql_query($query, $db) or die(mysql_error($db));// populate the select options with the results 
 while ($row = mysql_fetch_assoc($result)) {
 {
 if ($row['people_id'] == $movie_leadactor) {
 echo '<option value="' . $row['people_id'] .
 '" selected="selected">';
 } else {
 echo '<option value="' . $row['people_id'] . '">';
 }
 echo $row['people_fullname'] . '</option>';
 }
 }
 ?>[/PHP]
 
- 
							
							
							
							
							
@Alex_2019 said: con il consiglio di Ultima ho fixato il codice ;), adesso i valori non sono duplicati, 
 solo che vorrei ottenere uno spazio vuoto per avere la possibilita' di non inserire nulla [PHP]<?php 
 // select actor records
 $query = 'SELECT
 people_id, people_fullname
 FROM
 people
 WHERE
 people_isactor = 1
 ORDER BY
 people_fullname';
 $result = mysql_query($query, $db) or die(mysql_error($db));// populate the select options with the results 
 while ($row = mysql_fetch_assoc($result)) {
 {
 if ($row['people_id'] == $movie_leadactor) {
 echo '<option value="' . $row['people_id'] .
 '" selected="selected">';
 } else {
 echo '<option value="' . $row['people_id'] . '">';
 }
 echo $row['people_fullname'] . '</option>';
 }
 }
 ?>[/PHP]
 Ottieni uno spazio vuoto in questo modo, applicando un echo con la option della select vuota prima del ciclo while
 [PHP]<?php
 // select actor records
 $query = 'SELECT
 people_id, people_fullname
 FROM
 people
 WHERE
 people_isactor = 1
 ORDER BY
 people_fullname';
 $result = mysql_query($query, $db) or die(mysql_error($db));
 // da qui
 echo '<option value="">Seleziona un attore..</option>';
 //
 // populate the select options with the results
 while ($row = mysql_fetch_assoc($result)) {
 {
 if ($row['people_id'] == $movie_leadactor) {
 echo '<option value="' . $row['people_id'] .
 '" selected="selected">';
 } else {
 echo '<option value="' . $row['people_id'] . '">';
 }
 echo $row['people_fullname'] . '</option>';
 }
 }
 ?>[/PHP]
 
- 
							
							
							
							
							
Benissimo, 
 adesso adatto il codice al mio e vediamo cosa combino,
 spero che i precedenti attriti siano stati risolti e possiamo ricominciare da capo 
 Grazie a Ultima e Federico e Federico per il loro prezioso aiuto per il loro prezioso aiuto
 
- 
							
							
							
							
							
sto testando il codice nel database di prova e..ho un errore   [HTML]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8[/HTML]  [PHP]<?php 
 $db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or
 die ('Unable to connect. Check your connection parameters.');
 mysql_select_db('moviesite', $db) or die(mysql_error($db));if ($_GET['action'] == 'edit') { 
 //retrieve the record's information
 $query = 'SELECT
 movie_name, movie_type, movie_year, movie_leadactor, movie_director
 FROM
 movie
 WHERE
 movie_id = ' . $_GET['id'];
 $result = mysql_query($query, $db) or die(mysql_error($db));
 extract(mysql_fetch_assoc($result));
 } else {
 //set values to blank
 $movie_name = '';
 $movie_type = 0;
 $movie_year = date('Y');
 $movie_leadactor = 0;
 $movie_director = 0;
 }
 ?>[/PHP]line 8 [HTML]$query = 'SELECT[/HTML] 
 
- 
							
							
							
							
							
@Alex_2019 said: sto testando il codice nel database di prova e..ho un errore   [HTML]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8[/HTML]  [PHP]<?php 
 $db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or
 die ('Unable to connect. Check your connection parameters.');
 mysql_select_db('moviesite', $db) or die(mysql_error($db));if ($_GET['action'] == 'edit') { 
 //retrieve the record's information
 $query = 'SELECT
 movie_name, movie_type, movie_year, movie_leadactor, movie_director
 FROM
 movie
 WHERE
 movie_id = ' . $_GET['id'];
 $result = mysql_query($query, $db) or die(mysql_error($db));
 extract(mysql_fetch_assoc($result));
 } else {
 //set values to blank
 $movie_name = '';
 $movie_type = 0;
 $movie_year = date('Y');
 $movie_leadactor = 0;
 $movie_director = 0;
 }
 ?>[/PHP]line 8 [HTML]$query = 'SELECT[/HTML] 
 Sei proprio sicuro che sia questo il file e che sia esattamente questa la query? Te lo chiedo perchè in quella query non esite nessun dato indicato nell'errore **' , )'
 **Anche perchè, la query è scritta correttamente e non presenta nessun errore.
 
- 
							
							
							
							
							
Ti do una postilla, perchè o cercato è dato una letta rapida al libro che stai utilizzando. E' completamente, scritto con i piedi. 
 Sul libro si fa riferimento a PHP6, ma nella pratica si ferma a PHP 5.3.
 Ci sono enormi lacune che spero siano derivate da traduzioni, perchè altrimenti sarebbe da ritirare dagli scaffali.
 Inoltre, oltre a problemi di battitura vari, il codice è sporco e spesso ridondante
 Ma cosa ben più grave, non vengono spiegate le funzioni di alcun tipo. Cosa grave per un libro di apprendimento, perchè presuppone una conoscenza già dei rispettivi linguaggi utilizzati, ma al contempo ha delle serie lacune.
 Ti do il mio parere professionale e magari se vuoi, ti indico anche dove e come apprendere sia il codice, che le tecniche, per imparare a realizzare un sito web. Ma devi essere disposto e riniziare, cosa che ti farebbe bene, perchè apprenderesti realmente qualcosa, invece di andare per tentativi.
 
- 
							
							
							
							
							
Si il libro fa pena, ma le versione italiana, mancano pezzi di codice e alcuni argomenti sono incompleti  la versione inglese e' completa la versione inglese e' completai dati puntano al file commit.php, li ci sono le query [PHP]<?php 
 $db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or
 die ('Unable to connect. Check your connection parameters.');
 mysql_select_db('moviesite', $db) or die(mysql_error($db));
 ?>
 <html>
 <head>
 <title>Commit</title>
 </head>
 <body>
 <?php
 switch ($_GET['action']) {
 case 'add':
 switch ($_GET['type']) {
 case 'movie':
 $query = 'INSERT INTO
 movie
 (movie_name, movie_year, movie_type, movie_leadactor,
 movie_director)
 VALUES
 ("' . $_POST['movie_name'] . '",
 ' . $_POST['movie_year'] . ',
 ' . $_POST['movie_type'] . ',
 ' . $_POST['movie_leadactor'] . ',
 ' . $_POST['movie_director'] . ')';
 break;
 }
 break;
 case 'edit':
 switch ($_GET['type']) {
 case 'movie':
 $query = 'UPDATE movie SET
 movie_name = "' . $_POST['movie_name'] . '",
 movie_year = ' . $_POST['movie_year'] . ',
 movie_type = ' . $_POST['movie_type'] . ',
 movie_leadactor = ' . $_POST['movie_leadactor'] . ',
 movie_director = ' . $_POST['movie_director'] . '
 WHERE
 movie_id = ' . $_POST['movie_id'];
 break;
 }
 break;
 }if (isset($query)) { 
 $result = mysql_query($query, $db) or die(mysql_error($db));
 }
 ?>
 <p>Done!</p>
 </body>
 </html>[/PHP]accetto consigli  
 
- 
							
							
							
							
							
capito il problema, se riempio tutti i campi l'errore non viene visualizzato questo e' strano, nel database ho impostato tutti a Null, tranne movie_name  
 
- 
							
							
							
							
							
il codice funziona solo se compilo tutti i dati nella form, se lascio un campo/i vuoti genera errore  
 
- 
							
							
							
							
							L'errore a cui ti riferisci viene dal file commit.php nella parte in cui lanci la query di INSERT. 
 Dovresti controllare cosa ricevi dal form in caso il campo non venga compilato. L'errore sta lì!
 
- 
							
							
							
							
							
@FedeMasiero said: L'errore a cui ti riferisci viene dal file commit.php nella parte in cui lanci la query di INSERT. 
 Dovresti controllare cosa ricevi dal form in caso il campo non venga compilato. L'errore sta lì!questo You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8
 
- 
							
							
							
							
							Esattamente, proprio questo! Deriva dal pezzo di codice in commit.php dove hai la query di inserimento: INSERT INTO ecc... 
 
- 
							
							
							
							
							
in alto c'e' il codice di **commit.php 
 ho controllato, sembra tutto a tosto :bho:
 **
 
- 
							
							
							
							
							
Ciao Alex, prova a riscrivere la query, come te la ho scritta io. [PHP] 
 <?php
 $db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or
 die ('Unable to connect. Check your connection parameters.');
 mysql_select_db('moviesite', $db) or die(mysql_error($db));
 ?>
 <html>
 <head>
 <title>Commit</title>
 </head>
 <body>
 <?php
 switch ($_GET['action']) {
 case 'add':
 switch ($_GET['type']) {
 case 'movie':
 $query = "INSERT INTO
 movie
 (movie_name, movie_year, movie_type, movie_leadactor,
 movie_director)
 VALUES
 ('" . $_POST['movie_name'] . "',
 " . $_POST['movie_year'] . ",
 " . $_POST['movie_type'] . ",
 " . $_POST['movie_leadactor'] . ",
 " . $_POST['movie_director'] . ")";
 break;
 }
 break;
 case 'edit':
 switch ($_GET['type']) {
 case 'movie':
 $query = "UPDATE movie SET
 movie_name = '" . $_POST['movie_name'] . "',
 movie_year = " . $_POST['movie_year'] . ",
 movie_type = " . $_POST['movie_type'] . ",
 movie_leadactor = " . $_POST['movie_leadactor'] . ",
 movie_director = " . $_POST['movie_director'] . "
 WHERE
 movie_id = " . $_POST['movie_id'];
 break;
 }
 break;
 }if (isset($query)) { 
 $result = mysql_query($query, $db) or die(mysql_error($db));
 }
 ?>
 <p>Done!</p>
 </body>
 </html>
 [/PHP]
 
- 
							
							
							
							
							
Grazie Stefano  
 provops: ricordo che questo e' un codice di test per testare le funzionalita', il database originale ha altri campi e altre relazioni, da riscrivere le query 
 
- 
							
							
							
							
							
non funziona se si lasciano campi vuoti, restituisce questo errore (il solito) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 8 line 8 
 $query = 'SELECTse si inseriscono tutti i dati nei campi tutto procede bene senza errori  
 
- 
							
							
							
							
							
ok, lasciamo perdere il codice sopra, e' sbagliata la struttura sto sperimentando un'altro codice, questo e per UPDATE (poi cambio il parametro in INSERT, DELETE) qualcosa e' sbagliato, mi restituisce la query nella pagina, ma nel database effettua l'update correttamente ps: ho aggiunto un'altra query per role, ma non sono sicuro se e' strutturata giusta [PHP]<div> 
 <label for="credited">Credited</label>
 <input type="text" class="textBox" placeholder="Text input" name="credited">
 </div><br><div> <label for="role">Role</label> <input type="text" class="textBox" placeholder="Text input" name="role"> </div><br> <div> <button type="submit" class="button">Add!</button></div><br> </form> <?php if (isset($_GET['movieid'])) { $movieid = $_GET['movieid']; $actorid = $_GET['actorid']; $credited = $_GET['credited']; $role = $_GET['role']; $sql = "UPDATE film_actor SET credited = '" . $credited . "' , role = '" . $role . "' WHERE film_actor.actor_id = '" . $actorid ."' AND film_actor.film_id = '" . $movieid ."'"; echo $sql; $connection = new mysqli("localhost", "exadmin", "expass", "xxx"); $result = $connection->query($sql); } ?> </div>[/PHP] 
 
- 
							
							
							
							
							
C'è un "echo $sql" nel codice, quindi ti stampa la query a video. 
 Ti basta rimuoverla o commentarla
 
- 
							
							
							
							
							
ho risolto cosi  [PHP]// esecuzione della query 
 if (!$connection->query($sql)) {
 echo "Errore della query: " . $connection->error . ".";
 }else{
 echo "Dati <b> " . $credited . " " . $role . " </b> inseriti correttamente nel database."; $sql;[/PHP]grazie Stefano  mi aiuti a risolvere il mistero dell'altro thread http://www.giorgiotave.it/forum/php/260153-upload-foto-multiple-errore-nel-codice.html 
 
- 
							
							
							
							
							
la query precedente funziona benissimo adesso mi serve una per inserire il titolo e collegarlo all'attore, ho fatto molti tentativi ma non riesco a risolvere :?:bho:  Database struttura: 3 tabelle actor: <------Table 
 actor_id
 nome
 fotofilm: <------Table 
 film_id
 movie_title
 yearfilm_actor: <------Table 
 actor_id
 film_id**questo e' il codice completo 
 **
 [PHP]<!DOCTYPE html>
 <html>
 <head> <title> I4 - Add Movie to Actor Relation </title> </head>
 <link rel="stylesheet" href="S1.css">
 <body><div align="center" style="margin-left: 18%; padding: 1px 15px;"> <h1> Add Movie to Actor Relation</h1> <form method = 'GET' action='#'> <div class="form-group"><label for="movieid">Movie Title </label><option value=NULL> </option> <div> <label for="movie_title">Movie Title</label> <input type="text" class="textBox" placeholder="Text input" name="movie_title"> </div><br> <div> <label for="credited">Credited</label> <input type="text" class="textBox" placeholder="Text input" name="credited"> </div><br> <div> <div> <label for="year">Year</label> <input type="text" class="textBox" placeholder="Text input" name="year"> </div><br> <label for="actorid">Actor </label><select class="form-control" name='actorid'><option value=NULL> </option> <?php $servername = "localhost"; $username = "xxx"; $password = "xxx"; $dbname = "xxx"; $connection = new mysqli($servername, $username, $password, $dbname); $dataCells = array(); $sql = "select concat(actor_id,' ', nome, ' ', credited, ' ') , actor_id from actor;"; $result = $connection->query($sql); while ($resultProperties = mysqli_fetch_field($result)) { $name = $resultProperties->name; array_push($dataCells, $name); } $colIndex = 0; $actorName; while ($row = mysqli_fetch_array($result)) { foreach ($dataCells as $cell) { if ($colIndex == 0){ $actorName = $row[$cell]; } else if ($colIndex == 1) { echo "<option value=" . $row[$cell] . ">" . $actorName; echo "</option>"; } $colIndex++; } $colIndex = 0; } ?> </select><br><br> <div> <button type="submit" class="button">Add!</button></div><br> </form> <?php if (isset($_GET['movieid'])) { $movieid = $_GET['movieid']; $movie_title = $_GET['movie_title']; $credited = $_GET['credited']; $year = $_GET['year']; $actorid = $_GET['actorid']; $sql = "insert into film values movie_title = '". $movie_title . "' , credited = '" . credited . "' , year = '" . $year ."' WHERE actor.actor_id = '" . $actorid ."' AND film.film_id = '" . $movieid ."'"; //echo $sql; $result = $connection->query($sql); $connection = new mysqli("localhost", "exadmin", "expass", "xxx"); $result = $connection->query($sql); // esecuzione della queryif (!$connection->query($sql)) { 
 echo "Errore della query: " . $connection->error . ".";
 }else{
 echo "Dati <b> " . $movie_title . " " . $also_known . " </b> inseriti correttamente nel database."; $sql;
 }}?> </div></body> 
 </html>[/PHP]