Vous n'êtes pas identifié(e).
Pages : 1
Quand je relis mon code je me rends compte que je n'ai pas de ID "status" car dans le select jái juste mis
<select name="status">
.
Est il possible d'ecrire
<select name="status" id="status">
et ensuite de faire:
Si j'ai totelement tort, y a t-il une autre facon d'aborder ce probleme? parceque JS est entrain de me rendre dingue.
Merci
Quand je mets en commentaires ces instructions:
/*var cell3=xhr.responseText;
document.getElementById('status').innerHTML = cell3;
cell_3.appendChild(cell3);*/
//row.appendChild(cell_3);
Les autres cellules s'affichent quand je clique sur Ajouter
Comment pusi je faire pour parfaitement interpreter ma liste deroulante renvoyee par AJAX?
Merci
Bonjour,
J' ai modifie mon code de facon a creer mes cellules tdans javascript.
alors j'ai une fichier fstatus.php execute avec AJAX:
?>
Il est tout simple et me renvoie juste ma liste deroulante.
Ensuite j'ai le fichier funcs.php comme ceci:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox and others
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest not supported by your browser
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
/**
* method called when the user clicks on the button
*/
function go(){
var xhr = getXhr()
// We defined what we gonna do with the response
xhr.onreadystatechange = function(){
// We do somthing once the server's response is OK
if(xhr.readyState == 4 && xhr.status == 200){
var body = document.getElementsByTagName("body")[0];
// Retrieve <table> element and create a <tbody> element
var tbl = document.getElementById("table");
var tblBody = document.createElement("tbody");
var row = document.createElement("tr");
// Create <td> elements and a text node, make the text
// node the contents of the <td>, and put the <td> at
// the end of the table row
var cell_1 = document.createElement("td");
var cell_2 = document.createElement("td");
var cell_3 = document.createElement("td");
var cell_4 = document.createElement("td");
// Create the first cell which is a text zone
var cell1=document.createElement("input");
cell1.type="text";
cell1.name="fname";
cell1.size="20";
cell1.maxlength="50";
cell_1.appendChild(cell1);
// Create the second cell which is a text area
var cell2=document.createElement("textarea");
cell2.name="fdescription";
cell2.rows="2";
cell2.cols="30";
cell_2.appendChild(cell2);
// Create the third cell which is a combo box
// retrieve the xhr response and put it on a cell
var cell3=xhr.responseText;
document.getElementById('status').innerHTML = cell3;
cell_3.appendChild(cell3);
// Create the fourth cell which is a href
var cell4 = document.createElement("a");
cell4.setAttribute("href","delete.php");
cell4.appendChild(document.createTextNode("[Delete]"));
cell_4.appendChild(cell4);
// add cells to the row
row.appendChild(cell_1);
row.appendChild(cell_2);
row.appendChild(cell_3);
row.appendChild(cell_4);
// add the row to the end of the table body
tblBody.appendChild(row);
// put the <tbody> in the <table>
tbl.appendChild(tblBody);
// appends <table> into <body>
body.appendChild(tbl);
// sets the border attribute of tbl to 2;
tbl.setAttribute("border", "1");
}
}
xhr.open("GET","fstatus.php",true);
xhr.send(null);
}
</script>
</head>
<body>
<h1> Create an Item </h1>
<form method="post">
<table align="center" border = "2" cellspacing ="0" cellpadding="3" id="table">
<tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><input type="submit" Name= "Ajouter" Value="Ajouter" onclick="go()"></a></td></tr>
</table>
</form>
</body>
</html>
Je teste sur IE et aucun resultat. Je clique Ajouter mais rien ne semble se passer.
Merci
je sais. le probleme est que je suis passe par AJAX tout simplement parce que les options de ma liste deroulante proviennent dúne table de ma BD. Et je ne peux pas utiliser JS pour le faire donc jétais presque oblige d'utiliser AJAX.
ce que genere mon xhr.responseText, est le resultat déxecution du code suivant:
<?php
require_once ('../mysqli_connect.php');
// Retrieve all the statuses of a functionality
$q = "SELECT F_status_ID, Functionality_status FROM fstatuses ORDER BY F_status_ID ASC";
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) > 0) {
while ($menu_row = mysqli_fetch_array($r, MYSQLI_NUM)) {
echo "<option value=\"$menu_row[0]\">$menu_row[1]</option>\n";
}
}
mysqli_free_result($r);
unset($menu_row);
?>
</select>
</td>
<td> <textarea name="fdescription" rows="2" cols="30" wrap="hard" ></textarea> </td>
<td valign="center"><a href="delete.php">[delete]</a></td>
</tr>
Si j'enleve les <tr> et <td> qui sont la, comment je vais faire pour deliminter les differentes cellules?
J;ai 4 cellules:
- la 1ere cellule est une zone de texte
- la 2eme un textarea
-la 3eme, une liste deroulante
- la 4eme un href
J'utilise <td> pour les separer. Si j'enleve le <td> comment ferais pour les separer?
Merci
j'ai deja lu ce tuto. la difference est que le xhr.responseText que j'ai, a deja les balises <tr> et <td>.
Donc je ne peux plus utiliser ce tutoriel. une autre solution?
Merci
comment puis je faire alors pour afficher ma ligne stockee dans xhr.responseText?
Merci
c'est une table.
Oui justement j'ai utilise AJAX:
j'ai un code qui cree la ligne (status.php)
<?php
require_once ('../mysqli_connect.php');
// Retrieve all the statuses of a functionality
$q = "SELECT F_status_ID, Functionality_status FROM fstatuses ORDER BY F_status_ID ASC";
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) > 0) {
while ($menu_row = mysqli_fetch_array($r, MYSQLI_NUM)) {
echo "<option value=\"$menu_row[0]\">$menu_row[1]</option>\n";
}
}
mysqli_free_result($r);
unset($menu_row);
?>
</select>
</td>
<td> <textarea name="fdescription" rows="2" cols="30" wrap="hard" ></textarea> </td>
<td valign="center"><a href="delete.php">[delete]</a></td>
</tr>
Ensuite, j'ecris le code suivant:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr()
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
alert(xhr.responseText);
}
}
xhr.open("GET","status.php",true);
xhr.send(null);
}
</script>
</head>
<body>
<h1> Create an Item </h1>
<form method="post">
<table align="center" border = "2" cellspacing ="0" cellpadding="3" id="table">
<tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><input type="submit" Name= "Ajouter" Value="Ajouter" onclick="go()"></a></td></tr>
</table>
</form>
</body>
</html>
le alert(xhr.responseText); affiche le code renvoye par le serveur. Et la je vois vien que mon code qui est dans status.php genere un code html.
Mais je change alert(xhr.responseText); par document.getElementById(table).innerHTML +=xhr.responseText; et la rien.
Quand je clique sur "Ajouter" rien ne semble se passer.
Une idee?? je sais plus quoi tenter poru que ca marche.
Merci
as tu utilise MYSQL_FETCH_ARRAY($resultat, MYSQL_ASSOC )
trois choses :
premierement a quoi te sert
au début, je voulais que le résultat de edite.php s'affiche en bas, mais bon je peux les supprimerDeuxiemement: Dans ton SGBD, donne des valeurs a tes champs et teste ta requete.
Tu parles de la requete qui dans numero ou edite, de toute façon les deux marchent dans mon SGBD avec des valeurs
troisiemement: cest MYSQL_FETCH_ARRAY($resultat, MYSQL_ASSOC )
Sinon il ne sait pas ce que c'est que $ligne["EDITEUR"]
à quelle place je dois changer cela ?Merci
Teste dans ton SGBD la requete qui t'affiche la page blanche. Cette page peut etre blanche parceque ta requete ne renvoie rien et dans ce cas, il y a un pb de conception de la requete.
dans ton code, tu as un MYSQL_FETCH_ARRAY. Je te demande d'ajouter cela dans la ligne 37 de ton edite.php
En fait, commence par ecrire
pour voir si c'est de la que vient ton probleme.
trois choses :
premierement a quoi te sert
si tu les SELECT apres dans ta requete??
Deuxiemement: Dans ton SGBD, donne des valeurs a tes champs et teste ta requete.
troisiemement: cest MYSQL_FETCH_ARRAY($resultat, MYSQL_ASSOC )
Sinon il ne sait pas ce que c'est que $ligne["EDITEUR"]
ok. merci. jai resolu mon probleme. Merci pour vos reponses
ce que je te demande c'est est ce que quand tu testes ta requete ou il y a le SUM, MIN, est ce qu'elle fonctionne?
la deuxième qui est dans edite.php s'execute à partir de l'affichage de la première.
Je ne comprends pas ce que tu veux dire.
Teste ta deuxieme requete dans ton SGBD et stp dis moi si tu as un resultat
As tu teste ta requete? Parceque quand tu utilises le SUM de SQL il te faut un GROUP BY()
je parlais en fait du if {} elseif {}
Bonjour a tous,
J'ai un formulaire donc le code est le suivant:
Je voudrais que quand l'utlisateur clique sur [Add functionality], s'ajoute une nouvelle ligne de la table et ainsi de suite.
j'ecris donc le code suivant add_functionality.php
j'inclus ce code dans le premier code ci-dessus de la facon suivante:
le tout c'est que je ne clique meme pas sur le lien [Add functionality] mais la ligne que je veux ajouter s'affiche .
pourriez vous m'aider a creer des lignes de mon tableau au fur et a mesure que l'utilisateur clique sur [Add functionality]?
Il y aussi les variables, comment je les gere?
Merci d'avance.
Billy
Salut a tous,
j'ai trouve le probleme. En fait l'affichage du $_SESSION['success'] doit se faire a l'exterieur de la boucle
} // End of Cancel
elseif (isset($_POST['submitted']))
}// End of form submitted
Merci a tous
Bonjour a tous,
J'ai une formulaire , appele create_br.php, qui permet de remplir la table d'une base de donnees.
Mais voila, je souhaite eviter que la la reactualisation en renvoie des donnees dans la table alors j'ai utilise la redirection vers mon formulaire create_br.php. Mais je souhaite afficher a l'utilisateur que les informations qu'il a saisies ont ete effectivement enregistrees dans la table. Pour cela je cree une session $_SESSION ['success'] et que j'affiche apres la redirection.
elseif (isset($_POST['submitted'])) { // Handle the form.
require_once ('../mysqli_connect.php');
include ('includes/login_functions.inc.php');
if (isset($_SESSION['success'])){
echo "<p>{$_SESSION['success']}</p>; You can add a new one";
}
//empty $errors
//unset ($_SESSION['success']);
$errors=array();
// Trim all the incoming data:
$trimmed = array_map('trim', $_POST);
if (strlen($_POST['brulecode']) != 3){
$errors[]= 'Please enter a Business code or the Business Rule you enter has less than 3 characters.';
} else {
$brc=$_POST['brulecode'];
}
if (empty($_POST['bruletype'])){
$errors[]= 'Please enter a Business type. It is a mandatory field';
} else {
$brt=$_POST['bruletype'];
}
if (empty($_POST['brulecontent'])){
$errors[]= 'Please enter a Field in Rule Content. It is a mandatory field';
} else {
$frc=$_POST['brulecontent'];
}
$brd=$_POST['bruledescription'];
if (empty($errors)) {
$q = "INSERT INTO business_rules (Biz_rule_code, Rule_type, Rule_content, BR_description) VALUES ('$brc', '$brt', '$frc', '$brd')";
$r = mysqli_query ($dbc, $q);
//or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));
if (mysqli_affected_rows($dbc) == 1) { // If it ran OK.
$_SESSION['success']='The business rule has been added in the system.';
$url = absolute_url ('create_br.php');
header("Location: $url");
exit();
mysqli_close($dbc);
} else { //Not OK
echo '<p class="error">You could not be registered due to a system error. We apologize for any inconvenience.</p>';
}
} else {
echo '<h1>Error!</h1>
<p class="error">The following error(s) occurred:<br />';
foreach ($errors as $msg) {
echo " - $msg<br />\n";
}
echo '</p><p>Please try again.</p>';
}
} // End of form submitted
?>
<h1> > Create a Business Rule </h1>
<form action="create_br.php" method="post">
<fieldset style="width: 500px" >
<legend>CBR</legend>
<table align="left" border = "0" cellspacing ="0" cellpadding="3">
<tr><td><b>Business Rule Code:</b></td> <td><input type="text" name="brulecode" style="background:#FFFFCC" size="20" maxlength="20" value="<?php if (isset($trimmed['brulecode'])) echo $trimmed['brulecode']; ?>" /></td></tr>
<tr><td><b>Business Rule Type:</b></td> <td> <input type="text" name="bruletype" style="background:#FFFFCC" size="20" maxlength="40" value="<?php if (isset($trimmed['bruletype'])) echo $trimmed['bruletype']; ?>" /></td></tr>
<tr><td><b>Field in Rule Content:</b></td> <td> <input type="text" name="brulecontent" style="background:#FFFFCC" size="20" maxlength="40" value="<?php if (isset($trimmed['brulecontent'])) echo $trimmed['brulecontent']; ?>" /></td></tr>
<tr><td><b>Description:</b></td> <td> <textarea name="bruledescription" rows="5" cols="30" wrap="hard" ><?php if (isset($_POST['bruledescription'])) echo $_POST['bruledescription']; ?></textarea> </td></tr>
<tr>
<td></td>
<td><div align="center"><input type="submit" name="submit" value="Register" /></div></td>
<td><div align="center"><input type="submit" name="cancel" value="Cancel" /></div></td>
</tr>
<input type="hidden" name="submitted" value="TRUE" />
</table>
</fieldset>
</form>
Probleme: je suis redirige vers mon formulaire mais le message qui est dans la session ne s'affiche pas. J'ai verifie et la session existe bien dans le dossier tmp de Wampserver.
Comment puis afficher mon resultat?
Merci
Pages : 1