Page 1 sur 1

écriture sur base de donnée

Posté : 10 sept. 2009, 11:55
par rayaseplacbe
bonjour à tous,
tout d'abord, je débute totalement en php.
je souhaite réaliser un livre d'or en flash pour lequel ce code intervient, concernant le code flash tout est nickel, en fla...
par contre côté php, ça n'écrit qu'une seule fois sur la base de données (3 champs, id clef, nom, message - base hébergée chez online.net)
quelqu'un aurait-il l'amabilité de m'aider ?
merci,
pascal
<?php

// parametres d'access
$base='base';
$login='bidule';
$pwd='motdepasse';
$host='base.nomdedomaine.com';
$bdd='livre';

// connection au serveur
$db=mysql_connect($host, $login, $pwd);
if(!$db){ print "erreur connection $db<br>"; exit; }

// on choisit la bonne base
 if(!mysql_select_db($base,$db)){
  print "erreur ".mysql_error()."<br>";
  mysql_close($db);
  exit;
 }

// Si l'utilisateur envoi un nouveau message,
	// on l'ajoute à la base de données.
	if (isset($_POST['nom']) && isset($_POST['message'])){	
		$nom=urlencode(rtrim($_POST['nom']));
		$message=urlencode(rtrim($_POST['message']));
		mysql_query("INSERT INTO livre SET nom = '$nom', message = '$message';");			
		}

	// renvoi la liste des entrées à Flash.
	$resultat=mysql_query('SELECT * FROM livre ORDER BY id DESC;');
	
	// on boucle et on ajoute chaque entrée à la chaîne de caractère que l'on enverra à Flash.
	$i = 0;
	$renvoi = '';
	while($colonne=mysql_fetch_array($resultat)){
		$i++;
		$renvoi .= 'nom'.$i . '=' . $colonne['nom'];
    $renvoi .= '&message'.$i . '=' . $colonne['message'] . '&';
		}
	
	// on ajoute le nombre d'entrées.
	$renvoi .= 'entrees=' . $i;

	// on renvoi le tout à Flash.
	echo $renvoi;
?>

Re: écriture sur base de donnée

Posté : 10 sept. 2009, 14:32
par zeus
Modération :
Le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règlements.

De plus, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Re: écriture sur base de donnée

Posté : 10 sept. 2009, 18:52
par dunbar
Le script est celui-ci :wink:
Montre nous la structure de ta table stp.

Re: écriture sur base de donnée

Posté : 11 sept. 2009, 11:13
par rayaseplacbe
Oui c'est à partir de cette source que j'ai essayé de travailler.
Ca ne fonctionne malheureusement pas.
Concernant ma base de données, je l'ai crée sur online.net. Il y a 3 champs :
- id (clef)
- nom
- message
Ma table s'appelle livre.
Quand je vide la table, le livre d'or permet une unique entrée, une ligne 1. Après ça ne fonctionne plus.
Une idée ?
Merci,
Pascal
<?php
 //connexion à la base
 $db=mysql_connect("base.monsite.com", login, password);
  if(!$db){ print "erreur connection $db<br>"; exit; }

// on choisit la bonne base
 if(!mysql_select_db(base,$db)){
  print "erreur ".mysql_error()."<br>";
  mysql_close($db);
  exit;
 }

// Si l'utilisateur envoi un nouveau message,
// on l'ajoute à la base de données.
if (isset($_POST['nom']) && isset($_POST['message'])){	
$nom=urlencode(rtrim($_POST['nom']));
$message=urlencode(rtrim($_POST['message']));
mysql_query("INSERT INTO livre SET nom = '$nom', message = '$message';");	
}

// renvoi la liste des entrées à Flash.
$resultat=mysql_query('SELECT * FROM livre ORDER BY id DESC;');

// on boucle et on ajoute chaque entrée à la chaîne de caractère que l'on enverra à Flash.
$i = 0;
$renvoi = '';
while($colonne=mysql_fetch_array($resultat)){
$i++;
$renvoi .= 'nom'.$i . '=' . $colonne['nom'];
$renvoi .= '&message'.$i . '=' . $colonne['message'] . '&';
}

// on ajoute le nombre d'entrées.
$renvoi .= 'entrees=' . $i;

// on renvoi le tout à Flash.
echo $renvoi;

?>

Re: écriture sur base de donnée

Posté : 11 sept. 2009, 11:16
par dunbar
Le champ id (clef) est t'il un auto_increment sinon cela ne fonctionnera pas

Re: écriture sur base de donnée

Posté : 11 sept. 2009, 12:01
par rayaseplacbe
il est marqué primaire
champ id
type varchar(10)
interclassement : latin_general_ci
attributs : vide
NULL
defaut : vide
extra: vude

Re: écriture sur base de donnée

Posté : 11 sept. 2009, 12:10
par rayaseplacbe
j'ai mis ID en auto-increment
id n'est plus varchar mais INT
la table est elle juste ?
merci
pascal

Re: écriture sur base de donnée

Posté : 11 sept. 2009, 12:16
par rayaseplacbe
ça marche maintenant, merci.
pascal