Probleme update !

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 14:51

Bonjour,

<?php
$connect=@mysql_connect($....,$....,$....) or die(mysql_error());
$sql="UPDATE membre SET $chance='-1' WHERE id='$id' ";
mysql_query($sql) or die(mysql_error());
?>

J'ai fait ce script qui doit normalement updater la table "membre" et retirer "1" au champ "chance" mais je n'y arrive pas.... pourriez vous m'aider ?

De meme,comment puis-je faire pour que quand le nombre de chance arrive a 0 dans la base,on ne fait plus d'update mais plutot une redirection ou on affiche quelques chose ?

En faite,j'ai un script php qui prend une image dans un fichier .txt au hasard,en fonction de cette image dont les noms sont par exemple _10.swf,je voudrait que ce soit créditer sur le compte du membres dans le champ "points" je sait que c'est possible !

Help :(

Mammouth du PHP | 592 Messages

30 nov. 2006, 15:03

salut

alors non pas du tout


1- tu ne soustrait pas 1 a ton champ mais tu lui donne la valeur -1.
2- ton champ chance n'es pas une variable car elle est défini dans la base donc pas besoin de $
<?php 
$connect=@mysql_connect($....,$....,$....) or die(mysql_error()); 
$sql="UPDATE membre SET chance= chance-1 WHERE id='$id' "; 
mysql_query($sql) or die(mysql_error()); 
?> 

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 15:28

Ok,j'ai fait comme ca mais maintenant,mes images ne s'affichent plus du tout ? Voici le code complet :

Code : Tout sélectionner

<? $cpt=0; $fpc = fopen("image.txt","r"); while (!feof($fpc)) { $enrc = fgets ($fpc,4096); $tabc[]=$enrc; $cpt++; } srand((double)microtime()*1000000); $nbrc=rand(0,($cpt-1)); ?> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="435" height="271"> <param name="movie" value="<?echo "$tabc[$nbrc]"; ?>"> <param name="quality" value="high"> <embed src="<?echo "$tabc[$nbrc]"; ?>" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="435" height="271"></embed></object> <?php $connect=@mysql_connect($....,$....,$....) or die(mysql_error()); $sql="UPDATE membre SET chance= chance-1 WHERE id='$id' "; mysql_query($sql) or die(mysql_error()); ?>
En clair,ce script prend une image aléatoirement dans le fichier .txt et l'affiche sur la page ! Puis update le champ "chance" !

le probleme est donc,que rien n'est updater et pire,que les images ne s'affiche pas et en plus,j'ai également un décalage en bas de mon site ?

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 nov. 2006, 15:54

En théorie, la modification du champ chance dans ta base, n'a pas du influer sur la selection de ton image :)

As tu affiché le contenu de $tabc[$nbrc] (ou regarder dans le source) pour vérifier qu'il correspondait à ce que tu attendais ?

A noter que les guillemets autour de ta variable ne servent à rien : <?echo $tabc[$nbrc]; ?> fonctionne tout aussi bien et est plus léger (tant à l'exécution, qu'à la lecture de ton code :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 17:07

Alors là,je comprend rien de rien.......

Je place ce code :
<?  
$connect=@mysql_connect($sql..,$nom,$passe) or die(mysql_error());  
$sql="UPDATE membre SET chance= chance-1 WHERE id='$id' ";  
mysql_query($sql) or die(mysql_error());  
?> 
juste avant :

Code : Tout sélectionner

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="435" height="271"> <param name="movie" value="<?echo "$tabc[$nbrc]"; ?>"> <param name="quality" value="high"> <embed src="<?echo "$tabc[$nbrc]"; ?>" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="435" height="271"></embed></object>
Et l'image swf ne s'affiche plus...?

J'ai essayer de placer le code php un peu partout dans la page et rien n'y fait,et si je le met après <body>,la page ne s'affiche carrément pas...???

Quelqu'un sait de quoi cela peut provenir car moi,je ne vois vraiment pas !

Merci !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 nov. 2006, 17:19

C'est probablement que ton code php provoque une erreur qui empêche le reste de la page de s'afficher correctement ... la commande die() interromp le traitement en cas d'erreur, c'est peut être de ce côté là qu'il te faut regarder.

N'as tu pas de message dans mysql_error() ? (enlève le @ devant mysql_connect())
Ne faudrait-il pas un mysql_select_db pour sélectionner ta base ? peut être est-ce ce qu'il manque pour parvenir à te connecter :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 17:36

Je vient d'essayer ca et toujours rien :
<?   
$connect=mysql_connect($sql,$..,$...) or die(mysql_error()); 
$db selected= mysql_select_db('....');  
$sql="UPDATE membre SET chance= chance-1 WHERE id='$id' ";   
mysql_query($sql) or die(mysql_error());   
?> 
Et (mysql_error()); ne me dit absolument rien ?

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 18:36

Re,

je vient encore d'essayer cela mais toujours rien...? je désespere. :cry:
<?   
$db = mysql_connect(localhost,login,passe) or die(mysql_error()); 
mysql_select_db('nombase',$db)  or die('erreur de selection '.mysql_error()); 
$sql="UPDATE membre SET chance= chance-1 WHERE id='$id' ";   
mysql_query($sql) or die(mysql_error());
mysql_close(); 
?> 

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 nov. 2006, 18:52

Essayes ceci :
<?php
echo 1;   
$db = mysql_connect(localhost,login,passe) or die(mysql_error());  
echo 2;
mysql_select_db('nombase',$db)  or die('erreur de selection '.mysql_error());  
echo 3;
$sql="UPDATE membre SET chance= chance-1 WHERE id='$id' ";    
echo 4;
mysql_query($sql) or die(mysql_error()); 
echo 5;
mysql_close();  
echo 6;
?>


En fonction des chiffres qui vont apparaitre, tu sauras à partir de quel endroit commence le problème :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 19:01

Cela m'affiche 1

donc mon probleme commencerai depuis le début ?

Mes identifiant de connexion sont pourtant correct,ca fait 5000 fois que je vérifie...!

un ptit indice :(

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 20:14

C'est bon,j'ai trouvé !

En faite,mon espace membre fesait certainement interférence :?:

Donc,au lieu de refaire une connexion mysql, j'ai mi un require_once pour prendre mes infos de connexion ailleurs...!

Voilà :wink:

Bingo
Invité n'ayant pas de compte PHPfrance

30 nov. 2006, 21:18

Voilà ce que ca me dit :

Connexion a la base impossible....

Pourquoi ?

ViPHP
ViPHP | 1961 Messages

30 nov. 2006, 21:26

Voilà ce que ca me dit :

Connexion a la base impossible....

Pourquoi ?
Je n'avais pas vu ton message (post simultané) disant que tu avais trouvé l'erreur, j'ai don supprimé le mien qui n'a plus de sens

Le but était de détereminer exactement le PB en s'aidant des messages d'erreur de MySQL.

Mais c'est mieux quand c'est résolu!
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 nov. 2006, 23:58

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié). ;)

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