Quelle action pour mon formulaire?

padymen Messages postés 15 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 3 mars 2012 - 3 janv. 2010 à 10:36
padymen Messages postés 15 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 3 mars 2012 - 4 janv. 2010 à 13:43
Bonjour, j'ai écrit un formulaire pour créer un fichier XML et un formulaire pour alimenter une base de donnée. Comme les champs ne sont pas disjoints, j'ai fusionné les deux formulaires. Malheureusement, je n'obtient pas le résultat attendu : Le fichier XML se crée bien mais la base ne s'alimente pas. Voici les fichiers :


Premièrement le fichier contenant le formulaire ( insertion2.php ):

<?php
/* Création du XML */
include('xml_gen.php');

/* Modification dans la BD */
include('insertion.php');
?>

<html>
<head>
<style type= "text/css">
<!--

-->
</style>
</head>

Insérer un nouveau fichier :


<form name="form" action="insertion2.php" method="POST">
<fieldset><label> Champs obligatoires </label>

<label>artiste :

</label>

<label>titre

</label>




style :
<label>

</label>


</fieldset>
<fieldset><label> Champs facultatifs </label>


<label>album

</label>



<label>annotation

</label>



<label>

</label>


</fieldset>
 


</form>

</html>



Ensuite le fichier créant le XML ( xml_gen.php ):

<?php
if(isset($_POST['title']) and isset($_POST['creator']) and $_POST['title'] != '' and $_POST['creator'] != ''){
$title = $_POST['title'] ;
$creator = $_POST['creator'];
$path = 'xml/' . $creator . '.xml';
$location = '/mp3/' . $creator . '_' . $title . '.mp3';
$album = isset($_POST['album']) ? $_POST['album'] : '';
$annotation = isset($_POST['annotation']) ? $_POST['annotation'] : '';
$content = '';

if(is_file($path)){ // Si le xml est déjà créer
$TabFich = file($path,FILE_TEXT);
$inF = fopen($path,"w");

for($i = 0; $i < count($TabFich)-2; $i++)
fputs($inF,$TabFich[$i]);

$content = "\n" . '<track>'
. "\n" . '<location>' . $location . '</location>'
. "\n" . '<creator>' . $creator . '</creator>'
. "\n" . '' . $album . ''
. "\n" . '<title>' . $title . '</title>'
. "\n" . '' . $annotation . ''
. "\n" . '<duration></duration>'
. "\n" . '  '
. "\n" . ''
. "\n" . '<link></link>'
. "\n" . '</track>'
. "\n" . '</trackList>'
. "\n" . '

';
}

else{
$inF  = fopen($path,"w");
$content =  '<?xml version="1.0" encoding="UTF-8"?>'
. "\n" . ''
. "\n" . '<title></title>'
. "\n" . '<creator></creator>'
. "\n" . '<link></link>'
. "\n" . ' The Best Playlist for Testing '
. "\n" . 'covers/tracklist.jpg'
. "\n"
. "\n" . '<trackList>'
. "\n"
. "\n" . '<track>'
. "\n" . '<location> mp3/' . $creator . '_' . $title . '.mp3</location>'
. "\n" . '<creator>' . $creator . '</creator>'
. "\n" . ''
. "\n" . '<title>' . $title . '</title>'
. "\n" . ''
. "\n" . '<duration></duration>'
. "\n" . ''
. "\n" . ''
. "\n" . '<link></link>'
. "\n" . '</track>'
. "\n" . '</trackList>'
. "\n" . '

';
}

fputs($inF,$content);
fclose($inF);

echo 'Le fichier ' . $path . ' a été mis à jour
'
. 'Titre : ' . $title . '
'
. 'Artiste : ' .$creator . '
'
. 'Location : ' .$location . '
'
. '
';
}
?>



Et enfin le fichier alimentant la base de donnée ( insertion.php ):

<?php
require_once('Connections/zik.php');
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue  "", $theNotDefinedValue "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
$insertSQL = sprintf("INSERT INTO infos_tbl (artiste, style) VALUES (%s, %s)",
GetSQLValueString($_POST['creator'], "text"),
GetSQLValueString($_POST['style'], "text"));

mysql_select_db($database_zik, $zik);
$Result1 = mysql_query($insertSQL, $zik) or die(mysql_error());
}
?>


J'ai testé séparément les deux derniers fichiers et ils fonctionnent. C'est le formulaire qui est mal conçu. Je pense que l'erreur est dans l'action du formulaire mais je ne sais pas quoi écrire.

2 réponses

cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010
4 janv. 2010 à 07:50
Bonjour

Ce n'est pas ton form qui est malformé mais le test que tu fais sur son post

En effet tu testes :
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form"))

Mais je n'ai pas vu de champs qui s'appelle MM_insert, donc comme la condition de ton if n'est pas remplie, il passe dessus.

Tu aurais peut être du faire :
if ((isset($_POST["Envoyer"])) && ($_POST["Envoyer"] == "Envoyer"))

Pour tester le fait que l'utilisateur a cliqué sur le bouton envoyer.

