Messagerie


Php mon amour

Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
mercredi 10 juin 2015 à 18:44
Hello je sèche avec le tuto de Nico sur les score en ligne.
Pour éviter les doublons, je souhaiterai updater le score si le nom existe déjà dans la base de donnée.
Quelqu'un voit quel script ajouter au post.php ?

// Connexion à la base de données
$bd = mysql_connect($adresse, $nom, $motpasse);
mysql_select_db($basedonnee, $bd);

// Récupération des variables provenant de MMF
$nom = stripslashes($_POST['nom']);
$score = stripslashes($_POST['score']);

// Condition de vérification des variables "score" et "nom" pour pouvoir exécuter la commande SQL d'insertion
if (isset($_POST['nom']) && isset($_POST['score']))
{

// Si le pseudo existe déjà, insérer le nouveau score correspondant au nom existant
ICI <-------------

// Si non, enregistrement du nom et score dans la table "score" de la base de données.
mysql_query("INSERT INTO score VALUES('', '" . $nom . "', '" . $score . "')");
}

// Déconnexion de la base de données
mysql_close();
?>
Modifié le mercredi 10 juin 2015 à 18:48 par Patrice
Cyberclic
664 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
mercredi 10 juin 2015 à 19:00
Moi je verrais un truc du genre :

UPDATE score
SET score = $score
WHERE nom = $nom
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
mercredi 10 juin 2015 à 19:08
Et si en début de fichier j’efface la ligne de la table correspondant au nom avant de la réécrire ?
Je suis désolé je suis une burne en syntaxe php si vous pouviez m'écrire la ligne avec la bonne syntaxe ce serai super sympa... je sais j'abuse pour une fois... ;)
Cyberclic
664 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
mercredi 10 juin 2015 à 19:19
Là c'est pas du PHP mais plus du SQL.

L'ideal dans ton cas serait de définir le pseudo comme clé primaire de la table Score et d'utiliser la syntaxe INSERT ... ON DUPLICATE KEY UPDATE

Je suis sur iPad, donc trop complexe pour moi d'écrire le bout de code PHP. Désolé.

Voir ici la syntaxe : http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
mercredi 10 juin 2015 à 20:39
En ajoutant :

mysql_query("DELETE FROM score WHERE nom='$nom'");

Le script post.php efface la ligne concernée avant de la réécrire avec la bonne valeur
Pour info, sachez que Nico est une génie :)
Merci Cybercli pour ton aide.
:)
lalexl
vendredi 12 juin 2015 à 00:16
salut Patrice, hum le tuto de Nico est un peu vieux il me semble le php a évolué aujourd’hui, il vaut mieux se protéger en utilisant des requêtes préparées pour éviter les injections sql.

voila un exemple de code php sql :

<?php

$adresse = 'liensadresseftp';
$basedonnee = 'nombasededonnée';
$nomutilisateur = 'nomutil';
$motpasse = 'mdp';

try
{
// Connexion à la base de données
$bdd = new PDO ('mysql:host='.$adresse.'; dbname='.$basedonnee.'', ''.$nomutilisateur.'', ''.$motpasse.'');
}

catch (Exeption $e)
{
die('erreur :' . $e->getMessage());
}

// Récupération des variables provenant de MMF
$nom = $_GET['nom'];
$score = $_GET['score'];


$req = $bdd ->prepare('SELECT id FROM score WHERE nom  = :nom');
$req->execute(array(
'nom' => $nom ));
$resultat = $req->fetch();

//si un utilisateur n' existe pas on insert
    if (!$resultat )
    {
$req = $bdd->prepare('INSERT INTO score (nom, score) VALUES(:nom, :score)');
$req->execute(array(
'nom' => $nom,
'score' => $score
));

echo 'nouveau score enregistrer';
    }
//si un utilisateur existe on update
else
{
  $req = $bdd->prepare('UPDATE score SET score = :score WHERE nom = :nom ');
$req->execute(array(
'nom' => $nom,
'score' => $score
));

echo 'update du score enregistrer';
}

// Déconnexion de la base de données
mysql_close();
?>

je n est pas test sur mmf juste test de valeurs passées par url d ou le get :
ex : http://monsite.com/test_scrore.php?nom=gerard&score=10
donc a tester de mettre les variables en :

$nom = $_POST['nom'];
$score = $_POST['score'];
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 14 visiteurs au total

Derniers messages