Request sql assez complexe

Petit nouveau ! | 1 Messages

17 janv. 2008, 23:08

Bonjour,

Je suis sur MySQL 4.1.9 et j'ai un problemme avec une request sql, je m'explique: (mon script si dessous concerne deux Table.)

Table 'login': account_id (en chiffre ) - userid (en chiffre et/ou lettre) - user.... (le reste n'a pas d'importance)
Table 'donate': account_id - amount - claimed (tous en chiffre)

Code : Tout sélectionner

CREATE TABLE `donate` ( `account_id` int(11) unsigned NOT NULL, `amount` float(5,2) unsigned NOT NULL, `claimed` float(5,2) unsigned NOT NULL, PRIMARY KEY (`account_id`,`amount`) ) TYPE=MyISAM; DROP TABLE IF EXISTS `login`; CREATE TABLE `login` ( `account_id` int(11) unsigned NOT NULL auto_increment, `userid` varchar(255) NOT NULL default '', PRIMARY KEY (`account_id`), KEY `name` (`userid`) ) TYPE=MyISAM AUTO_INCREMENT=2000000;
Ce que je voudrais est que le script récupère la valeur 'account_id' de la table 'login' devant 'userid' tapé précédement dans un formulaire. Puis insère dans la table 'donate':
'account_id'(avec la valeur récupérée)
'amount' = 2
et 'claimed' = 0

Exemples:
table login: 2000002 - king93310
---------> table donate: 2000002 - 2 - 0

Je présice que je suis débutant en script php et que j'apprend en fesant des erreures, voila le script que j'ai fait:
<?php

$root = "localhost";
$login="xxxx";
$pass="xxxx";
$db="xxxx";

if(isset($_POST['username'])) {
$mysql = mysql_connect( $root, $login, $pass ) or die( "Impossible de se connecter au serveur MySQL [1]" );
mysql_select_db( $db, $mysql) or die( "Impossible de se connecter au serveur MySQL [2]" );
$username = trim($_POST['username']);
$result = mysql_query("SELECT `userid` FROM `login` WHERE userid = '$username'", $mysql);

$query = "INSERT INTO `donate` (`account_id`, `amount`, `claimed`) VALUES ('$result', '2.00', '0.00');";
$result = mysql_query($query, $mysql) or die("<center>Erreur dans l'écriture des données...</center>");
if ($result) die("<center>Inscription terminée.</center>");

}
?>

<center>
<table border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<th class="title" height="28">Inscription - Création de Compte</th>
</tr>
<tr>
<td>
<form id="account" action="" method="post">
<table>
<tbody>
<tr>
<td align="right">Nom du Compte:</td>
<td align="left"><input name="username" maxlength="23" size="23" type="text"></td>
</tr>
<tr>
<td align="right">Mot de Passe:</td>
<td align="left"><input name="password" maxlength="23" size="23" type="password"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="create" value="Créer" type="submit"></td>
</tr>
</tbody>
</table>
</form>
</td>
</tr>
</tbody>
</table>
</center>
Le problemme est le suivant: Tout s'insère bien dans la table 'donate' sauf la valeur 'account_id' qui au lieu de récupéré celle - ci dans la table 'login', le script met comme valeur '0' .

Je ne sais pas d'ou vien le problemme, pouvez vous m'aider ?

Cordialement.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

18 janv. 2008, 01:09

Salut,

Les étapes pour résoudre ton problèmes sont expliquées ICI
Surtout affichage de la requête générée.

Mais le souci semble venir des types de champs.
Tu récupères "userid" de la table "login" en Varchar
Et tu l'insères dans "account_id" de la table donate en int

donc l'insert se fait avec "king93310" et non "2000002"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute