J'ai un problème très spécifique
Je souhaite enregistrer / charger deux variables à la base de données et la troisième variable utilise comme identification P>
mon actuel-Code de travail: p> < pré> xxx pré>
Ce que je veux dans les mots: quand je me connecte avec nom (etc Roman [$ FirstName variable]), il chargera des numéros de dollars de dollars antérieures et des secondes de dollars, puis de sauvegarder chaque (etc minute ) Nouveau (c'est une minuterie, alors économisez une heure) p>
J'espère que vous comprenez P>
Merci pour votre temps, je suis APRRECIADE IT P>
My Minuterie actuelle .php p>
p> et le db.php: p>
4 Réponses :
Veuillez créer deux tables une table pour enregistrer deux variables et une autre table pour enregistrer l'identification. Ensuite, utilisez des clés étrangères et des relations avec des jointures. J'espère que ces étapes vont sauver votre problème. P>
Pouvez-vous s'il vous plaît me donner un code? Im totalement amateur, et je ne sais pas comment le faire .. merci
Veuillez remplacer le code dans votre "Time.PHP" avec ceci:
<?php
header('Content-Type: text/html; charset=Windows-1250');
session_start();
$firstName = $_SESSION['firstname'];
$minutes = $_POST['minutes'];
$seconds = $_POST['seconds'];
// DB connection
$host = 'localhost';
$db_name = 'zadmin';
$username = 'xxx';
$password = 'zadmin_nahovno';
try {
$conn = new PDO('mysql:host='.$host.';dbname='.$db_name, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection Error: " . $e->getMessage();
}
// create query
$query = 'INSERT INTO time SET meno = :firstName, minuty = :minutes, sekundy = :seconds';
// prepare statement
$stmt = $conn->prepare($query);
// bind data
$stmt->bindParam(':firstName', $firstName);
$stmt->bindParam(':minutes', $minutes);
$stmt->bindParam(':seconds', $seconds);
// execute query and check if it failed or not
if ($stmt->execute()){
echo "Query Successful";
} else {
printf("Error: %s.\n", $stmt->error);
}
?>
/*
This should work (if not, then something is wrong with your variables, you should look into your variables and see if they are actually holding any data). You can make use of var_dump() to examine the variables.
*/
Meno UžÃvateľa: <b> <?php echo $firstName; ?> </b>
</br>
</br>
Momentálne majnÃÅ¡ : <b> <?php echo $minutes; ?> Minút </b> <b> a </b> <b> <?php echo $seconds; ?> Sekúnd </b>
</br>
</br>
Vous manquez un "après: secondes
Sa ne fonctionne pas .... Lorsque j'insère votre code, le code sous // ne montre pas, ne s'affiche pas
Avez-vous des erreurs? Si vous faites, merci de les partager.
Rien, vide. Lorsque je n'aijoune que le code ONNECT: mysql_connect ('127.0.0.1', 'zadmin', 'xxx'); mysql_select_db ("zadmin_nahovno") ;. Son okey, mais quand je mets plein code, sa seule vide
Je vous ai dit de garder la connexion PDO, c'est la meilleure façon de travailler avec les requêtes et d'éviter l'injection SQL. Vous n'auriez pas dû changer la connexion de PDO à MySQLI Connection. Je vais éditer ma réponse et ré-écrire tout le temps.php pour vous afin que vous puissiez simplement remplacer votre code avec le mien
@Hnusnypeb, j'ai mis à jour la réponse pour vous afin que vous puissiez essayer de remplacer votre code avec le mien.
Okey, son travail, mais le nom est zéro et que les variables ne reprennent pas. Et encore une chose. J'ai un code très spécifique dans Previus PHP (je vais éditer le message pour vous montrer), et il spammer ma base de données (Cuz, c'est à chaque fois que la valeur de temps). Mais merci
Okey, les noms fonctionnent .. ma table mal configurée ... mais ce n'est pas en train de récupérer le temps, et c'est spammer ma table
Y a-t-il un moyen, de créer une ligne dans la table et de ne pas sauvegarder une variable entière, mais n'ajoute que +1 (à secondes) ... parce que c'est la mise à jour chaque seconde, elle sera accurante .. Merci. Quelque chose comme: secondes $ + 1 code
Ok, je pense que je reçois ce que vous essayez de faire. Vous essayez d'obtenir le nombre de fois qu'un utilisateur a passé sur une page et de le stocker dans votre DB. Je n'ai jamais fait cela auparavant, il me faudra un peu de temps pour trouver un algorithme de la façon de faire cela. Mais, à mon avis, je ne pense pas que vous le faites de bonne façon. Je vais mettre à jour ma réponse dès que je monte avec quelque chose
@Hnusnypeb Avez-vous été capable de résoudre votre problème ou d'attendre toujours une réponse de moi?
Je suis en attente de réponse
Ok, je posterai une autre réponse à ce sujet pour vous
@hnusny pleub, donc afin d'obtenir le temps passé sur une page, j'ai écrit le code suivant pour vous.
Premier, dans votre script, vous devez écrire ceci: p>
<?php
if (isset($_POST['timeSpent'])){
$timeSpent = $_POST['timeSpent'];
// create query
$query = 'INSERT INTO user_time SET time = :time';
// prepare statement
$stmt = $conn->prepare($query);
// bind data
$stmt->bindParam(':time', $timeSpent);
// execute query and check if it failed or not
if ($stmt->execute()){
echo "Query Successful";
} else {
printf("Error: %s.\n", $stmt->error);
}
}
?>
Bonjour, merci de réponse, mais je reçois une page vierge (et seulement cette erreur, lorsque vous ajoutez une variable d'écho: "Variable non définie: TIMEPENT ...." J'ai édité la poste pour la situation actuelle
De toute évidence, la variable est indéfinie car je ne l'ai pas défini à l'extérieur de la déclaration IF mais à l'intérieur de la déclaration IF. Vous ne devez pas placer le echo $ Timespent code> en dehors de la déclaration IF, il devrait être situé à l'intérieur de la déclaration IF.
Okey, j'ai édité mon code, édité toujours avec une page vierge sur la base de données PHP et la variable non définie. Merci
Okey, je l'ai eu. Voici un code:
Page de synchronisation: P>
<?php
header('Content-Type: text/html; charset=Windows-1250');
session_start();
$firstName = $_SESSION['firstname'];
$_SESSION['firstname'] = $firstName;
$servername = "db.xxxx.gsp-europe.net";
$username = "xxxxxx";
$password = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
$dbname = "xxxxx";
/// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
$stmt = $conn->prepare("SELECT points FROM member_profile WHERE user_id = '$firstName'");
$stmt->execute();
$array = [];
$resalts = $stmt->get_result();
while ($row = $resalts->fetch_array(MYSQLI_ASSOC))
{
$points = $row['points'];
}
$hours = floor($points / 3600);
$mins = floor($points / 60 % 60);
$secs = floor($points % 60);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// check if the user exist
$check = "SELECT * FROM `member_profile` WHERE user_id = '$firstName'";
$result = mysqli_query($conn,$check) or die(mysqli_error($conn));
$rows = mysqli_num_rows($result);
//if exist increse points with 1
if($rows>=1){
$sql = "UPDATE `member_profile` SET points = points + 1 WHERE user_id = '$firstName'";
if ($conn->query($sql) === TRUE) {
echo "";
} else {
echo "Error doing sum thingz: " . $conn->error;
}
}
//if don't exist create user with points 0
if($rows==0)
{
$query = "INSERT into `member_profile` (user_id, points) VALUES ( '$firstName' ,'0')";
$result = mysqli_query($conn,$query)or die(mysqli_error($conn));
$conn->close();
}
?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=Windows-1250" />
</head>
<body>
</div>
</br>
Meno UĹľĂvateÄľa: <b> <?php echo $firstName; ?> </b>
</br>
</br>
Overall time : <b> <?php echo $timeFormat = sprintf('%02d:%02d:%02d', $hours, $mins, $secs); ?> </b>
</body>
</html>
N'utilisez pas
mySQL _ code> -fonctions, ils sont obsolètes depuis des années et supprimés dans PHP7. UtilisezmySQL _ code> ouPDO code>. et utilisez des instructions paramétrées, votre code est ouvert à Attaques d'injection SQL B>En disant simplement que quelque chose est "ne fonctionne pas" n'est pas une déclaration de problème utile. Qu'est-ce que est i> se passe-t-il? Comment cela diffère-t-il de ce que vous voulez? Quel débogage avez-vous déjà fait?
@Patrickq - ne fonctionne pas, il ne fait pas d'enregistrer et de charger des variables. Okey j'ai édité le message avec mon code actuel ... et pour l'instant, cela ne montre rien, et ne pas sauver quoi que ce soit ...
Il n'y a pas de fonction
mysql _ code>. Il devrait êtremysql_query () code>.Vérifiez les erreurs
mysql_query (...) ou mourir (mysql_error ()) code>.corrige mysql_ il devrait être mysql_query ();
if (mysql_error ()) mourir ('error, insérer une requête d'insertion') ;. J'ai édité mon code actuel .. Toujours une erreur
J'ai édité ... maintenant je vous montre comment je suis connecté
Vous ne devez pas vous connecter avec PDO et utiliser MySQL pour exécuter des requêtes.
D'accord, je vais essayer SQL Connect
Non, gardez la connexion PDO. Je vais fournir une réponse pour vous dans une seconde.