Script php

Overcride
Invité n'ayant pas de compte PHPfrance

05 nov. 2011, 17:04

Bonjour,
J'essaie de créer un script qui gère les admins d'un serveur de jeu. Je voudrais que grace à un formulaire je puisse stocker dans une base de donnée, le speudo du joueur et quelques autres données mais aussi faire un genre de compte à rebours pour me rappeler dans combien de temps il ne sera plus admin. Hors tous ce passe bien sauf le compte à rebours que je ne sais absolument pas faire et après quelque recherche je n'ai pas compris. Ou alors ca ne me dérange pas de mettre juste la date d'expiration mais la aussi ca coince car après que j'utilise DATE_ADD je en sais pas utiliser DATE_FORMAT ... pour mettre au format JJ/MM/AAAA.

Les dates dans ma base de donnée ont l’attribut DATE.

Je m'excuse si je suis pas assez précis n’hésitai pas à me demander plus d'info.

J'ai 3 page :

Index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

	<head>
		<title>test</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	</head>
	
	<body>
	
		<table>
			<caption>Liste des admins</caption>
			<tr>	
				<th>Speudo</th>
				<th>Steam amis</th>
				<th>Steam_ID</th>
				<th>Date de début</th>
				<th>Date de fin</th>
			</tr>
			
			<?php
				try
				{
					$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
					$bdd = new PDO('mysql:host=???;dbname=???', '????', '???', $pdo_options);
						
					$req = $bdd->query('SELECT id, speudo, steam_amis, steam_ID, DATE_FORMAT(date_debut, \'%d/%m/%Y\') AS date_fr, DATE_ADD(date_fin, INTERVAL 1 MONTH) AS date_expiration FROM formulaire_admin ORDER BY id DESC');
						
						
						
					while ($donnees = $req->fetch())
					{
			?>

						<tr>
							<td><?php echo htmlspecialchars($donnees['speudo']); ?></td>
							<td><?php echo htmlspecialchars($donnees['steam_amis']); ?></td>
							<td><?php echo htmlspecialchars($donnees['steam_ID']); ?></td>
							<td><?php echo htmlspecialchars($donnees['date_fr']); ?></td>
							<td>Il reste <?php echo htmlspecialchars($donnees['???']); ?>jour(s) avant expiration</td>
						</tr>
						

			<?php
					}
							
					$req->closeCursor();
  
				}
				catch(Exception $e)
				{
					die('Erreur : '.$e->getMessage());
				}
			?>
		</table>
		<br/>
		<br/>
		Pour mettre un nouveau admin cliquer <a href="admin/formulaire.php">ici</a>.

	</body>

</html>
Formulaire.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

	<head>
		<title>exemple</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	</head>
	
	<body>	
		<?php
			if (!isset($_POST['mot_de_passe']) OR $_POST['mot_de_passe'] != "???")
			{
		?>
				Veuillez entrer le mot de passe
				<form action="formulaire.php" method="post">
					<input type="password" name="mot_de_passe" />
					<input type="submit" value="Valider" />
				</form>
		<?php		
			}
			else
			{
		?>
				<p>
					<h2>test</h2>
					<form action="formulaire_post.php" method="post">
						<table>
							<tr>
								<td><label for="speudo">Speudo</label> :</td>
								<td><input type="text" name="speudo" id="speudo" /></td>
							</tr>
							
							<tr>
								<td><label for="steam_amis">Steam_amis</label> :</td>
								<td><input type="text" name="steam_amis" id="steam_amis" /></td>
							</tr>
							
							<tr>
								<td><label for="steam_ID">Steam_ID</label> :</td>
								<td><input type="text" name="steam_ID" id="steam_ID" /></td>
							</tr>
							
							<tr>
								<td></td>
								<td><input type="submit" value="Envoyer" /></td>
							</tr>
						
						</table>
					</form>
				</p>
		<?php
			}

		?>
	</body>
