|
|
|
|
Bonjour tout le monde!
Je suis en train de faire une session administrateur de base de données SQL en PHP.
J'ai créé une page "modifyArtist.php" qui affiche l'ensemble des artistes dans un tableau. Jusque là pas de soucis. Chaque ligne de ce tableau (qui correspond chacune à un artiste) possèdent un lien permettant d'ouvrir une popup où des champs de saisies s'affichent afin de permettre la modification.
Je transfert dans l'URL l'id de l'artist afin d'afficher dans les champs de la popup les informations déjà présente dans la base pour ce dernier.
Il y a 4 champs dans la popup dont une liste déroulante. Les deux seuls champs obligatoires sont le nom de l'artiste et sa localité (qui se trouve dans la liste déroulante).
J'ai créé une fonction javascipt "verif_error()" afin de vérifier que ces champs ne sont pas vides.
Apparement elle marche bien et m'affiche un message d'erreur dans une textbox si une des deux est vides.
Mon soucis s'est que lorsque je clique sur le bouton "OK" de la textbox, ma popup se recharge et j'obtiens une erreur SQL car l'id de l'artist à disparue de l'adresse URL...
Pouvez vous m'aidez à y voir plus clair et à corrigé cela?
Voici mon code de la fonction javascript :
function verif_error(){
var error_message = "Error : The following fields must be obligatorily filled: \n\n";
var message = error_message;
var error = 0;
if (document.ModifyArtist.Artist_name.value == ""){
message = message + "The artist's name \n";
error = 1;
}
if (document.ModifyArtist.Artist_locality.value == ""){
message = message + "The artist's locality \n";
error = 1;
}
if(error == 1){
alert(message);
}
}
<form name="ModifyArtist" onsubmit="return verif_error()" action="modifyArtistpopup.php">
<input type="hidden" name="Artist_id" value="<?php echo($id_artist) ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Name : </td>
<td><input type="text" name="Artist_name" value="<?php echo $name_artist ;?>"></td>
</tr>
<tr align="center">
<td>About this artist : </td>
<td><input type="text" name="Artist_about" value="<?php echo $about_artist ;?>"></td>
</tr>
<tr align="center">
<td>Inspiration : </td>
<td><input type="text" name="Artist_inspiration" value="<?php echo $inspiration_artist ;?>"></td>
</tr>
<tr align="center">
<td>Locality : </td>
<td>
<select name="Artist_locality">
<?php
$requete = "SELECT * FROM locality";
$resultat = mysql_query($requete);
echo "<option value=$id_locality_artist>"?><?php echo $locality_artist ;?><?php "</option>";
/*Creation of the locality's list*/
while($row=mysql_fetch_array($resultat)) {
if($row['id_locality'] != $id_locality_artist)
echo "<option value=".$row['id_locality'].">".$row['name_locality']."</option>\n";
}
?>
</select>
</td>
</tr>
</table>
<table border="0" align="center" cellspacing="2" cellpadding="2">
<br><br>
<tr align="center">
<td colspan="2"><input type="submit" name="submit" value="Validation"></td>
</tr>
</table>
</form>
Configuration: Windows XP Internet Explorer 7.0
Salut Thorim,
|
Pour completer le message de Posotaz:
function verif_error(){
var error_message = "Error : The following fields must be obligatorily filled: \n\n";
if (document.ModifyArtist.Artist_name.value == ""){
message = message + "The artist's name \n";
alert(error_message);
return false;
}
if (document.ModifyArtist.Artist_locality.value == ""){
message = message + "The artist's locality \n";
alert(error_message);
return false;
}
return true;
} |
Salut tout le monde!
function verif_error(){
var error_message = "Error : The following fields must be obligatorily filled: \n\n";
var message = error_message;
if (document.ModifyArtist.Artist_name.value == ""){
message = message + "The artist's name \n";
alert(message);
return false;
}
if (document.ModifyArtist.Artist_locality.value == ""){
message = message + "The artist's locality \n";
alert(message);
return false;
}
return true;
}
Code du formulaire PHP:
<form name="ModifyArtist" onSubmit="return verif_error()" action="validationModifyArtist.php" method="POST">
<input type="hidden" name="Artist_id" value="<?php echo($id_artist) ;?>">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>Name : </td>
<td><input type="text" name="Artist_name" value="<?php echo $name_artist ;?>"></td>
</tr>
<tr align="center">
<td>About this artist : </td>
<td><input type="text" name="Artist_about" value="<?php echo $about_artist ;?>"></td>
</tr>
<tr align="center">
<td>Inspiration : </td>
<td><input type="text" name="Artist_inspiration" value="<?php echo $inspiration_artist ;?>"></td>
</tr>
<tr align="center">
<td>Locality : </td>
<td>
<select name="Artist_locality">
<?php
$requete = "SELECT * FROM locality";
$resultat = mysql_query($requete);
echo "<option value=$id_locality_artist>"?><?php echo $locality_artist ;?><?php "</option>";
/*Creation of the locality's list*/
while($row=mysql_fetch_array($resultat)) {
if($row['id_locality'] != $id_locality_artist)
echo "<option value=".$row['id_locality'].">".$row['name_locality']."</option>\n";
}
?>
</select>
</td>
</tr>
</table>
<table border="0" align="center" cellspacing="2" cellpadding="2">
<br><br>
<tr align="center">
<td colspan="2"><input type="submit" name="submit" value="Validation"></td>
</tr>
</table>
</form>
Thorim Un problème sans solution est un problème mal posé.(A.Einstein) |
Oui c'et possible de faire une req SQL par Javascript/
<script language="Javascript"type="text/JavaScript">
// Requette AJAX
function makeRequest(url,id_lire,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj=document.getElementById(id_lire);
data="val_sel="+obj.value;
http_request.send(data);
}
function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
//alert(http_request.responseText);
obj = document.getElementById(id_ecrire);
obj.innerHTML = affich_list;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
</script>
et le fichier repPhpAjax.php:
<code><?php
// script PHP interrogation Base de donnees pour reponse a la requete AJAX
// recup valeur postee par Ajax
$valeur_postee=$_POST['val_sel'];
// Connexion a la base de donnees
//Requette SQL, traitement etc..
// construction de la reponse .
$aff="";
$aff.="Message réponse";
// envoi reponse Php a Ajax
echo $aff;
?>
Dans ta page HTML sur l'évenement déclencheur, une liste select tu mets: < select name='......' id="liste1" onChange=" makeRequest('repPhpAjax.php','liste1','id_reponse');"> </code> ou tu veux la réponse tu mets un DIV: <div id="id_reponse" > </div> ou alors tu mets une boite alert(message); dans la fonction TratementReponse |
Salut Alain42!
|
Bonjour tout le monde!
|