Bonjour,
J'ai un soucis avec mon insert into();

<?php
// connect to the "temoign" database
$conn = new mysqli('localhost', 'root', '', 'temoign');
// check connection
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}
// sql query for INSERT INTO users
$sql = "INSERT INTO `temoign` (`id`, `message`, `auteur`, `date` )
VALUES ('NULL', 'frefrgffdq', 'alex', '18/02')"; 
// Performs the $sql query on the server to insert the values
if ($conn->query($sql) === TRUE) {
  echo '';
}
else {
 echo 'Error: '. $conn->error;
}
$conn->close();
?>

Le problèmme est quand je vais sur ma page;
et que je rafraîchis ma page xfois, sa me crée xfois les valeurs que j'ai rentré dans ma table sql!
Donc je voudrais savoir comment je pourrais restreindre tout sa si c'est possible de mettre un limit 1;

Merci

8 réponses


ce que tu veux c'est que ca n'insere qu'une seule fois un message c'est ca ? avec un auteur unique je suppose ?
il suffit de compter combien de fois apparait l'auteur qui a écrit le message, si il aparait une fois on dit qu'il a deja ecrit sinon in insère et on le remercie :)

Pxl
Auteur

Enfaite si tu veux j'ai pas accés a ma BDD! j'ai que mes infos de connex!
Et se que je souhaite faire, c'est que j'ai mon index.php dans laquel j'inclus mon create_db.php dans laquel il y aura toute info de ma BDD pour ensuite crée ma table avec un CREATE DATABASE et CREATE TABLE. Jusque la tout va bien.
Maintenant je veux inclure mon inser_tem.php qui lui inserera les données dans ma table, avec un INSERT into(), mais le problèmme c'est quand je rafraichis ma page je regarde dans ma table en local, et la 30fois le meme post!
Enfaite je souhaiterai faire une page qui affichera les témoignages de mon site aléatoirement avec un rand() limit 1;
désolé si je suis pas trés concret sur mes explication!
Merci

et bah c'est sur ta page d'affichage qu'il faut modifier ta requete de selection avec à la fin LIMIT 1
là c'est la requete d'insertion que tu nous donnes et c'est totalement normal que ca insère 30 fois la même chose si tu rafraichis 30 fois de suite la même page...

Pxl
Auteur

Oui je l'ai déjà fais!

$result = mysql_query('SELECT * FROM temoign ORDER by rand() limit 1');

Mais je disais enfaite que c'est pas sur ma page que sa m'affiché les 30post c'est dans ma table SQL!

oui ca c'est normal puisque tu actualise 30 fois, il enregistre 30 fois sans se poser de question...

@flohw: en effet, c'est normal, mais c'est justement ce que Pxl souhaite éviter (si j'ai bien compris sa demande). L'ajout doit se faire une seule fois, et pas à chaque réactualisation de la page

@Pxl: le contenu de cette table est-il amené à évoluer ? Si oui, tu as pour le moment dans ton exemple un seul témoignage, mais si tu souhaites en ajouter un deuxième, sais-tu déjà comment tu vas procéder? Passeras-tu par un autre fichier ou modifieras-tu celui-là (insert_tem.php) ?

oui, c'est ce que j'ai compris à mon premier post, j'ai donné une solution qu'il peut exploiter et modifier en fonction de ce qu'il souhaite mais a sa réponse il m'a dit que je me trompait donc je comprend plus trop là...

@flohw: en effet, autant pour moi, je m'étais concentré sur les dernières réponses et j'ai omis ta première proposition :)
Celle-ci me parait pertinente.

Autre proposition dans la même logique que la tienne :
Si le code et donc les témoignages sont gérés manuellement par Pxl, on pourrait envisager (tant qu'à saisir manuellement chaque témoignage dans le code) de préciser pour chacun une "vraie" valeur d'id plutôt que de laisser NULL. Ainsi, lorsque que l'insert se fera, les id déjà présents dans la table seront automatiquement ignorés (l'id étant logiquement la clé primaire de la table). Plus de problème de réactualisation, pas de problème en cas d'ajout (certes, à condition de mettre un id inexistant), et on ne se restraint pas à nom d'auteur unique...