</html>
Formulaire_post.php
<?php
	try
	{
		$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
		$bdd = new PDO('mysql:host=???;dbname=???', '????', '???', $pdo_options);
    
		$req = $bdd->prepare('INSERT INTO formulaire_admin (speudo, steam_amis, steam_ID, date_debut, date_fin) VALUES(?, ?, ?, CURDATE(), CURDATE())');
		$req->execute(array($_POST['speudo'], $_POST['steam_amis'], $_POST['steam_ID'], ));
    
		header('Location: ../index.php');
	}
	catch(Exception $e)
	{
		die('Erreur : '.$e->getMessage());
	}
?>
Vous pouvez voir le résultat sur http://www.overcride.fr/exemple/script_php_liste_admin

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 nov. 2011, 19:25

salut,

y a quoi la normalement ? <td>Il reste <?php echo htmlspecialchars($donnees['???']); ?>jour(s) avant expiration</td>

je suppose date_expiration ?

SELECT DATE_FORMAT(date_debut, \'%d/%m/%Y\') AS date_fr, DATE_ADD(date_fin, INTERVAL 1 MONTH) AS date_expiration
tu prend la date de debut et tu lui applique un formatage, ça c'est bon
après tu prend la date de fin et tu lui ajoute un mois je ne vois pas l'interet dans ton cas :mrgreen:

si tu a un champ date de fin autant la mettre directement en dur ;)
si tu veut le gérer dynamiquement c'est
 
select date_add(date_debut, interval 1 month) as date_fin 
-- ou 

select date_debut + interval 1 month as date_fin

-- bien entendu tu peux y appliquer un date_format par dessus :)
select date_format(date_debut + interval 1 month, '%d/%m/%Y) as date_fin
tu peux tester cela facilement avec la console sql comme ceci
select date_format(now() + interval 1 month, '%d/%m/%Y') as date_fin;
qui donne
+------------+
| date_fin |
+------------+
| 05/12/2011 |
+------------+
1 row in set (0.00 sec)
@+
Il en faut peu pour être heureux ......

Overcride
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 17:54

Merci pour ta réponse j'ai eu ce que je désiré et en plus j'ai compris ^^, j'ai un autre soucis que pareil je n'arrive pas à régler. J'ai rajouter un lien supprimer à mon tableau pour pouvoir supprimer uniquement la ligne conservé. Problème : mon lien supprime tous ma table :/

monde code donne ca:

formulaire.php:
<tr>
		<td><?php echo htmlspecialchars($donnees['speudo']); ?></td>
		<td><?php echo htmlspecialchars($donnees['steam_amis']); ?></td>
		<td><?php echo htmlspecialchars($donnees['steam_ID']); ?></td>
		<td><?php echo htmlspecialchars($donnees['date_fr']); ?></td>
		<td><?php echo htmlspecialchars($donnees['date_fin']); ?></td>
		<td><a href="supprimer.php?s=$ID">supprimer</a></td>
	</tr>
supprime.php
<?php
	try
	{
		$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
		$bdd = new PDO('mysql:host=???;dbname=ipaa2', '???', '???', $pdo_options);
    
		$req = $bdd->prepare('DELETE FROM formulaire_admin');
		$req->execute(array($_GET['s']));
    
		header('Location: formulaire.php');
	}
	catch(Exception $e)
	{
		die('Erreur : '.$e->getMessage());
	}
?>

Overcride
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 17:55

Mon code*

Quelqu'un serrais m'aiguiller pour que je ne supprimer qu'un seule champ de la table ? svp

ViPHP
ViPHP | 2577 Messages

07 nov. 2011, 12:37

DELETE FROM formulaire_admin where id = XXXXX

Autrement, vérifie le HTML : <td><a href="supprimer.php?s=$ID">supprimer</a></td>
Ne faut il pas mettre "echo $ID" comme pour les autres données ? ou mettre l'id provenant de la table ?