[RESOLU] Interactions avec des boutons injectés

Eléphant du PHP | 151 Messages

22 sept. 2014, 08:02

Aie !
Supprime déjà tout ce qui est du formatage des table (table, thead...) et mets des div avec formatage des balises.
As tu fait F12(pour Chrome au moins, bon allié de dév web... FF aussi !) de ton clavier pour observer les évènements et erreurs ?
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 27 Messages

22 sept. 2014, 08:10

Aie !
Supprime déjà tout ce qui est du formatage des table (table, thead...) et mets des div avec formatage des balises.
As tu fait F12(pour Chrome au moins, bon allié de dév web... FF aussi !) de ton clavier pour observer les évènements et erreurs ?
Oui, c'est bon, j'arrive à atteindre mon fichier Javascript grâce à Firebug notamment. Suppimer le formatage des tables ? En gros mettre que des div et des span ?
<?php include "../include/constantes.php";
	  include_once "../class/MySQL.php";
?>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta content="IE=edge" http-equiv="X-UA-Compatible">
	<!-- Responsive Design -->
	<meta content="width=device-width, initial-scale=1" name="viewport">
	<meta content="" name="Tableau d'affichage">
	<meta content="" name="Unnamed">
	<title>Application université</title>
	<!-- Application du CSS -->
	<link rel="stylesheet" href="../css/bootstrap.min.css"/>
	<link rel="stylesheet" href="../css/supplement.css"/>
	<link rel="stylesheet" href="../css/glyphicons.css"/>
</head>
<body>
	<?php include "../include/header.php"; ?> 
	<div class="container">
		<div class="col-md-12">
			<div class="table-responsive"> 
				<div">
					<h2>Multifonctions</h2>
					<div>
						<div>
							<span>Id</span>
							<span>Modèle</span>
							<span>N° de série</span>
							<span>N° SIUF</span>
							<span>Emplacement</span>
							<span>Actions</span>
						</div>
						<div>
						<?php 
							// Création de l'objet MySQL.
							$madatabase = new MySQL();
							// Connexion, récupération et sélection de la base de données.
							$link = $madatabase->connect();
							$madatabase->select();
							// Création de la requête SQL.
							$sql = "SELECT devices_fricopy.id, model, serialNumber, siufNumber, building 
									FROM emplacements_fricopy 
									INNER JOIN devices_fricopy 
									ON emplacements_fricopy.id = devices_fricopy.emplacement_id";
							$result = mysqli_query($link,$sql) 
							OR DIE (mysqli_error($link));
							// Tant que qu'il y a des lignes, on affiche les données.
							$numberId = 0;
							while ($ligne = $result->fetch_assoc()) {
								++$numberId;
								// Injection HTML & PHP
								print(
								"<div id='$numberId'>".
								"<span>".$ligne['id']." "."</span>".
								"<span>".$ligne['model']." "."</span>".
								"<span>".$ligne['serialNumber']." "."</span>".
								"<span>".$ligne['siufNumber']." "."</span>".
								"<span>".$ligne['building']."</span>".
								"<span>".
								'<button class="btn btn-primary btn-mini actionUpdateButton">
								<i class="glyphicon glyphicon-pencil">
								</i> Editer</button>'.
								'<button class="btn btn-danger btn-mini actionDeleteButton">
								<i class="glyphicon glyphicon-remove">
								</i> Supprimer</button>'.
								"</span>".
								"</div>");
							}
						?>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
	<?php include "../include/footer.php"; ?>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
	<script src="../js/bootstrap.min.js"></script>
	<script src="../js/ajaxDelete.js"</script>
	<script src="../js/ajaxUpdate.js"</script>
	<!-- <script type="text/JavaScript" src="js/ajax.js"></script> -->
</body>
</html>
[EDIT] : Le lien Javascript ne marchait pas pour une simple histoire de Path, et des "," :evil:

Eléphant du PHP | 151 Messages

22 sept. 2014, 08:14

Aie !
Supprime déjà tout ce qui est du formatage des table (table, thead...) et mets des div avec formatage des balises.
As tu fait F12(pour Chrome au moins, bon allié de dév web... FF aussi !) de ton clavier pour observer les évènements et erreurs ?
Oui, c'est bon, j'arrive à atteindre mon fichier Javascript grâce à Firebug notamment. Suppimer le formatage des tables ? En gros mettre que des div et des span ?

Oui ! Tu mets table et head mais après plus de tr et td... un chouilla incohérent.
[EDIT] : Le lien Javascript ne marchait pas pour une simple histoire de Path, et des "," :evil:
Donc maintenant ça marche ? =D>
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 27 Messages

