PB de requêtes avec la BDD

kingOFking47
Invité n'ayant pas de compte PHPfrance

07 mars 2013, 16:08

Bonjours à tous, j'ai créer un application pour la gestion de vidéos (k7 de caméra) tout fonctionne de la BDD à ma page excepté l'inverse quand ma BDD est vide je souhaite tout entré à partir du formulaire mais les requête ne passe pas. Quelqu'un pourrai t'il regarder et m'aider ?
Ceci dit je pense que ce sont les "post" qui faut référencé. De plus la programmation n'est pas mon dada je suis dans une spécialité tout autre mais je doit faire ça obligatoirement donc une aide serai très appréciable voilà pourquoi je demande un coup d'œil . Je suis novice soyez indulgent.

Voici ma BDD:
-- Structure de la table `genre`
-- 

CREATE TABLE `genre` (
  `genre` varchar(60) NOT NULL default '',
  PRIMARY KEY  (`genre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- 
-- Contenu de la table `genre`
-- 

INSERT INTO `genre` VALUES ('Catastrophe');
INSERT INTO `genre` VALUES ('Comédie');
INSERT INTO `genre` VALUES ('Documentaire');
INSERT INTO `genre` VALUES ('Dramatique');
INSERT INTO `genre` VALUES ('fantastique');
INSERT INTO `genre` VALUES ('Guerre');
INSERT INTO `genre` VALUES ('Horreur');
INSERT INTO `genre` VALUES ('James Bond');
INSERT INTO `genre` VALUES ('Policier');
INSERT INTO `genre` VALUES ('Science-Fiction');
INSERT INTO `genre` VALUES ('Suspense');
INSERT INTO `genre` VALUES ('Thriller');

-- --------------------------------------------------------

-- 
-- Structure de la table `k7`
-- 

CREATE TABLE `k7` (
  `num_k7` bigint(3) NOT NULL default '0',
  `titre` varchar(60) NOT NULL default '',
  `genre` varchar(30) NOT NULL default '',
  `duree_h` bigint(1) NOT NULL default '0',
  `duree_mn` bigint(2) NOT NULL default '0',
  `duree_totale` int(3) NOT NULL default '0',
  `acteur1` varchar(60) NOT NULL default '',
  `acteur2` varchar(60) NOT NULL default '',
  `acteur3` varchar(60) NOT NULL default '',
  `realisateur` varchar(60) NOT NULL default '',
  PRIMARY KEY  (`titre`),
  KEY `titre` (`titre`,`genre`,`duree_h`,`duree_mn`),
  KEY `acteur1` (`acteur1`),
  KEY `realisateur` (`realisateur`),
  KEY `num_k7` (`num_k7`),
  KEY `num_k7_2` (`num_k7`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='base de donn�e k7';

-- 
-- Contenu de la table `k7`"expemples fictifs"
-- 

INSERT INTO `k7` VALUES (37, 'Le Jaguar', 'Comédie', 1, 40, 100, 'Jean Reno', 'Patrick Bruel', '', 'marie');
INSERT INTO `k7` VALUES (27, 'Le Cinquième Elément', 'Comédie', 2, 0, 120, 'Bruce Willis', 'Ruby road', '', 'Lucas');

la partie de mon formulaire concerné :
<h3>Insérer un nouveau film :</h3>
<form action="save_k7.php" method="post">
  <table border="0" cellspacing="1" cellpadding="3" class="table">
    <tr class="table_titre">
      <td>N° Cassette</td>
      <td>Titre</td>
      <td>Genre</td>
      <td>Heure</td>
      <td>Minute</td>
      <td>Acteur1</td>
      <td>Acteur2</td>
      <td>Acteur3</td>
      <td>Réalisateur</td>
    </tr>
    <tr class="table_contenu">
      <td><input name="num_k7" type="text" size="3" maxlength="3"></td>
      <td><input name="titre" type="text" size="40" maxlength="60"></td>
       
      <td>
      <select name="genre">
      <?php
        require("connect.php");
        $resultat = mysql_query("select * from genre ORDER BY genre");//DESC = décroissant
        $nbre = mysql_num_rows($resultat);//nbre d'enregistrement dans la base
        //boucle de lecture
        $i = 0;
        while ($i < $nbre)
        {
        $genre_print = mysql_result($resultat,$i,"genre");
 
        print("<option value=\"$genre_print\">$genre_print\n");
     
        $i++;
        }
      ?>
      </select>
      </td>
       
      <td><input name="duree_h" type="text" size="1" maxlength="1"></td>
      <td><input name="duree_mn" type="text" size="2" maxlength="2"></td>
      <td><input name="acteur1" type="text" size="10" maxlength="60"></td>
      <td><input name="acteur2" type="text" size="10" maxlength="60"></td>
      <td><input name="acteur3" type="text" size="10" maxlength="60"></td>
      <td><input name="realisateur" type="text" size="10" maxlength="60"></td>
    </tr>
  </table>
  <br>
  <input type="submit" value=" OK ">
  <a href="lire_k7.php">Voir la liste des films</a>
</form></p>
Et le fichier save_k7 :
<?php
require("connect.php");
$num_k7 = $_POST['num_k7'];
$titre = $_POST['titre'];
$genre = $_POST['genre'];
$duree_h = $_POST['duree_h'];
$duree_mn = $_POST['duree_mn'];
$acteur1 = $_POST['acteur1'];
$acteur2 = $_POST['acteur2'];
$acteur3 = $_POST['acteur3'];
$realisateur = $_POST['realisateur'];
$duree_totale = $duree_h * 60 + $duree_mn;
mysql_query("INSERT INTO `k7` (`num_k7`, `titre`, `genre`, `duree_h`, `duree_mn`, `duree_totale`, `acteur1`, `acteur2`, `acteur3`, `realisateur`) VALUES ('$num_k7', '$titre', '$genre', '$duree_h', '$duree_mn', '$duree_totale', '', '$acteur1', '$acteur2', '$acteur3', '$realisateur');");
require("lire_k7.php");
 
mysql_close();
?>

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 mars 2013, 22:02

Bonjour,

Il y a une erreur dans la requête SQL INSERT : une valeur entre ' ' de plus a glissé dans la clause VALUES. En effet, on compte 10 champs dans la table K7 et toi tu passes 11 valeurs dans la requête INSERT.

Voici la correction en plus de la page "lire_k7.php" qui lit les films enregistrés et les liste à l'écran :

Page : save_k7.php (corrigé)
<?php
//debug
//echo '<pre>'; print_r($_POST); echo '</pre>';

//champs formulaire
$num_k7 = $_POST['num_k7'];
$titre = $_POST['titre'];
$genre = $_POST['genre'];
$duree_h = $_POST['duree_h'];
$duree_mn = $_POST['duree_mn'];
$duree_totale = $duree_h * 60 + $duree_mn;
$acteur1 = $_POST['acteur1'];
$acteur2 = $_POST['acteur2'];
$acteur3 = $_POST['acteur3'];
$realisateur = $_POST['realisateur'];

//connexion bdd
require("connect.php");

//requete SQL Ajout
$SQL = "INSERT INTO `k7` (`num_k7`, `titre`, `genre`, `duree_h`, `duree_mn`, 
		`duree_totale`, `acteur1`, `acteur2`, `acteur3`, `realisateur`) 
		VALUES ('$num_k7', '$titre', '$genre', '$duree_h', '$duree_mn', '$duree_totale', 
		'$acteur1', '$acteur2', '$acteur3', '$realisateur')";
		
//debug
//echo $SQL;

//execution SQL		
if (mysql_query($SQL)) { echo "<p>Ajout effectué!</p>"; } else { echo "<p>Ajout non effectué!</p>"; }

//fermer connexion bdd
mysql_close();

//afficher liste des k7
require("lire_k7.php");
?>
Page : lire_k7.php
<?php
//connexion bdd
require("connect.php");

//requete SQL Ajout
$SQL = "SELECT * FROM k7";
		
//debug
//echo $SQL;

//execution SQL		
$result = mysql_query($SQL);
$liste_k7 = '';
while($result && $row = mysql_fetch_array($result)){
	$duree = $row['duree_h'] .':'. ($row['duree_mn']<=9?'0'.$row['duree_mn']:$row['duree_mn']); //mn format 00
	$liste_k7 .= '<ul class="k7">
					<li>'. $row['num_k7'] .'</li>
					<li>'. $row['titre'] .'</li>
					<li>'. $row['genre'] .'</li>
					<li>'. $duree . '</li>
					<li>'. $row['acteur1'] .'</li>
					<li>'. $row['acteur2'] .'</li>
					<li>'. $row['acteur3'] .'</li>
					<li>'. $row['realisateur'] .'</li>
					</ul>';
}

//fermer connexion bdd
mysql_close();
?>

<h1>Liste des k7</h1>
<div id="liste_k7"><?php echo $liste_k7; ?></div>
<style>
.k7 { display:table-cell; padding:15px; border:solid 1px;}
</style>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène