Bonjour avant toutes choses je tiens à m'excuser des possibles erreurs que je vais effectuer concernant ma requête sur le forum (c'est mon premier post). J'espère que vous ne m'en tiendrez pas rigueur.
Mon problème est le suivant. Je viens de me mettre à l'ajax et à prototype.
Je souhaite insérer une ligne dans ma base de données avec prototype par l'intermédiaire d'un formulaire que voici:
<formaction="artists2.php"method="post"enctype="multipart/form-data">
<table>
<tr>
<th>Ajouter Artiste </th>
<td><inputtype="textarea"name="art_name" /></td>
</tr>
<tr>
<th></th>
<td><inputtype="submit"value="Valider" /></td>
</tr>
</table>
</form>
Dans le <head> bien sur j'ai
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="scripts/artists2.js"></script>
A l'insertion de mon artiste un tableau doit se créer dynamiquement pour m'afficher mon insertion avec deux liens images (une image pour modifier, l'autre pour supprimer).
Dans mon html je cree un <div id="artists"> ou le tableau devra être créé.
Voici mon artists2.js
var artist = {
response: null,
responseArtist: null,
// la fonction init doit initialiser, pas lancer de requete aJAX
init:function(){
// on recupere le formulaire
var theForm = $$("form").first();
// On attache un listener sur l'evenement submit
theForm.observe("submit", function(e){
// Comme on bind la fonction sur le formulaire, this est le formulaire
var url = 'getArtistAdded.php';
new Ajax.Request(url, {
method: 'get',
// On serialize le formulaire pour avoir les valeurs saisies
parameters : this.serialize(true),
onSuccess: function(transport){
artist.responseArtist = transport.responseText.evalJSON();
if (artist.responseArtist.artist[0] !=false){
artist.writeArtistTable(artist.responseArtists.artist);
} else {
$('artist').innerHTML = "Veuillez entrer un artiste";
}
}
});
}.bindAsEventListener(theForm));
},
writeArtistTable : function(response){
var table = new Element('table', {'id': 'tbArtist'});
var tr0 = new Element('tr');
var th0 = new Element('th').update("ID");
var th1 = new Element('th').update("Artiste");
var th2 = new Element('th', {'colspan', '2'}).update("Action");
tr0.insert(th0);
tr0.insert(th1);
tr0.insert(th2);
table.insert(tr0);
response.each(function(elt){
var tr1 = new Element('tr');
var td1 = new Element('td').update(elt.art_id);
var td2 = new Element('td').update(elt.art_name);
var td3 = new Element('td');
var imgModif = new Element('img', {'src': 'modifier.png', 'alt': 'modifier', 'title': 'modifier', href: 'artist2.php?modif=elt.art_id'});
td3.insert(imgModif);
var td4 = new Element('td');
var imgSuppr = new Element('img', {'src': 'supprimer.png', 'alt': 'supprimer', 'title': 'supprimer', href: 'artist2.php?suppr=elt.art_id'});
td4.insert(imgSuppr);
tr1.insert(td1);
tr1.insert(td2);
tr1.insert(td3);
tr1.insert(td4);
table.insert(tr1);
});
$('artist').appendChild(table);
}
};
Event.observe(window, 'load', artist.init);
Pour finir mon php pour inserer l'artiste (getArtistAdded.php)
<?phpinclude_once("connexion.php"); ?>
<?php
mysql_select_db($database, $base);
function remplaceBR($chaine)
{
$chaine = str_replace("\r\n","<br>",$chaine);
$chaine = str_replace("\n","<br>",$chaine);
return$chaine;
}
if(isset($_POST['art_name'])){
$name = strip_tags($_POST['art_name']);
// Premiere insertion sans l'id
$texte = remplaceBR($texte);
$query01="INSERT INTO artists(art_id, art_name) VALUES ('NULL', '$name')";
$result01=mysql_query($query01);
$id=mysql_insert_id();
// On recupere l'id de l'artiste pour l'afficher
$query_artist = sprintf("SELECT * FROM artists WHERE art_id = $id");
$artist = mysql_query($query_artist, $base) or die(mysql_error());
$row_artist = mysql_fetch_assoc($artist);
$result = array();
}
?>
<?php
do{
$result[] = $row_artist;
}while($row_artist = mysql_fetch_object($artist));
echo '{"artist":'.json_encode($result).'}';
?>Le problème vient forcement d'artists.js car quand je mets le lien du php pour inserer getArtistAdded.php dans l'action du formulaire l'insertion se passe sans problème.
Concretement, il ne passe rien, je n'ai aucun message d'erreur
Je vous remercie d'avance pour votre aide et surtout votre compréhension ajax et prototype sont tout nouveau pour moi.