Condition et base de donnée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Condition et base de donnée

Re: Condition et base de donnée

par xTG » 07 févr. 2011, 03:03

Oui en fait c'était pas les bonnes côtes de porc que j'ai utilisé.
Je voulais mettre cela :
INSERT INTO `news` (`titre`) VALUES ('$titre');
:)

Re: Condition et base de donnée

par DiMa2gio » 06 févr. 2011, 20:01

Effectivement tu as raison. En plus c'était tout bête et j'aurais dû le savoir vus que j'avais déjà fais quelque chose du genre.
Un grand MERCI à toi.

Juste un petit truc :

Tu m'as donner ça :
INSERT INTO news ('titre') VALUES ('$titre')
Et en fait c'était ça :
INSERT INTO news (titre) VALUES ('$titre')
Mais en tout cas encore merci pour ton aide.

Re: Condition et base de donnée

par xTG » 06 févr. 2011, 19:29

Tu n'as surement pas qu'un seul champs dans la table news, donc la requête INSERT est incomplète. :)
Et si tu n'as qu'un identifiant en auto-incrément et le champs titre dans ce cas il faut préciser la requête :
INSERT into news ('titre') VALUES ('$titre')
Rajoutes or die(mysql_error()) après le mysql_query() et tu obtiendras surement une erreur actuellement confirmant mes dires. ;)

Re: Condition et base de donnée

par DiMa2gio » 06 févr. 2011, 19:16

Merci xTG pour ton aide, malheureusement en utilisant ton code que j'ai à peine modifié(j'ai remplacé "table" par "news" dans la requête SQL) pour l'adapter à ma bdd, mais sa ne marche pas...

On peu se dire que j'ai recopié bêtement sans prendre le temps de comprendre mais au contraire, j'ai d'abord essayé de comprendre avec ton explication et j'ai ensuite recopié.

Ce que j'ai cru comprendre est :
La variable query vaux la requête SQL :"sélectionner la colonne titre dans la table news(pour moi) où le contenu de la colonne titre est égale à ma variable titre qui a été échappée des caractères spéciaux.
La variable res vaux l'envoie de la requête de la variable query.
Si la variable res est égale à 0 (en gros : si la requête SQL aboutie à 0 résultat).
Valeur si vrai : la variable query vaux la requête SQL :"insérer dans la table news(pour moi) la valeur de ma variable titre qui a été échappée des caractères spéciaux.
Envoi de la requête de la variable query.

Je pense donc avoir compris le code, et théoriquement il devrait être parfait pour ce que je veux, mais il ne fonctionne pas. Aucune erreur php ou sql quand je l'essai, juste une page blanche(ce qui est normal) mais le contenu de ma table news ne change pas. J'ai beau cherché je ne vois pas comment faire pour qu'il marche.

Mon code complet :
<?php
					require "admin/config.php";
					mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
					mysql_select_db(DB_BDD);

$titre = "BONJOUR";

	$query = "SELECT titre FROM news WHERE titre = '" . mysql_real_escape_string($titre) . "'";
	$res = mysql_query($query);
	if( mysql_num_rows($res) == 0 )
	{
		$query = "INSERT into news VALUES ('" . mysql_real_escape_string($titre) . "')";
		mysql_query($query);
	}
?>

Re: Condition et base de donnée

par xTG » 06 févr. 2011, 17:44

Tu lances une requête SELECT avec dans le where ton titre à chercher.
Tu utilises une fonction de comptage du nombre de résultat (en SQL, ou bien en PHP : mysql_num_rows() si tu utilises mysql_).
Et en fonction de ce résultat tu exécutes une requête insert. ;)

Un exemple de code :

Code : Tout sélectionner

$query = "SELECT titre FROM table WHERE titre = '" . mysql_real_escape_string($titre) . "'"; $res = mysql_query($query); if( mysql_num_rows($res) == 0 ) {   $query = "INSERT into table VALUES ('" . mysql_real_escape_string($titre) . "')";   mysql_query($query); } 

Condition et base de donnée

par DiMa2gio » 06 févr. 2011, 16:46

Bonjour,
j'ai un petit problème pour écrire une condition en php ; je m'explique :
J'ai un titre dans mon php et je voudrais que ma condition dise :

Si le titre existe déjà dans la table de ma bdd : ne rien faire, et si il n'existe pas : écris le dedans.

Donc si quelqu'un a la solution à mon problème qu'il parle maintenant ou qu'il se taise à jamais.

Merci d'avance.