Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1541 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Ajout dynamique dans base sql via PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ajout dynamique dans base sql via PHP

n°1350316
cyrilpop
Posté le 20-04-2006 à 11:36:10  profilanswer
 

Bonjour à tous,
 
voila mon petit soucis, je cherche a faire un systeme de vote pour une web radio, j'ai déjà la base, mais il me reste un dernier problème. En effet, quand une personne qui vote pour un titre qui n'est pas encore rensigné dans la base de données, j'aimerai qeu ca l'ajoute automatiquement, mais suites au tests que j'ai fait (voir ci dessous), le serveur sql m'insulte, et inexorablement ca ajoute des lignes vides dans la base...
 
 
 

Code :
  1. <?php
  2. $flag=NULL;
  3. // On récupère les variables
  4. $ftitre = fopen ("http://adresse.fr/titre.txt","r" );
  5. $titre = fgets ($ftitre, 60);
  6. fclose ($ftitre);
  7. $fartiste = fopen ("http://adresse/artiste.txt","r" );
  8. $artiste = fgets ($fartiste, 60);
  9. fclose ($fartiste);
  10. // connexion à la base  
  11. $db = mysql_connect('sql.adresse.fr', 'user', 'password'); 
  12. mysql_select_db('base',$db);
  13. error_reporting(E_ALL);
  14.   $sqlvote = "SELECT points, titre, artiste FROM Top_Flop
  15. WHERE titre=$titre
  16. AND artiste=$artiste"; 
  17.   $resultat=mysql_query($sqlvote);
  18. while ($data = mysql_fetch_array($sqlvote))
  19. {
  20.   $id = $data[id_titre];
  21.   $points = $data[points]; 
  22.   $titre = $data[titre];
  23.   $artiste = $data[artiste]; 
  24.   $points = $points + 1; 
  25.   $vote = "UPDATE Top_Flop SET points = '$points' WHERE id_titre=$id"; 
  26.   $resultat=mysql_query($vote);
  27.   $flag="oui";
  28.   echo "Merci d\'avoir donner ton avis sur $artiste - $titre ($points points)" ; 
  29. }
  30. if ($flag == NULL)
  31. {
  32. //le titre n'est pas référencé, on le rentre
  33. $sql = "INSERT INTO Top_Flop VALUES('','$artiste','$titre','1')";
  34.      mysql_query($sql);
  35. }
  36.   mysql_close();  // on ferme la connexion
  37. ?>

mood
Publicité
Posté le 20-04-2006 à 11:36:10  profilanswer
 

n°1350346
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2006 à 11:57:36  profilanswer
 

$data[id_titre] est bien renseigné pour chaque titre? L'ID est bien unique? Ca serait mieux si tu mettais le msg d'erreur...

n°1350351
cyrilpop
Posté le 20-04-2006 à 12:04:54  profilanswer
 

