Php et mysql dans une fonction javascript
duxitto
Messages postés
275
Statut
Membre
-
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
en cherchant sur internet je suis finalement tombé sur un script qui correspond assez a ce que je cherchai( pour une page web ou les champs de saisie apparaissent automatiquement ), mais il me reste un soucis , il faut inclure dedans une recherche dans la base de données pour vérifier que la référence introduite existe bien :
si oui = afficher les informations qui correspondent a l'article ( désignation, couleur ...)
si non = faire apparaitre un message d'erreur
et ceci après chaque référence saisie il faudrait avoir la possibilité de changer ou d'annuler une référence déjà saisie .
bref , voile le code , ça serait vraiment très gentil si vous pouviez merci
<html>
<head>
<title>Document sans nom</title>
<script language="javascript">
<!--
function create_champ(i)
{
var i2 = i + 1;
document.getElementById('input_'+i).innerHTML = '<div id="champs_'+i+'"><table border="0"><tr><td>Produit '+i+'</td><td> :</td><td><input type="text" name="Produit_'+i+'" size="15"></td><td> Taille'+i+' </td><td>:</td><td><input name="Taille_'+i+'" type="text" size="7"/></td></tr></table></div></span>';
document.getElementById('input_'+i).innerHTML += (i <= 10) ? '<span id="input_'+i2+'"><input class="input2" type="button" onClick="javascript:create_champ('+i2+')" value="VALIDER"></span>' : '';
}
-->
</script>
</head>
<body>
<form name="toto">
<table border="0"><tr><td>
<div id="champs_1">
<div align="left"> Produit 1</td><td> :</td><td>
<input name="Produit_1" type="text" size="15"/></td><td>
Taille 1 </td><td>:</td><td>
<input name="taille_1" type="text"size="7"/></td></tr></table>
</div>
</div>
<div align="left"> <span id="input_2">
<input name="button" type="button" class="input2" onClick="javascript:create_champ(2)" value="VALIDER">
</span></div>
</form>
</body>
</html>
j'ai pensé a inclure du php dans la fonction qui fait que lorsqu'elle est appelé pour faire apparaitre un nouveau champ vérifie si la référence deja saisie est exact , mais cela ne marche pas , il y' a rien qui s'affiche .
en cherchant sur internet je suis finalement tombé sur un script qui correspond assez a ce que je cherchai( pour une page web ou les champs de saisie apparaissent automatiquement ), mais il me reste un soucis , il faut inclure dedans une recherche dans la base de données pour vérifier que la référence introduite existe bien :
si oui = afficher les informations qui correspondent a l'article ( désignation, couleur ...)
si non = faire apparaitre un message d'erreur
et ceci après chaque référence saisie il faudrait avoir la possibilité de changer ou d'annuler une référence déjà saisie .
bref , voile le code , ça serait vraiment très gentil si vous pouviez merci
<html>
<head>
<title>Document sans nom</title>
<script language="javascript">
<!--
function create_champ(i)
{
var i2 = i + 1;
document.getElementById('input_'+i).innerHTML = '<div id="champs_'+i+'"><table border="0"><tr><td>Produit '+i+'</td><td> :</td><td><input type="text" name="Produit_'+i+'" size="15"></td><td> Taille'+i+' </td><td>:</td><td><input name="Taille_'+i+'" type="text" size="7"/></td></tr></table></div></span>';
document.getElementById('input_'+i).innerHTML += (i <= 10) ? '<span id="input_'+i2+'"><input class="input2" type="button" onClick="javascript:create_champ('+i2+')" value="VALIDER"></span>' : '';
}
-->
</script>
</head>
<body>
<form name="toto">
<table border="0"><tr><td>
<div id="champs_1">
<div align="left"> Produit 1</td><td> :</td><td>
<input name="Produit_1" type="text" size="15"/></td><td>
Taille 1 </td><td>:</td><td>
<input name="taille_1" type="text"size="7"/></td></tr></table>
</div>
</div>
<div align="left"> <span id="input_2">
<input name="button" type="button" class="input2" onClick="javascript:create_champ(2)" value="VALIDER">
</span></div>
</form>
</body>
</html>
j'ai pensé a inclure du php dans la fonction qui fait que lorsqu'elle est appelé pour faire apparaitre un nouveau champ vérifie si la référence deja saisie est exact , mais cela ne marche pas , il y' a rien qui s'affiche .
A voir également:
- Javascript et mysql
- Mysql community download - Télécharger - Bases de données
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Windows
- A javaScript error occurred in the main process - Forum Handicap / Accessibilté
- Javascript arrondi - Forum Javascript
29 réponses
salut,
oups, j'avais pas vu !
il y a des choses que je ne comprends pas.
oups, j'avais pas vu !
il y a des choses que je ne comprends pas.
<?php
session_start();
mysql_connect('localhost','root') or die(mysql_error());
mysql_select_db('applicatif') or die(mysql_error());
if(isset($_POST) &&!empty($_POST['reference']) )
{
$ref = $_POST['reference'];
$sql = "select * from produit where ref='".$ref."' " ;
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
if( mysql_numrows( $req ) > 0 )
{
$donnees = mysql_fetch_array($req); //il n'y a forcement qu'un résultat, pas de boucle
}
$designation = $donnees['designation']; // si tu prends tout dans le $_POST, à quoi sert d'interroger la BDD ???
$ref = $_POST['reference']; // en plus, les vraiables ne servent à rien puisque tu ne les réutilises pas
$qte = $_POST['qte'];
$taille=$_POST['taille'];
$_SESSION['achats'][] = array('ref' => $_POST['reference'],'qte' => $_POST['qte'],'taille'=>$_POST['taille'],'designation'=>$_POST['designation']);
}
echo "<br>";
$i = 0;
echo "<table border=1 cellspacing=0 cellpadding=0 bordercolor=black>";
echo "<tr>";
echo "<td width=100> Références</td>";
echo "<td width=50> Taille</td>";
echo "<td width=50> Quantité</td>";
echo"<td width=60> Designation</td>";
echo "</tr>";
foreach( $_SESSION['achats'] as $achat ) // utilise foreach() c'est beaucoup plus simple
{
echo "<tr>";
echo "<td>".$achat['ref']."</td>";
echo "<td>".$achat['taille']."</td>";
echo "<td>".$achat['qte'] ."</td>";
echo "<td>".$achat['designation']."</td>";
echo "</tr>";
}
echo "</table>";
echo "<a href=test.php?action=destroy>Détruire les sessions</a>";
}
?>
salut , enfin un résultat qui me remonte le moral , désormais il y a l'affichage de la référence , de la taille et de la quantité , pour ce qui est de la désignation ,elle s'affiche , mais le problème c'est que ça s'affiche pas dans le même tableau que les autres , c'est a dire ça s'affiche au dessus du tableau et une fois je cherche une autre référence ça change ( la référence déjà affiché ne reste pas elle disparait et laisse place a la nouvelle )je pense que le problème vient de cette partie du script
Merci si tu arrive a trouver l'erreur et le moyen de sauvegarder la designation dans le tableau comme le reste, 100000000000merci en tout les cas
$i = 0;
echo "<table border=1 cellspacing=0 cellpadding=0 bordercolor=black>";
echo "<tr>";
echo $donnees['designation']; // voila la partie en question
echo "<td width=100> Références</td>";
echo "<td width=50> Taille</td>";
echo "<td width=50> Quantité</td>";
echo"<td width=60> Designation</td>";
echo "</tr>";
foreach( $_SESSION['achats'] as $achats ) // utilise foreach() c'est beaucoup plus simple
{
echo "<tr>";
echo "<td>".$achats['ref']."</td>";
echo "<td>".$achats['taille']."</td>";
echo "<td>".$achats['qte'] ."</td>";
echo "<td>".$achats['designation']."</td>";
echo "</tr>";
}
echo "</table>";
Merci si tu arrive a trouver l'erreur et le moyen de sauvegarder la designation dans le tableau comme le reste, 100000000000merci en tout les cas
salut,
ça va venir !!!
je te propose deux petites optimisations : remplacer les guillemets par des apostrophes et ajouter des tabulations et des retours à la ligne à la sortie HTML (pour le moment ça ne doit pas être très lisible !).
ça va venir !!!
je te propose deux petites optimisations : remplacer les guillemets par des apostrophes et ajouter des tabulations et des retours à la ligne à la sortie HTML (pour le moment ça ne doit pas être très lisible !).
<?php
echo "\t" , '<table border=1 cellspacing=0 cellpadding=0 bordercolor=black>' , "\r\n";
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td width=100> Références</td>' , "\r\n";
echo "\t\t\t" , '<td width=50> Taille</td>' , "\r\n";
echo "\t\t\t" , '<td width=50> Quantité</td>' , "\r\n";
echo "\t\t\t" , '<td width=60> Désignation</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
// je suppose que $donnees contient toutes les infos
// à propos de l'article sélectionné
// il suffit d'insérer la ligne avant les autres
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['designation'].'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
foreach( $_SESSION['achats'] as $achats )
{
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['designation'].'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
}
echo "\t" , '</table>' , "\r\n";
?>
SALUT , merci c'est beaucoup plus lisible comme ça ;)
mais je n'arrive toujours pas a comprendre pourquoi la désignation ne reste pas dans la case qui lui est approprié ? a chaque fois que je recherche une autre référence elle disparait malgré que la référence lui correspondante reste si tu vois ce que je veux dire .
Pour plus de détails ce qui se passe lorsque je clic sur valider , il y a devant moi la réf , la taille , la qt et la désignation , chacune dans une case , je recherche une autre réf ce que j'ai déjà noté descend d'une case ( c'est normal ) mais la désignation elle disparait . Pourtant sur le code il y a pas de différence
mais je n'arrive toujours pas a comprendre pourquoi la désignation ne reste pas dans la case qui lui est approprié ? a chaque fois que je recherche une autre référence elle disparait malgré que la référence lui correspondante reste si tu vois ce que je veux dire .
Pour plus de détails ce qui se passe lorsque je clic sur valider , il y a devant moi la réf , la taille , la qt et la désignation , chacune dans une case , je recherche une autre réf ce que j'ai déjà noté descend d'une case ( c'est normal ) mais la désignation elle disparait . Pourtant sur le code il y a pas de différence
Ce n'est pas normal , je viens de vérifier et je me suis rendu compte que la désignation n'est pas enregistré dans la session ,il n y a que son affichage et non pas l'enregistrement => c'est donc normal qu'elle disparait a chaque fois , reste a savoir comment arranger ça . je planche dessus mais je pense que ça vient de la déclaration de la variable session non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yep, je comprends mieux le problème et suis d'accord avec le diagnostique.
peux-tu nous donner le bout de code qui se charge d'affecter les valeurs à la variable de session, stp ?
peux-tu nous donner le bout de code qui se charge d'affecter les valeurs à la variable de session, stp ?
oui bien sur le voila
Dans le tableau une fois affiché , on peut mettre la quantite dans un input du genre
<input type="text" value= "<?php echo $donnees['prenom']; ?>" name="prenom"; >
pour que la quantite soit dans un champ de sorte que pour l'annuler il suffit de mettre 0 .
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Client.html</title>
<script language="Javascript1.2" type="text/javascript">
<!--
function codeTouche(evenement)
{
for (prop in evenement)
{
if(prop == 'which') return(evenement.which);
}
return(evenement.keyCode);
}
function scanTouche(evenement)
{
var reCarSpeciaux = /[\x00\x08\x0D]/;
var reCarValides = /\d/;
var codeDecimal = codeTouche(evenement);
var car = String.fromCharCode(codeDecimal);
var autorisation = reCarValides.test(car) || reCarSpeciaux.test(car);
return autorisation;
}
-->
</script><?php
session_start();
mysql_connect('localhost','root') or die(mysql_error());
mysql_select_db('applicatif') or die(mysql_error());
if(isset($_POST) &&!empty($_POST['reference']) )
{
$ref = $_POST['reference'];
}
$sql = "select * from produit where ref='".$ref."' " ;
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$donnees = mysql_fetch_array($req);
//voila la partie qui pose probleme
$_SESSION['achats'][] = array('ref' => $_POST['reference'],'qte' => $_POST['qte'],'taille'=>$_POST['taille']);
echo "<br>";
$i = 0;
echo "\t" , '<table border=1 cellspacing=0 cellpadding=0 bordercolor=black>' , "\r\n";
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td width=100> Références</td>' , "\r\n";
echo "\t\t\t" , '<td width=50> Taille</td>' , "\r\n";
echo "\t\t\t" , '<td width=50> Quantité</td>' , "\r\n";
echo "\t\t\t" , '<td width=60> Désignation</td>' , "\r\n";
echo "\t\t\t" , '<td width=60> Prix</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
// je suppose que $donnees contient toutes les infos
// à propos de l'article sélectionné
// il suffit d'insérer la ligne avant les autres
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['designation'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$donnees['prix'] .'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
foreach( $_SESSION['achats'] as $achats )
{
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['designation'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['prix'].'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
}
echo "\t" , '</table>' , "\r\n";
echo "<a href=teste.php?action=session_unset();>Détruire les sessions</a>";
?>
<form action="teste.php" method="post">
Référence : <input type="text" name="reference" onKeyPress="return scanTouche(event)"><br>
Taille : <input type="text" name="taille" onKeyPress="return scanTouche(event)" ><br>
Quantite : <input type="text" name="qte" value="1" onKeyPress="return scanTouche(event)"><br>
<input type="submit" name="submit" value="Validez">
</form>
Dans le tableau une fois affiché , on peut mettre la quantite dans un input du genre
<input type="text" value= "<?php echo $donnees['prenom']; ?>" name="prenom"; >
pour que la quantite soit dans un champ de sorte que pour l'annuler il suffit de mettre 0 .
salut,
surfement, l'info est pas ajoutée à '$_SESSION['achats']'…
surfement, l'info est pas ajoutée à '$_SESSION['achats']'…
$_SESSION['achats'][] = array( 'ref' => $donnees['ref'] , 'qte' => $donnees['qte'] , 'taille' => $donnees['taille'] , 'designation' => $donnees['designation'] );
exactement !! ça marche super mais il y a juste un truc la même ligne apparait deux fois , c'est a dire lorsque par exemple je choisi trois articles au tableau il y en a 4 , les trois que j'ai chois plus le dernier enregistré deux fois. ça vient de la boucle tu pense ?et pour le truc de l'input tu as une idée ? et 10000000000000000000 merci
ah ba vi !!!
comme je ne teste rien et que ce n'est pas mon code je ne vois pas les évidences…
enlève ça :
comme je ne teste rien et que ce n'est pas mon code je ne vois pas les évidences…
enlève ça :
// je suppose que $donnees contient toutes les infos // à propos de l'article sélectionné // il suffit d'insérer la ligne avant les autres echo "\t\t" , '<tr>' , "\r\n"; echo "\t\t\t" , '<td>'.$donnees['ref'].'</td>' , "\r\n"; echo "\t\t\t" , '<td>'.$donnees['taille'].'</td>' , "\r\n"; echo "\t\t\t" , '<td>'.$donnees['qte'] .'</td>' , "\r\n"; echo "\t\t\t" , '<td>'.$donnees['designation'].'</td>' , "\r\n"; echo "\t\t\t" , '<td>'.$donnees['prix'] .'</td>' , "\r\n"; echo "\t\t" , '</tr>' , "\r\n";
Désole si je pose ma question avec du retard ( examens obligent :) mais il y a un problème avec foreach qui est que lorsque j'affiche la page au début étant donné qu'il n y a encore rien de saisie
Warning: Invalid argument supplied for foreach() in C:\wamp\www\tests\references.php on line 170
ça me met et ça disparait juste après avoir saisie ma première référence , tu aurais pas une idée sur un moyen d'eviter cela ? merci
Warning: Invalid argument supplied for foreach() in C:\wamp\www\tests\references.php on line 170
foreach( $_SESSION['achats'] as $achats )
{
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['designation'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['prix'].'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
}
echo "\t" , '</table>' , "\r\n";
ça me met et ça disparait juste après avoir saisie ma première référence , tu aurais pas une idée sur un moyen d'eviter cela ? merci
salut,
pardon pour le delais, je ne traine plus autant qu'avant sur le forum…
je suppose que c'est parce que ta variable de session vaut soit null, soit est une chaine de caractère.
essaie de tester l'existence de la variable :
ou si c'est bien un tableau :
à plus
pardon pour le delais, je ne traine plus autant qu'avant sur le forum…
je suppose que c'est parce que ta variable de session vaut soit null, soit est une chaine de caractère.
essaie de tester l'existence de la variable :
if( isset( $_SESSION['achats'] ) )
{
foreach( $_SESSION['achats'] as $achats )
{
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['designation'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['prix'].'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
}
echo "\t" , '</table>' , "\r\n";
}
ou si c'est bien un tableau :
if( is_array( $_SESSION['achats'] ) )
{
foreach( $_SESSION['achats'] as $achats )
{
echo "\t\t" , '<tr>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['ref'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['taille'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['qte'] .'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['designation'].'</td>' , "\r\n";
echo "\t\t\t" , '<td>'.$achats['prix'].'</td>' , "\r\n";
echo "\t\t" , '</tr>' , "\r\n";
}
echo "\t" , '</table>' , "\r\n";
}
à plus