Alerte disparition de table temporaire

Fermé
Jules - Modifié le 19 févr. 2023 à 04:00
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 19 févr. 2023 à 18:17

Bonjour

J'utilise une table temporaire.

Pour éviter de la recréer, je modifie un statut 'checked' à 1 (0 dans la table 'setup').

L'ennui est que dès que j'ai validé un formulaire, la table a disparu.

Le statut est toujours 0. Alors que si la table 'setup_tmp' existait, elle ne serait pas re-créée et donc je devrais retrouver le statut 'checked' 1.

<html>
<head>
<link rel="stylesheet" type="text/css" href="c.css"> </head>
<body> 

<?php

function transaction_start ( $player_connect )
{
  $sql = "create temporary table if not exists setup_tmp select * from setup" ;
  mysqli_query ( $player_connect , $sql ) ;
  $sql = "select checked from setup_tmp where value = 'setup_status'" ;
  $res = mysqli_query ( $player_connect , $sql ) ;
  while ( $row = mysqli_fetch_assoc ( $res )) $checked_status = $row [ "checked" ] ;
  
  echo 'status...before...**' . $checked_status . '**<br><br>' ;
  if ( ! $checked_status ) // setup_tmp vient d'être créee
    {
    $sql = "update setup_tmp set checked=1
            where value = 'setup_status' " ;
    mysqli_query ( $player_connect , $sql ) ;  
                 
    $sql = "select checked from setup_tmp where value = 'setup_status'" ;
    $res = mysqli_query ( $player_connect , $sql ) ;
    while ( $row = mysqli_fetch_assoc ( $res )) $checked_status = $row [ "checked" ] ;  
    echo 'status..after...**' . $checked_status . '**<br><br>' ;                   
    }
}

include "connect_player.php" ;

echo date( "d/m/Y H:i:s", time () ) . '<br><br>';

transaction_start ( $player_connect ) ;
?>

<form action="c.php" method="POST" name="f">
<input type="submit" name="s" value="SUBMIT" />

</form></body></html>

Résultat invariable:

status...before...**0**

status..after...**1**
A voir également:

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 févr. 2023 à 08:36

bonjour,

Si je comprends bien, tu souhaites que ta table soit permanente.

Pourquoi alors la créer comme une table temporaire?

0

Pour qu'elle soit différente pour chaque utilisateur.

J'avais (peut-être mal) compris qu'une table temporaire dirait autant qu'une session MySql.

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 févr. 2023 à 09:05

Tu n'expliques pas ce que tu souhaites mémoriser. 

Je suppose que tu veux enregistrer des informations relatives à la session entre le joueur et le site.  Dans ce cas, comment as-tu choisi de gérer ces sessions?  Si tu as choisi la méthode habituelle proposée par PHP, tu peux alors simplement utiliser les variables de session PHP.

Tu trouveras plein d'exemples en faisant une recherche "php variable session".

0

Revenons à ma question, si vous le voulez bien.

Est-ce normal que la table temporaire ait disparu après la soumission d'un formulaire ou bien l'ai-je mal utilisée ?

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 févr. 2023 à 18:17

C'est normal.  La table disparait quand la session mysql se termine.

C'est quoi, une session MySql?  Cela commence quand tu fais quelque chose de similaire à mysqli_connect(), et cela se termine, probablement, quand le code PHP de ta page se termine.

Si tu veux enregistrer une information par utilisateur, ajoute alors l'identification de l'utilisateur dans la table.

Ou utilise les variables de session de PHP.

0