22 sept. 2014, 08:18

Aie !
Supprime déjà tout ce qui est du formatage des table (table, thead...) et mets des div avec formatage des balises.
As tu fait F12(pour Chrome au moins, bon allié de dév web... FF aussi !) de ton clavier pour observer les évènements et erreurs ?
Oui, c'est bon, j'arrive à atteindre mon fichier Javascript grâce à Firebug notamment. Suppimer le formatage des tables ? En gros mettre que des div et des span ?

Oui ! Tu mets table et head mais après plus de tr et td... un chouilla incohérent.
[EDIT] : Le lien Javascript ne marchait pas pour une simple histoire de Path, et des "," :evil:
Donc maintenant ça marche ? =D>
Partiellement ! Je t'explique, quand j'écris dans cet ordre :
	<script src="../js/ajaxUpdate.js"</script>
	<script src="../js/ajaxDelete.js"</script>
L'update interréagit, mais pas la suppression. Vice versa si j'inverse l'ordre des lignes. Pourquoi n'arrive t'il pas à faire marcher ces deux scripts simultanément?

Eléphanteau du PHP | 27 Messages

22 sept. 2014, 08:23

Et je ne comprends pas comment vais-je utiliser mon "$numberId" à travers l'évènement.

Eléphant du PHP | 151 Messages

22 sept. 2014, 08:32

Y'a quoi dans ces fichiers ?
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 27 Messages

22 sept. 2014, 08:34

Y'a quoi dans ces fichiers ?
Dans les Javascripts ? :

[javascript]$(document).ready( function () {
$('button.actionDeleteButton').click( function() { // à la soumission du formulaires
$.ajax({ // fonction permettant de faire de l'ajax
type: "POST", // methode de transmission des données au fichier php
url: "crud.php", // url du fichier php
data: $(this).serialize(), // données sérialisées
dataType: 'json', // type de données
success: function(msg){ // si l'appel a bien fonctionné
if(msg==1) // si la connexion en php a fonctionnée
{
alert("DELETE réussie");
}
else // si la connexion en php n'a pas fonctionnée
{
alert("Recherche échouée");
}
}
});
return false; // permet de rester sur la même page à la soumission du formulaire
});
});[/javascript]

Le fichier PHP appelé est "crud.php" qui lui, pour l'instant, ne me fait qu'un simple "echo test", que je peux voir qu'il est récupéré via "RESPONSE" dans Firebug. Mais impossible de faire fonctionner ces deux fichiers similaires... Ca me rend un peu fou !

Eléphant du PHP | 151 Messages

22 sept. 2014, 08:44

Quand une action est passée, oui c'est normal.
Une fois que tu as envoyé l'action d'un bouton, il faudrait en gros recharger le js lié au div.
Un peu compliqué.
Mais je comprends pas l'intérêt de faire update et delete...
Le $numberid sert à individualiser chaque enregistrement, argument pouvant être passé dans la data envoyée au crunch.php
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 27 Messages

22 sept. 2014, 08:49

Quand une action est passée, oui c'est normal.
Une fois que tu as envoyé l'action d'un bouton, il faudrait en gros recharger le js lié au div.
Un peu compliqué.
Mais je comprends pas l'intérêt de faire update et delete...
Le $numberid sert à individualiser chaque enregistrement, argument pouvant être passé dans la data envoyée au crunch.php
Je ne comprends pas le fait que tu ne comprennes pas l'intérêt de mes boutons. (Ca devient complexe haha).
Comment pallier à ce problème alors? Comme recharger le le/les JS après qu'un ait été parcouru ? Désolé, je pose trop de questions à la minute.

[EDIT] : Je comprends l'utilité de $numberId, mais pour le passer dans mon fichier PHP où je ferai mes requêtes SQL d'update/delete, comment m'y prendre ?

Eléphanteau du PHP | 27 Messages

22 sept. 2014, 09:07

En gros, comment envoyer "id_row" vers mon fichier PHP? (Pour autant que cette ligne ci-dessous est correcte)

[javascript]var id_row = $(this).attr('id');[/javascript]

Eléphant du PHP | 151 Messages

23 sept. 2014, 08:14

Salut,

Désolé pas eu beaucoup de temps pour répondre, regarde dans ce bout de code mis déjà précédemment, tu y fais le rapprochement avec tes données.
Dans mon cas, je peux faire des update et delete qui s’enchaînent, ex : le delete après le update
Salut,

Comme dit hier, les balises div et span seront plus opportunes pour travailler :

Code : Tout sélectionner

