Comment afficher un chiffre dans un champ et lui ajouter +1

WRInaute discret
bonjour,
voila, mon site référence les derniers films déja sortis, et propose de télécharger leur bande annonce;
j'utilise donc un script maison fait par un pot pour ajouter des films sur mon site,
le problème, et que j' ai rajouté un module de statistique, et donc, au lieu de simplement mettre
Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')";
			if( $resultat = mySql_query($query)){
?>

il faut que dans la table statistique , soit ajouté l' id du film, par exemple, si il y a 65 films, et que j'en ajoute un 66ème, il aura l'id 66.

Le problème est que ca ne se fait pas automatiquement (le film est ajouté dans la table film, mais son id ne l'est pas dans la table statistique.) et comme j'en ai marre de tout faire à la main, c a d me connecter à myadmin, insérer élément, etc. j'aimerais que soit ca se fasse automatiquement quand j'ajoute le film, soit que ca me redirige vers une page qui justement me demande de rentrer l'id à atribuer au film

alors voila ma page ajouter-film.php, celle qui s'occupe de l insertion du film :
http://forum.2037.org/download.php?id=24156

donc j'aimerais savoir si il était possible que lorsque j'ajoute un film, ca exécute ca
Code:
 <?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')";
			if( $resultat = mySql_query($query)){
?>
ainsi qu'un autre qui listerait les insertions dans la table statistique ayant le champ "idd" par ordre croissant, et qui attriburait donc au film ajouté, l' id juste suivante

exemple :
-matrix = id 60
-blabla = id 61
-film que j' ajouter = id 62

pour vous aider, voici la structure de ma table :
http://forum.2037.org/download.php?id=24154
ainsi que la composition de la table :
http://forum.2037.org/download.php?id=24155

donc voila c est a peu pores tout, j espere m'etre bien exprimé,
si malheuresement cela n est pas fesable, j' avais pensé que, une fois le film ajouté, je clique sur un lien situé sur la page ajouter-film.php, qui m amene sur une autre page, et sur cette autre page je rentre l'id a attribuer au film, et que ca execute par la suite :

Code:
<?php 
if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) 
VALUES (
'68', '0', '68', NULL 
);
?>
en considérant que "idd" et "id" doivent être les mêmes (la même id) et que "nombre_telecharg" et "extra" doivent être vide.

je vous remercie d avance de votre aide!

a+
bosspc2
 
WRInaute passionné
Ton message est fort long et je fatigue, donc j'ai lu en diagonale. Mais j'ai l'impression que tu ne connais pas l'auto_increment.

Tu dois définir le champ comme clef et activer l'auto_increment

aK.
 
WRInaute discret
et bien en fet pr tout te dire je ne connais ni l autoincrement ni rien d autre je sne connais pas le php!

peuut tu me dire les différentes étapes a suivre pour faire ce que tu dis stp
a+
 
WRInaute passionné
moi aussi g lu en diago romain. Quand tu crees une table sous phpmyadmin, le premier champs que tu crees est le id. et c'est la que tu specifies les attribus (id primaire, etc) et entr'autres, auto_increment.
 
WRInaute discret
oui et yan, justement, il y est l auto increment, mais il y est sur le champ id de film, et idd de statistique? devrai-je renommer pr qu ils aient le meme nom ?
 
WRInaute passionné
je ne vois pas l'intérêt de faire 2 champs contenant la même information (ou alors j'ai mal compris).

Et puis bigint(20) c'est un peu exagéré ;-)

aK.
 
WRInaute passionné
mahefarivony a dit:
aK a dit:
Et puis bigint(20) c'est un peu exagéré ;-)

c'est ce qu'ils ont du aussi se dire pour l'an 2000 ..

Il manque un smiley à ton message, de toute évidence... Il est évident qu'un bigint(20) est complètement inapproprié. S'il existe des types numériques différents, ce n'est pas pour rien !

Quand je vois que certains se plaignent que tel ou tel hébergeur souffre de lenteurs, je me dis qu'ils devraient coder proprement et prendre le temps de structurer leurs tables comme il faut avant de commencer à critiquer leur hébergeur.

aK.
 
WRInaute discret
arf le pblem est que ce n est pas moi qui ai codé ca, je n en serait meme pas capable, par quoi devrai-je remplacer le biginit ???

et comment arranger mon pblem ??? aidez moi plz!
 
WRInaute passionné
doom a dit:
arf le pblem est que ce n est pas moi qui ai codé ca, je n en serait meme pas capable, par quoi devrai-je remplacer le biginit ???

et comment arranger mon pblem ??? aidez moi plz!

C'est un code très simple à faire, mais il faudrait que tu essaies de le comprendre toi-même pour pouvoir le corriger. En une bonne heure de lectures sur le fonctionnement de mysql sur un site dédié à ça (phpdebutant par exemple, puis phpinfo.net), tu devrais arriver à comprendre tes requêtes et donc à les corriger.

Je ne vois pas trop l'intérêt que quelqu'un le fasse pour toi (difficile de savoir quels sont tes besoins et ça ne fera que reporter le problème) mais si une âme charitable se propose, pourquoi pas.

aK.
 
WRInaute discret
le problème est que justement je viens de php débutant et je ne comprend pas trop leur tuto, en fet je ne sais meme pas d ou vient le pblem :(
 
WRInaute accro
bon si j'ai bien compris, et en francais, lorsqu'il y a insertion d'un nouveau film, tu voudrais en parallele inserer automatiquement une nouvelle ligne dans ta table statistiques, renseignée avec l'id du nouveau film qui vient juste d'etre insérée ?
 
WRInaute passionné
doom a dit:
le problème est que justement je viens de php débutant et je ne comprend pas trop leur tuto, en fet je ne sais meme pas d ou vient le pblem :(

Franchement, je ne vois pas ce qu'il y a de très compliqué.

OK, tu ne connais pas mysql. Je te conseille de commencer à l'apprendre, ça vient assez vite et après on ne peut plus s'en passer. Mais pour ça il ne faut absolument pas partir d'un script préexistant auquel tu ne comprends rien, mais plutôt construire toi-même le ,code, pour te poser les questions une par une et non toutes en un coup.

Mais à part ça, c'est quand même pas difficile de comprendre que tu as 2 champs identiques et que c'est donc inutile (d'autant que tu n'en as qu'un qui s'auto-incrémente et que c'est là ton problème).

Bref, tu vires le champ en trop (le id qui ne s'auto-incrémente pas), tu vires également les endroits où ce champ apparait dans tes requêtes et tout devrait fonctionner.

aK.
 
WRInaute accro
en fait, je pense qu'il s'est mal exprimé.. il y a 2 champs id mais ce ne sont pas les memes..

le premier c'est les id de sa table stats (un auto increment la aussi) et le second id ce sont les films qu'il veut tracer...

ca donnerait donc des instructions de ce genre la, a exécuter a la suite :

Code:
INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')";
INSERT INTO `statistique` ( `id-stats` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL )

LAST_INSERT_ID() recupere le dernier id de film inséré dans la premiere instruction
 
WRInaute discret
mahefarivony a dit:
en fait, je pense qu'il s'est mal exprimé.. il y a 2 champs id mais ce ne sont pas les memes..

le premier c'est les id de sa table stats (un auto increment la aussi) et le second id ce sont les films qu'il veut tracer...

ca donnerait donc des instructions de ce genre la, a exécuter a la suite :

Code:
INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')";
INSERT INTO `statistique` ( `id-stats` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL )

LAST_INSERT_ID() recupere le dernier id de film inséré dans la premiere instruction

merci beaucoup beaucoup, je vais tester ca tout de suite!! je te tient au courant! encore merci!
 
WRInaute accro
ok, tiens nous au courant, ca peut toujours servir..
si ca marche pas, faire aussi une recherche du coté de
mysql_insert_id());

@+
 
WRInaute discret
arf , comment metre 2 requettes dans une bloc de code ??

car moi j'ai mis :
Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')"
		"INSERT INTO `statistique` ( `id-stats` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"
			if( $resultat = mySql_query($query)){
?>
 
WRInaute discret
en tout cas, j'ai teste
Code:
INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );
dans phpmyadmin et ca marche!!!!!!!!
 
WRInaute accro
ah tiens, bonne question.. essaye de séparer par un point virgule pour voir ..

bin sinon tu fais un mySql_query($query) pour chaque instruction
 
WRInaute discret
arf arf,
j' ai essayé ca :
Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')"  
		$query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"
			if( $resultat = mySql_query($query)){
?>

ca
Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$lien','$realisateur','0')" 
			if( $resultat = mySql_query($query)){
?>
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );" 
			if( $resultat = mySql_query($query)){
?>

et aucun ne marche :( lol je suis damné la!
 
WRInaute accro
oh la la. une serieuse formation s'impose la :)

inutile de faire 2 fois la connexion a ton serveur et a ta base de données, une seule fois suffit ..

ensuite, l'idée c'est

$query = premier instruction insert
mySql_query($query)

$query = deuxieme instruction insert
mySql_query($query)
 
WRInaute discret
Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')"; 
			if( $resultat = mySql_query($query)){
		$query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"  
            if( $resultat = mySql_query($query)){
?>
j' ai mis cela et ca ne marche pas

je pense que ca doit venir des { non ?
 
WRInaute passionné
Je ne vois pas l'intérêt de tous ces if... ça complique beaucoup la lecture de ton code et sûrement ta compréhension de celui-ci.

aK.
 
WRInaute discret
a lol je sais pas moi, c' est indispensable? au sinon comment mettre 2 $query que une page ?
 
WRInaute accro
Code:
<?php 
    $link=mySql_connect($hote,$identifiant,$mot_de_passe);
    mySql_select_db($nom_db,$link);
     $query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')"; 
      $resultat = mySql_query($query); 
      $query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"  
      $resultat = mySql_query($query);
?>
 
WRInaute discret
arf ca ne marche pas :( rien du tout n est ajouté dans la base de donnée, et j obtient une page blanche
 
WRInaute discret
lol :)
mais comment arranger ca? tu sais d ou ca vient? au sinon on va aps s embeter, je fou une iframe de 1*1 appelant une page test.php ou je met le deuxieme query, c apreil
 
WRInaute accro
bon, déja, tu regardes le contenu de ta $query.

echo($query);

tu vas dans phpmyadmin et tu executes l'instruction .. si ca marche pas pas, c'est qu'il y a donc une erreur de syntaxe quelque part.

PS : dans le code, je mettrai mysql_query au lien de mySql_query
 
WRInaute passionné
Il faut voir où tu coinces, si c'est au niveau d'un bug ou d'autre chose.

Pour ça: il faut débuguer !

Remplace mySql_query($query); par mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() );

Ca te permettra d'afficher les bugs
 
WRInaute discret
j'ai mis ca
Code:
<?php 
    $link=mySql_connect($hote,$identifiant,$mot_de_passe); 
    mySql_select_db($nom_db,$link); 
     $query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')"; 
      $resultat = mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() );  
      $query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"  
      $resultat = mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() ); 
?>

et toukours pas de message d erreur
 
WRInaute passionné
Soit dit en passant, à ta place je fermerais mon site vite fait. Je veux pas te faire peur mais si je ne m'abuse il y a déjà eu de sérieuses amendes pour des sites de liens p2p.

aK.
 
WRInaute accro
du coup j'ai un énorme doute...

tu renseignes bien ta connexion j'espere ???
tout ce qui est
$hote
$identifiant
$mot_de_passe
$nom_db

le fichier php il ne comporte pas seulement ceci
<?php
$link=mySql_connect($hote,$identifiant,$mot_de_passe);
mySql_select_db($nom_db,$link);
$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')";
$resultat = mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() );
$query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"
$resultat = mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() );
?>

mais il y a bien autre chose ? :)
 
WRInaute discret
t inquiete en haut de ma page j ai

<?php require("param.php"); ?>

qui contient les infos necessaires
 
WRInaute discret
j' ai mis
Code:
<?php 
    $link=mysql_connect($hote,$identifiant,$mot_de_passe); 
    mysql_select_db($nom_db,$link); 
     echo ($query) = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')"; 
      $resultat = mysql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() );  
      echo ($query) = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"  
      $resultat = mysql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() ); 
?>

et toujours rien
 
WRInaute accro
Code:
<?php 
$link=mySql_connect($hote,$identifiant,$mot_de_passe); 
mySql_select_db($nom_db,$link); 
$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')"; 
echo($query);
$resultat = mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() ); 
$query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );" 
echo($query);
$resultat = mySql_query($query) or die( 'Erreur '.$req.'<br>'.mysql_error() ); 
?>
 
WRInaute discret
a je viens de faire un test, quand je met
Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO film VALUES('','$login','$titre','$description','$image','$edonkey','$torrent','0')";
			if( $resultat = mySql_query($query)){
?>
ca passe et quand je met

Code:
<?php 


	if($link=mySql_connect($hote,$identifiant,$mot_de_passe)){
		if(mySql_select_db($nom_db,$link)){
		$query = "INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );"
			if( $resultat = mySql_query($query)){
?>

ca apsse pas

pourtant quand je met
Code:
INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );
dans myadmin, ca passe

donc ca doit venir de la synthaxe du query
 
WRInaute accro
INSERT INTO `statistique` ( `idd` , `nombre_telechar` , `id` , `extra` ) VALUES ( '', '0', LAST_INSERT_ID(), NULL );

sur la meme ligne evidemment dans ton code php...
 
Discussions similaires
Haut