Oui bien sur, dans ma base il est rensigné en tant que auto increment, donc je ne le rensigne jamais quand je rempli, sql le fait tout seul ^^ (d'ou le "INSERT INTO Top_Flop VALUES('','$artiste','$titre','1')"; avec un champs vide dans le premier champs...
En version manuel ca marche très bien l'ajout, maintenant il bug un peu plus en fait ca ajoute toujours le meme titre si on vote plusisuers fois d'affilé...
[edit] faute de frappe pouvant ne plus faire comprendre le message.


Message édité par cyrilpop le 20-04-2006 à 12:06:13
n°1350392
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2006 à 12:48:47  profilanswer
 

tant que tu posteras pas le msg d'erreur que php t'affiche, je pourrai pas t'aider +...

n°1350393
cyrilpop
Posté le 20-04-2006 à 12:49:00  profilanswer
 

J'ai modifié un peu le code en métant des flag histoire de voir aux intermédiaires. Le nouveau code est :
 

Code :
  1. $sqlvote = "SELECT Top_Flop.*
  2. FROM Top_Flop
  3. WHERE titre = \"$titre\"
  4. AND artiste = \"$artiste\""; 
  5.   $resultat = mysql_query($sqlvote);
  6. echo $resultat;
  7. ?><br><?php
  8. echo $sqlvote;
  9. if ($resultat != NULL)
  10. {
  11.   $data = mysql_fetch_array($sqlvote);
  12.   $id = $data[id_titre];
  13.   $points = $data[points]; 
  14.   $titre = $data[titre];
  15.   $artiste = $data[artiste]; 
  16.   $points = $points + 1; 
  17.   $vote = "UPDATE Top_Flop SET points = '$points' WHERE id_titre=$id"; 
  18.   $resultat=mysql_query($vote);
  19.   $flag="oui";
  20.   echo "Merci d\'avoir donner ton avis sur $artiste - $titre ($points points)" ; 
  21. }
  22. if ($flag == NULL)
  23. {
  24. //le titre n'est pas référencé, on le rentre
  25. $sql = "INSERT INTO Top_Flop VALUES('','$artiste','$titre','1')";
  26.      mysql_query($sql);
  27. }
  28.   mysql_close();  // on ferme la connexion
  29. ?>


 
En retour j'ai ceci :
 

Citation :


Resource id #4
SELECT Top_Flop.* FROM Top_Flop WHERE titre = "Even The Spirits Are Afraid" AND artiste = "The Gathering"
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/adresse/top.php on line 33
 
Notice: Use of undefined constant id_titre - assumed 'id_titre' in /var/www/adresse/top.php on line 34
 
Notice: Use of undefined constant points - assumed 'points' in /var/www/adresse/top.php on line 35
 
Notice: Use of undefined constant titre - assumed 'titre' in /var/www/adresse/top.php on line 36
 
Notice: Use of undefined constant artiste - assumed 'artiste' in /var/www/adresse/top.php on line 37
Merci d\'avoir donner ton avis sur - (1 points)

n°1350396
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2006 à 12:52:19  profilanswer
 

est-ce qu'au moins, t'es bien connecté à ta BD. Le msg d'erreur sur la ligne 33 suggère que la ressource n'est pas une connexion valide à ta bd...

n°1350401
cyrilpop
Posté le 20-04-2006 à 12:56:51  profilanswer
 

oui je suis bien connecter, je viens de mettre un flag qui rentre une ligne bidon, et la ligne st bien visible depuis la table d'admin

n°1350448
AiRdi
Posté le 20-04-2006 à 13:53:17  profilanswer
 

Bonjour,
 
A la ligne 18:
 

Citation :

$vote = "UPDATE Top_Flop SET points = '$points' WHERE id_titre=$id";  


 
Il me semble que tu devrais plutôt mettre:
 

Citation :

$vote = "UPDATE Top_Flop SET points = '$points' WHERE id_titre='".$id."'";  

n°1350453
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-04-2006 à 13:59:26  profilanswer
 

ça change strictement rien AiRdi :o
 
pour les erreurs Use of undefined constant XXX c'est parce qu'il manque des quotes dans tes tableaux associatifs:

Code :
  1. $id = $data['id_titre'];


 
pour le pb de la requete:

Code :
  1. $data = mysql_fetch_array($sqlvote);


c'est pas la requete que prends fetch_array en paramètre mais le resultat d'un query :o
 

n°1350454
cyrilpop
Posté le 20-04-2006 à 14:01:31  profilanswer
 

Allelouya...
 
Après avoir tatonné; recherché de la doc sur internet, j'ai enfin trouvé la solution... Ouf j'ai bien cru ne jamais y arriver. Je la donne pour les suivants qui voudrait pouvoir en profiter ^^

Code :
  1. <?php
  2. $flag=NULL;
  3. // On récupère les variables
  4. $ftitre = fopen ("http://adresse/titre.txt","r" );
  5. $titre = fgets ($ftitre, 60);
  6. fclose ($ftitre);
  7. $fartiste = fopen ("http://adresse/artiste.txt","r" );
  8. $artiste = fgets ($fartiste, 60);
  9. fclose ($fartiste);
  10. // connexion à la base  
  11. $db = mysql_connect('sql.adresse.fr', 'login', 'password'); 
  12. mysql_select_db('base',$db);
  13.   $sqlvote = "SELECT Top_Flop.*
  14. FROM Top_Flop
  15. WHERE titre = \"$titre\"
  16. AND artiste = \"$artiste\"";
  17.   $req = mysql_query($sqlvote);
  18.   $data = mysql_fetch_assoc($req);
  19. if ($data[id_titre] != NULL)
  20. {
  21.   $id = $data[id_titre];
  22.   $points = $data[points]; 
  23.   $titre = $data[titre];
  24.   $artiste = $data[artiste]; 
  25.   $points = $points + 1; 
  26.   $vote = "UPDATE Top_Flop SET points = '$points' WHERE id_titre = $id";
  27.   mysql_query($vote);
  28.   $flag="oui";
  29. }
  30. if ($flag == NULL)
  31. {
  32. //le titre n'est pas référencé, on le rentre
  33. $sql = "INSERT INTO Top_Flop VALUES('','$artiste','$titre','1')";
  34.      mysql_query($sql);
  35. }
  36. mysql_close();  // on ferme la connexion
  37. echo "Merci d'avoir donner ton avis sur $artiste - $titre ($points points)" ;
  38. ?>


 
 
En tout cas merci a vous tous pour votre participation :)


Message édité par cyrilpop le 20-04-2006 à 14:02:04

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Ajout dynamique dans base sql via PHP

 

Sujets relatifs
Connexion unique en PHPBase de données axée sur l'interaction avec les utilisateurs
envoyer des données PHP vers FLASHlire des données d'une base de donnée avec excel
Recherche appli PHP de gestion de parc automobileAjout de caractère en tête de ligne d'un fichier
SQL Server -> Peut on avoir un champ Dynamique dans une clause WHERE ?Comment lire dans la base de registre dans un .bat ?
PHP/MySQL: requete de tri et LEFT JOINRecherche stagiaire développeur PHP
Plus de sujets relatifs à : Ajout dynamique dans base sql via PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR