Création d'un index

Eléphanteau du PHP | 16 Messages

19 juin 2011, 17:41

Bonjour à tous,

Toujours entraint d'essayer d'installer ma messagerie je parviens maintenant à me connecter à la base (c'est déjà ça... :D ) à afficher le formulaire d'inscription mais quand j'envoi les données j'ai les messages ci-dessous qui s'affichent :

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /Messagerie/sign_up.php on line 43
et

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /Messagerie/sign_up.php on line 47
ses lignes corresponde à :
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));

				if($dn==0)
et
$dn2 = mysql_num_rows(mysql_query('select id from users'));

					$id = $dn2+1;
J'ai consulté les tables et j'ai un message d'alerte qui me dit qu'aucun index n'est crée. J'ai pense créé un index avec le champ"id" de la table "users"
j'ai donc coché le champ et fait "excécuter mais j'ai eu un autre message d'alerte :
("PRIMARY" doit et ne peut être que le nom d'une clé primaire !)
alors du coup je ne sait pas trop quoi faire. Ci-dessous la structure des deu tables :
CREATE TABLE `users` (

  `id` bigint(20) NOT NULL,

  `username` varchar(255) NOT NULL,

  `password` varchar(255) NOT NULL,

  `email` varchar(255) NOT NULL,

  `avatar` text NOT NULL,

  `signup_date` int(10) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `pm` (

  `id` bigint(20) NOT NULL,

  `id2` int(11) NOT NULL,

  `title` varchar(256) NOT NULL,

  `user1` bigint(20) NOT NULL,

  `user2` bigint(20) NOT NULL,

  `message` text NOT NULL,

  `timestamp` int(10) NOT NULL,

  `user1read` varchar(3) NOT NULL,

  `user2read` varchar(3) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Voila si quelqu'un peut m'aider ce serait sympa
D'avance merci et bonne soirée à tous/

ViPHP
AB
ViPHP | 5818 Messages

19 juin 2011, 18:22

Il faut séparer les étapes quand tu fais une requête cela te permettra de mieux cerner le problème :
$query = "select id from users where username='".$username."'";

echo $query ; //en phase de débug pour voir si ta requête est bien formée.

$ressource = mysql_query($query) or die (mysql_error());//or die (mysql_error()) en phase de test uniquement. Alternativement avec mysql tu peux utiliser ini_set('mysql.trace_mode', true); avant ta requête.

$result = mysql_num_rows($ressource);

Eléphanteau du PHP | 16 Messages

20 juin 2011, 11:51

Bonjour,

Problème résolu. En fait j'avais mal complété mon fichier de configuration.
Merci pour la réponse*Bonne journée.