<?php // Création de l'objet MySQL. $madatabase = new MySQL(); // Connexion, récupération et sélection de la base de données $link = $madatabase->connect(); $madatabase->select(); // Création de la requête SQL. $sql = "SELECT devices_fricopy.id, model, serialNumber, siufNumber, building FROM emplacements_fricopy INNER JOIN devices_fricopy ON emplacements_fricopy.id = devices_fricopy.emplacement_id"; $result = mysqli_query($link,$sql) OR DIE (mysqli_error($link)); // Tant que qu'il y a des lignes, on affiche les données. $numberId = 0; while ($ligne = $result->fetch_assoc()) { ++$numberId; // Injection HTML & PHP echo "<div id='$numberId'>". "<span>".$ligne['id']." "."</span>". "<span>".$ligne['model']." "."</span>". "<span>".$ligne['serialNumber']." "."</span". "<span>".$ligne['siufNumber']." "."</span>". "<span>".$ligne['building']."</span>". "<span>". '<button class="btn btn-primary btn-mini"> <i class="glyphicon glyphicon-pencil"> </i> Editer</button>'. '<button class="btn btn-danger btn-mini"> <i class="glyphicon glyphicon-remove"> </i> Supprimer</button>'. "</span>". "</div>"; } ?>
Ensuite pour le javascript, le jquery, oui c'est à peu près ça.

Ce matin, je n'ai pas beaucoup de temps, pour aller vite, je vais te donner le code que j'utilise dans mon script de mailing :

Code : Tout sélectionner

<?php if (count($mails_errors)>0){ foreach($mails_errors as $row){ echo '<form id="'.$row['hash'].'">'; echo '<input type="text" class="input" value="'.$row['email'].'" name="this_mail" id="this_mail" size="40" />'; echo $row['status']; echo '<input type="hidden" name="list_id" value="'.$list_id.'" />'; echo '<input type="hidden" name="hash" value="'.$row['hash'].'" />'; echo "<input type='hidden' name='token' value='$token' />"; echo '<input type="button" name="action" class="actionMail" value="UPDATE" id="update" />'; echo '<input type="button" name="action" class="actionMail" value="DELETE" id="delete" />'; echo '</form>'; } } else { echo '<h4 class="alert_info">Pas d\'adresse(s) e-mail incidentée(s) à traiter. Good job ! <img src="js/tinymce/plugins/emoticons/img/smiley-cool.gif" alt="Yeah ! You did it !" title="Yeah ! You did it !" width="18" heigh="18" /></h4>'; echo '<div class="spacer"></div>'; } ?> <script> $("input.actionMail").click(function(){ var hideItem='#'+$(this).closest("form").attr('id'); $.ajax({type: "POST", url: "include/manager_mails.php", data: $(this).parents('form').serialize()+ '&'+ encodeURI($(this).attr('name'))+'='+ encodeURI($(this).attr('id')), success: function(data){ $(hideItem).html(data).addClass('success'); } }); }); </script>
La différence est que je mets chaque ligne dans un form, avec des inputs pour être propre en formulaire, et une fois l'action faite je cache la ligne.
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 27 Messages

23 sept. 2014, 08:17

Salut Arnaud!

J'ai concaténé mes 2 fichiers JS ensemble pour les évènements sur les boutons, ça fonctionne!
Maintenant, plus qu'à faire comprendre quelle ligne je veux altérer, grâce à ce $numberId!
Merci pour toute ton aide, nul besoin d'être désolé, tout ce que tu m'apportes est du bonus!

Bonne journée!

Eléphant du PHP | 151 Messages

23 sept. 2014, 08:56

Normalement, je viens de regarder ton code tu devrais être bon.
Fais un F12 et regarde ce que ton ajax envoie à crunch.php (via la console de chrome par exemple, dans le network), tu cliques sur crunch.php, et tu vois les headers avec les variables et valeurs envoyées au serveur. tu as aussi la réponse
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 27 Messages

23 sept. 2014, 09:22

J'essaie d'utiliser ta méthode pour cacher mon div associé à l'ID.
Dans mon Javascript, donc, je stocke l'ID :

[javascript]var hideItem='#'+$(this).("div").attr('id');[/javascript]

Et je l'utilise pour cacher mon div:

[javascript]$(hideItem).html(data).addClass('success');[/javascript]

?

Firebug me renvoit :

Code : Tout sélectionner

SyntaxError: missing : after property id var hideItem='#'+$(this).("div").attr('id');

Eléphant du PHP | 151 Messages

23 sept. 2014, 12:27

[javascript]var hideItem='#'+$(this).attr('id');[/javascript]
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");