Comparer colonne et date SQL en PHP

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

#Dudule100

Membre
Apr 6, 2014
40
0
126
Bonjour,

Tout est dans le titre. Je voudrais comparé une colonne du genre Expirationdate avec la date du jours. Et si c'est la même (a l'heure près) faire quelque chose.
Plus de détail en image :

Sa c'est ma table Registerkeys. Je voudrais que quand la date de la dernière colonne soit attente, sa supprime la ligne.
th1w.png


Sa c'est ma table Users. Je voudrais que la la ligne qui contient la serial de ma table Registerkeys soit elle aussi supprimer.
jytw.png


Mais je voudrais que sa check toutes les dates d'un coup et que sa supprime toutes celle qui sont attente d'un coup.
 

Sapuraizu

Nouveau Marchand
Apr 3, 2016
157
2
444
Déjà, je te conseil de ne pas enregistrer la date sous ce format, mais plutôt directement le timestamp (un champ int suffira dans ce cas) à l'aide de time() en php.
Une fois fais, tu n'auras plus qu'à effectuer une requête pour supprimer toutes les lignes où le expirationdate <= timestamp actuel
 

#Dudule100

Membre
Apr 6, 2014
40
0
126

Sapuraizu

Nouveau Marchand
Apr 3, 2016
157
2
444
Je l'ai dis dans mon message, t'as pris le temps de le lire ?
"à l'aide de time() en php"
 

#Dudule100

Membre
Apr 6, 2014
40
0
126
Je l'ai dis dans mon message, t'as pris le temps de le lire ?
"à l'aide de time() en php"

Bon alors voila ce que je fait :

PHP:
$date = time() + 2592000;
$rqt = $db->prepare('INSERT INTO Registerkeys(Expirationdate) VALUES(:Expirationdate)');
$rqt->bindValue('Expirationdate', $date);
$rqt->execute();

J'arrive bien a ajouter la date dans la colonnes avec 3 mois de plus mais après comment faire pour vérifier ?
 

Sapuraizu

Nouveau Marchand
Apr 3, 2016
157
2
444
SELECT * + Tu compares le timestamp que t'obtient à celui actuel.

---------- Message ajouté à 11h56 ---------- Le message précédent était à 20h51 ----------

Encore une fois tu n'as pas répondu, Résolu ou pas ?
 

#Dudule100

Membre
Apr 6, 2014
40
0
126
SELECT * + Tu compares le timestamp que t'obtient à celui actuel.

---------- Message ajouté à 11h56 ---------- Le message précédent était à 20h51 ----------

Encore une fois tu n'as pas répondu, Résolu ou pas ?

Alors, j'ai fait sa :
PHP:
<?php
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "name";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT ID, Hwid, ExpirationDate FROM Registerkeys";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

     while($row = $result->fetch_assoc()) {
         
         $dateDay = time();
         $date2 = $row["ExpirationDate"];
         
         $HWID = $row["Hwid"];
         
         if ($dateDay >= $date2) {
             // Expiré
              $sql = "DELETE Registerkeys WHERE id=" . $row["ID"];
              $conn->query($sql);
              
              // Si les id correspondent entre les 2 tables, faire ceci :
              // $sql = "DELETE Users WHERE id=" . $row["ID"];
              // $conn->query($sql);

              // Sinon :
                $sql = "SELECT ID, Hwid FROM Users";
                $result = $conn->query($sql);

                if ($result->num_rows > 0) {

                    while($row = $result->fetch_assoc()) {
              
                        if ($row["Hwid"] = $HWID){
                            
                            $sql = "DELETE Registerkeys WHERE id=" . $row["ID"];
                            $result = $conn->query($sql);
                            
                        }
                    }
                
                }
              
         } else {
             // Toujours valide.
         }
         
    }
}

$conn->close();
?>

Mais sa ne marche toujours pas.

Merci en tout cas de l'aide que vous apportez c'est cool
 

Sapuraizu

Nouveau Marchand
Apr 3, 2016
157
2
444
PHP:
<?php
	$rqt = $db->query('SELECT * FROM Registerkeys');
	while($data = $rqt->fetch(PDO::FETCH_ASSOC)){
		if($data['Expirationdate'] <= time()){
			//On supprime la date est passée (Faut quel a date sois sous forme de timestamp)
			$db->query('DELETE FROM Users WHERE Hwid = ?', $data['Hwid']);
			$db->query('DELETE FROM Registerkeys WHERE ID = ?', $data['ID']);
		}
	}
?>

Quelque chose dans le genre..?
 
Last edited:

#Dudule100

Membre
Apr 6, 2014
40
0
126
PHP:
<?php
	$rqt = $db->query('SELECT * FROM Registerkeys');
	while($data = $rqt->fetch(PDO::FETCH_ASSOC)){
		if($data['Expirationdate'] <= time()){
			//On supprime la date est passée (Faut quel a date sois sous forme de timestamp)
			$db->query('DELETE FROM Users WHERE Hwid = ?', $data['Hwid']);
			$db->query('DELETE FROM Registerkeys WHERE ID = ?', $data['ID']);
		}
	}
?>

Quelque chose dans le genre..?

Donc si j'ai bien compris sa doit donner quelque chose comme sa :
PHP:
<?php
$servername = "localhost";
$username = "u124946711_user";
$password = "Jojolila44";
$dbname = "u124946711_name";

$conn = new mysqli($servername, $username, $password, $dbname);

$rqt = $db->query('SELECT * FROM Registerkeys');
while($data = $rqt->fetch(PDO::FETCH_ASSOC))
{
  if($data['Expirationdate'] <= time())
  {
    //On supprime la date est passée (Faut quel a date sois sous forme de timestamp)
    $db->query('DELETE FROM Users WHERE Hwid = ?', $data['Hwid']);
    $db->query('DELETE FROM Registerkeys WHERE ID = ?', $data['ID']);
  }
}

$conn->close();
?>

En tout ca si c'est sa il me sort une erreur :
Fatal error: Call to a member function query() on a non-object in /home/u124946711/public_html/time.php on line 9
 

Sapuraizu

Nouveau Marchand
Apr 3, 2016
157
2
444
Je me repete mais, tu fais expres ? Bordel tu prends même pas le temps de comprendre ou alors t'es pas finis.
remplace $db par $conn, t'aurais dû l'avoir compris avec mes autres exemples.