Request sql assez complexe

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 : Request sql assez complexe

par Truc » 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"

Request sql assez complexe

par king93310 » 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.