[PHP-PROB]Verification d'existence

Statut
N'est pas ouverte pour d'autres réponses.

Volcans

Elite
le titre à l'air bizare mais c'est surement assez simple.

je suis entrain de faire un piti script en php pour lister ses cartes.
Et je veux que lorsque j'ajoute une carte qui est déjà presente dans la table, il fasse l'update de la variable 'number' qui représente le nombre de cartes.

Fichier :
-formulaire.htm
-addacrd.php

liens :
http://maximax.phpnet.org/liste/formulaire.htm

voilà le code de la page php :
Code:
<?php
include ('connectinfo.php');
$db = mysql_connect($server,$login,$password); 
mysql_select_db($database,$db); 
 
$litou = "SELECT * FROM magic_liste where nomfra='$nomfr'";
$litou = mysql_num_rows('$litou');
if($litou) // si $litou retourne 0 -> else
{
$newnbr = '$number + $nombre';
$req = "UPDATE magic_liste SET number='$newnbr' WHERE nomfra='$nomfr'";
$res = mysql_query($req) or die ("bug");
}
else
{

$req = "INSERT INTO magic_liste (id,nomfra,noman,rare,edit,status,number,color,brillante) Values('','$nomfr','$nomvo','$rarete','$edition','$etat','$nombre','$couleur','$foil')";
$res = mysql_query($req) or die ("bug");
}

mysql_close(); 
?>
 

Styleman

Touriste
Tu a une erreur quelque part?
C'est quoi la question du thread en fait lol?
Parce que la je ne serais pas voir, mais vu comme ça, je pense ke c'est bon...
 
1er
OP
Volcans

Volcans

Elite
bah enfete
kan je send mon formulaire, y passe une éternité à loader la page addcard.php
et donc je pense qu'il doit y avoir une erreur :s

la kestion de thread ( c vré ke c pas noter :p ) :
si kelkun saurai maider :D
 
X

xXFMCXx

ex membre
Où sont définis $number et $nombre ?
Si on ne suit que le code que tu as montré, cette ligne ne donnera pas grand chose : $newnbr = '$number + $nombre';
 
1er
OP
Volcans

Volcans

Elite
J'ai régler une grosse partie des problèmes , souvent des ptite conneries :s

Par contre
kan il fait l'update

la valeur de $newnbr ( number + nombre )
*1 - $nombre est définie par la valeur du champ dans le formulaire. $number est defini par la valeur dans le champs de la table.

il modifie le champ number de la table et devient ' + 3'
3 est le chiffre que j'ai entré ds mon formulaire.

Je me demande si enfete le problème n'est pas que le champ number dans la table est de type varchar et que pour faire l'addition il faut qu'il soit d'un autre type ( vu que c'est des chiffres ). mais je ne sait pas quel type de champs il faut mettre :s

EDIT: je vient dapprendre qu'il faut ke ca soit un champ INT, donc jve tester ça ^^
 
S

spirit

ex membre
Volcans a dit:
Je me demande si enfete le problème n'est pas que le champ number dans la table est de type varchar et que pour faire l'addition il faut qu'il soit d'un autre type ( vu que c'est des chiffres ). mais je ne sait pas quel type de champs il faut mettre :s

EDIT: je vient dapprendre qu'il faut ke ca soit un champ INT, donc jve tester ça ^^

euh, ouais, c clairement ca ton probleme :roll:

varchar c'est pour une string de taille variable.
pour les nombre, tu DOIS utiliser int,tinyint,mediumint (en fonction de la valeur max possible de ton entier, enfin question d'optimisation ;) sinon tu peux toujours mette INT.

ah oui, quand tu insere des chaines, met toujours des addslashes($machaine).

comme ca si tu as des apostrophe et co, ca rajoutera un \ devant et ta requete s'executera correctement.
 

Tigrou

Touriste
1. oui faire des additions avec des varchar c est chaud

2. j ai une question qui peut paraitre bete mais si je comprends bien tu as une table qui est en fait la liste des cartes que tu possèdes. Ensuite tu ajoutes des cartes avec ton script, si jamais la carte que tu ajoutes est deja présente il incremente le chiffre correspondant aux nombres de cartes de ce type.

En partant de ce postulat je ne vois pas trop l interet de faire un mysql_num_rows :?: Tu as une ligne de ta table qui correspond a la carte que tu possède deja. Tu ajoutes la meme carte -> il suffit d aller chercher cette ligne dans la table et d incrementer le nombre de cartes, non ?
 
1er
OP
Volcans

Volcans

Elite
Tigrou a dit:
1. oui faire des additions avec des varchar c est chaud

2. j ai une question qui peut paraitre bete mais si je comprends bien tu as une table qui est en fait la liste des cartes que tu possèdes. Ensuite tu ajoutes des cartes avec ton script, si jamais la carte que tu ajoutes est deja présente il incremente le chiffre correspondant aux nombres de cartes de ce type.

En partant de ce postulat je ne vois pas trop l interet de faire un mysql_num_rows :?: Tu as une ligne de ta table qui correspond a la carte que tu possède deja. Tu ajoutes la meme carte -> il suffit d aller chercher cette ligne dans la table et d incrementer le nombre de cartes, non ?
Et comment je fais pour l'affichage?
dans mon while
jafficherais les infos et le nom de la carte saffichera 4 ou 5 fois en fonction du nombre de fois que j'aurai ajouter les cartes par le formulaire et avec des quantités differente ?
enfin je pense ( suis pas sur :p )

Avec le num rows, il regarde combien de fois le nom de la carte est dans la table ( 0 ou 1 vu que toute les cartes sont ajouté par intermédiaire du script )
et en fonction de ce qu'il retourne iil exécute le script UPDATE ou INSERT (if,else)

ps: voilà le script car j'ai modifier un peu ;)

Code:
<?php
include ('connectinfo.php');
 
$queryy = "SELECT * FROM magic_liste where nomfra='$nomfr'";
$litou = mysql_num_rows($queryy);
echo "$litou";

if($litou)
{
$db = mysql_connect($server,$login,$password); 
mysql_select_db($database,$db); 

$req2 = "SELECT id,nomfra,noman,rare,edit,status,number,color,brillante FROM magic_liste where nomfra='$nomfr' AND noman='$nomvo' AND rare='$rarete' AND edit='$edition' AND status='$etat' AND color='$couleur' AND brillante='$foil'";
$res2 = mysql_query($req2) or die ("bug 2");
$data = mysql_fetch_array($res2);

$newnbr = $data['number'] + $nombre;

$req = "UPDATE magic_liste SET number='$newnbr' WHERE nomfra='$nomfr'";
$res = mysql_query($req) or die ("bug");

}
else
{
$db = mysql_connect($server,$login,$password); 
mysql_select_db($database,$db); 
$req3 = "INSERT INTO magic_liste (id,nomfra,noman,rare,edit,status,number,color,brillante) VALUES ('','$nomfr','$nomvo','$rarete','$edition','$etat','$nombre','$couleur','$foil')";
$res3 = mysql_query($req3) or die ("bug 3");
}


?>
 
1er
OP
Volcans

Volcans

Elite
Code:
$litou = "SELECT * FROM magic_liste where nomfra='$nomfr'";
$litou = mysql_num_rows($litou);
kan jexecute ca il mecrit :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/m/maximax/www/liste/addcard.php on line 14


:s
 

Styleman

Touriste
Cette erreur m'arrive souvent mais je ne me souviens jamais pourquoi lol, regarde si ta variable est bien définie, je pense que c'était ça, mais je ne me rappelle plus... :?
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut