PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

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:

var cell_3 = document.createElement("td");
var cell3=xhr.responseText;
document.getElementById('status').innerHTML = cell3; 
cell_3.appendChild(cell3)
row.appendChild(cell_3);

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

#2 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

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

#3 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

Bonjour,

J' ai modifie mon code de facon a creer mes cellules tdans javascript.

alors j'ai une fichier fstatus.php execute avec AJAX:

<?php
require_once ('../mysqli_connect.php');      
    // Retrieve all the statuses of a functionality
    echo "<select name='status'>";
    $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);
     
    echo "</select>";

 ?>

Il est tout simple et me renvoie juste ma liste deroulante.
Ensuite j'ai le fichier funcs.php comme ceci:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<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

#4 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

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.

#5 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

ce que genere mon xhr.responseText, est le resultat déxecution du code suivant:

<tr>
<td><input type="text" name="depname" size="30" maxlength="50" value="" /></td>
<td><select name="fstatus" style="width: 150px">';

<?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

#6 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

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

#7 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

comment puis je faire alors pour afficher ma ligne stockee dans  xhr.responseText?

Merci

#8 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

c'est une table.

<table align="center" border = "2" cellspacing ="0" cellpadding="3" id="table">

#9 Re : Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

Oui justement j'ai utilise AJAX:

j'ai un code qui cree la ligne (status.php)

<tr>
<td><input type="text" name="depname" size="30" maxlength="50" value="" /></td>
<td><select name="fstatus" style="width: 150px">';

<?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:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<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

#11 Re : Forum Général PHP » problème d'affichage » 19-06-2009 11:30:10

as tu utilise MYSQL_FETCH_ARRAY($resultat, MYSQL_ASSOC )

#13 Re : Forum Général PHP » problème d'affichage » 19-06-2009 11:30:10

yass9999 a écrit :

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 supprimer


Deuxiemement: 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

#14 Re : Forum Général PHP » problème d'affichage » 19-06-2009 11:30:10

En fait, commence par ecrire

MYSQL_FETCH_ARRAY($resultat, MYSQL_ASSOC )

pour voir si c'est de la que vient ton probleme.

#15 Re : Forum Général PHP » problème d'affichage » 19-06-2009 11:30:10

trois choses :
premierement a quoi te sert

#
$EDITEUR = $_POST["EDITEUR"];
#
$REVUE = $_POST["REVUE"];
#
$ANNEE = $_POST["ANNEE"];
#
$NUMERO = $_POST["NUMERO"];
#
$TITRE = $_POST["TITRE"];
#
$VOLUME = $_POST["VOLUME"];
#
$DATE_ENTREE = $_POST["DATE_ENTREE"];
#
$DATE_SORTIE = $_POST["DATE_SORTIE"];
#
$PRIX_VENTE = $_POST["PRIX_VENTE"];
#
$PRIX_VENDU = $_POST["PRIX_VENDU"];
#
$STOCK = $_POST["STOCK"];
#
$COMMENTAIRE = $_POST["COMMENTAIRE"];

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"]

#16 Re : Forum Général PHP » [Résolu] message de session ne s'affiche pas » 18-06-2009 10:09:57

ok. merci. jai  resolu mon probleme. Merci pour vos reponses

#17 Re : Forum Général PHP » problème d'affichage » 19-06-2009 11:30:10

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

#18 Re : Forum Général PHP » problème d'affichage » 19-06-2009 11:30:10

As tu teste ta requete? Parceque quand tu utilises le SUM de SQL il te faut un GROUP BY()

#20 Javascript » Creation des lignes d'une table » 29-11-2009 11:42:20

billyrose
Réponses : 17

Bonjour a tous,

J'ai un formulaire donc le code est le suivant:

<?php
require_once ('../mysqli_connect.php');
?>
<table>
<tr><td colspan="2">
  <table align="center" border = "2" cellspacing ="0" cellpadding="3">
    <tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><a href="add_functionality.php">[Add functionality]</a></td></tr>
 
  </table>
</td></tr>
</table>

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

<tr>
    <td><input type="text" name="fname" style="background:#FFFFCC" size="20" maxlength="50" value="<?php if (isset($trimmed['fname'])) echo $trimmed['fname']; ?>" /></td>
    <td> <textarea name="fdescription" rows="2" cols="30" wrap="hard" ><?php if (isset($_POST['fdescription'])) echo $_POST['fdescription']; ?></textarea> </td>
    <td><?php echo '<select name="fstatus" style="width: 150px">';
 
    // 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";
      }
    }
    echo '</select>';
    mysqli_free_result($r);
    unset($menu_row);?> </td>
    <td valign="center"><a href="delete.php">[delete]</a></td>
    </tr>

j'inclus ce code dans le premier code ci-dessus de la facon suivante:

<?php
require_once ('../mysqli_connect.php');
?>
<table>
<tr><td colspan="2">
  <table align="center" border = "2" cellspacing ="0" cellpadding="3">
    <tr><td><b>Functionality Name:</b></td> <td><b>Description:</b></td> <td><b>Status:</b></td> <td><a href="add_functionality.php">[Add functionality]</a></td></tr>
    <?php require_once('../PHP-TESTS/add_functionality.php') ?>
   
  </table>
</td></tr>
</table>

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

#21 Re : Forum Général PHP » [Résolu] message de session ne s'affiche pas » 18-06-2009 10:09:57

Salut a tous,

j'ai trouve le probleme. En fait l'affichage du $_SESSION['success'] doit se faire a l'exterieur de la boucle

 if (isset($_SESSION['success'])){
    echo "<p>{$_SESSION['success']}</p>; You can add a new one";
    }
if (isset($_POST['cancel'])){

} // End of Cancel
 
elseif (isset($_POST['submitted']))

}// End of form submitted

Merci a tous

#22 Forum Général PHP » [Résolu] message de session ne s'affiche pas » 18-06-2009 10:09:57

billyrose
Réponses : 7

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.

<?php
// This page allows a user to create a business rule
session_start();
if (isset($_POST['cancel'])){
  if (! empty($_POST)) {
  $_POST=array();
  }
} // End of Cancel

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

Pied de page des forums

Propulsé par FluxBB