(Tout ce que je te dis est à condition d'avoir bien vu le contenu de tes fichiers ;))

Bonne journée

Florian
0
padymen Messages postés 15 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 3 mars 2012
4 janv. 2010 à 13:43
Bonjour Florian et merci de ta réponse,
en fait on est parti dans une autre direction (mon fils et moi, plus lui que moi !!!!), mais je pense que tu as raison, en fait c'est (en gros) pour : créer et remplir un xml et alimenter une base de donnée à la main, donc on s'est suis dis : autant faire en sorte de tout faire automatiquement, le but principal étant de créer et d'alimenter une espèce de juke box en php, on a donc créé un répertoire "zik" avec des sous répertoires (4 styles différents), une fonction listant le contenu des sous répertoires, les classant par "style", une autre qui crée et remplis les .xml (nécessaire au player "dewplayer"), et enfin une autre qui rempli la base de données, et voila tout fonctionne presque tout seul, il sufit de nomer les .mp3 correctement, de les mettre dans les bons sous répertoire et de lancer la page adéquate, si ça intéresse, voila le résultat
et voila les codes :

dir.php
<?php
require_once('Connections/zik.php');
include('funct_package.php');

$path =   'C:\xampp\htdocs\new\mp3';
$tab  = scandir($path);

foreach($tab as $style){
$files = scandir($path . '/' . $style);
if($style != '.' and $style != '..'){
foreach($files as $file){
if($file != '.' and $file != '..'){
$tmp = explode('.',$file);
if($tmp[2] == 'mp3'){
insert_bd($tmp[0],$tmp[1],$style);
}
}
}
}
}
?>


et le funct_package.php :

<?php 
if (!function_exists("gen_xml")) {
function gen_xml($artiste,$titre,$style,$album,$annotation){
$path  		= 'xml/' . $artiste . '.xml';
$location 	= 'mp3/' . $style . '/' . $artiste . '.' . $titre . '.mp3';
$content 	= '';

if(is_file($path)){ // Si le xml est déjà créer
$TabFich = file($path,FILE_TEXT);
$inF = fopen($path,"w");

for($i = 0; $i < count($TabFich)-2; $i++)
fputs($inF,$TabFich[$i]);

$content = "\n" . '<track>'
. "\n" . '<location>' . $location . '</location>'
. "\n" . '' . $artiste . ''
. "\n" . '' . $album . ''
. "\n" . '<title>' . $titre . '</title>'
. "\n" . '' . $annotation . ''
. "\n" . '<duration></duration>'
. "\n" . '  '
. "\n" . ''
. "\n" . '<link></link>'
. "\n" . '</track>'
. "\n" . '</trackList>'
. "\n" . '

';
}

else{
$inF  = fopen($path,"w");
$content =  '<?xml version="1.0" encoding="UTF-8"?>'
. "\n" . ''
. "\n" . '<titre>Ounage Playlist</titre>'
. "\n" . 'Dew'
. "\n" . '<link>http://www.blup.fr/</link>'
. "\n" . ' The Best Playlist for Testing '
. "\n" . 'covers/tracklist.jpg'
. "\n" 
. "\n" . '<trackList>'
. "\n"
. "\n" . '<track>'
. "\n" . '<location>' . $location . '</location>' // $id définie avant l'include de ce fichier dans insertion.php
. "\n" . '' . $artiste . ''
. "\n" . ''
. "\n" . '<title>' . $titre . '</title>'
. "\n" . ''
. "\n" . '<duration></duration>'
. "\n" . ''
. "\n" . ''
. "\n" . '<link></link>'
. "\n" . '</track>'
. "\n" . '</trackList>'
. "\n" . '

';
}

fputs($inF,$content);
fclose($inF);
}}


function check_querry($str){
$str = str_replace('\'',' ',$str);
$str= str_replace('(',' ',$str);
$str= str_replace(')',' ',$str);
return $str;
}
  
if (!function_exists("insert_bd")) {
function insert_bd($artiste, $titre, $style){
echo ' ' . $titre . '   de ' . $artiste . ' : ';
$sql  = "SELECT COUNT(*) AS count,id,artiste,titre FROM infos_tbl WHERE artiste='" . check_querry($artiste) . "' and titre='" . check_querry($titre) . "'";
$querry = mysql_query($sql);
$result = mysql_fetch_array($querry);
$count = $result['count'];

if($count>0) // morceau existe déjà
echo 'Le morceau existe déjà 
';
else{ // le morceau n'existe pas
gen_xml($artiste,$titre,$style,'','');
echo 'Morceau non trouvé 
';

//$insertSQL = "INSERT INTO infos_tbl VALUES('','artiste','titre','cool')";
$insertSQL = "INSERT INTO infos_tbl (ID,artiste,titre,style) VALUES ('', '" . check_querry($artiste) . "','" . check_querry($titre) . "','" . check_querry($style) ."')";
$Result1 = mysql_query($insertSQL) or die(mysql_error());
}
}}

?>
0
Rejoignez-nous