écriture sur base de donnée

Petit nouveau ! | 8 Messages

10 sept. 2009, 11:55

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;
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 sept. 2009, 14:32

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2291 Messages

10 sept. 2009, 18:52

Le script est celui-ci :wink:
Montre nous la structure de ta table stp.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Petit nouveau ! | 8 Messages

11 sept. 2009, 11:13

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;

?>

ViPHP
ViPHP | 2291 Messages

11 sept. 2009, 11:16

Le champ id (clef) est t'il un auto_increment sinon cela ne fonctionnera pas
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Petit nouveau ! | 8 Messages

11 sept. 2009, 12:01

il est marqué primaire
champ id
type varchar(10)
interclassement : latin_general_ci
attributs : vide
NULL
defaut : vide
extra: vude

Petit nouveau ! | 8 Messages

11 sept. 2009, 12:10

j'ai mis ID en auto-increment
id n'est plus varchar mais INT
la table est elle juste ?
merci
pascal

Petit nouveau ! | 8 Messages

11 sept. 2009, 12:16

ça marche maintenant, merci.
pascal