[PHP/MYSQL] changer juste une valeure d'un bd

changer juste une valeure d'un bd [PHP/MYSQL] - PHP - Programmation

Marsh Posté le 26-01-2006 à 19:01:17    

bonjour, :hello:  :hello:  :hello:  
alors voila je crée en ce moment un script de blog, les données de l'admin du blog sont rentrée dans une base sql mais je rentre dans une premiere page le titre, la date et le texte de l'article puis dans une seconde page j'upload la photo, pour pouvoir utiliser facilement cette photo par la suite je voudrai que l'url se mette dans ma table à la derniere ligne c'est à dire à la ligne du commentaire qui vien juste d'etre créé.

Citation :

// on écrit la requête sql
    $sql = "INSERT INTO essai(id, date, titre, article, photo) VALUES('', '','','','$savefile')";
     
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    mysql_close();  // on ferme la connexion


voila ce que j'ai fait mais cela me donne trois article: 1er: titre date et texte sont ok
                                                                        2eme: tout est vide
                                                                        3eme: seulement la photo
 
voila, quelqu'un aurait t-il une idée?

Reply

Marsh Posté le 26-01-2006 à 19:01:17   

Reply

Marsh Posté le 26-01-2006 à 20:00:08    

il faut utiliser UPDATE pour modifier un champ et utiliser la clause WHERE pour definir quelle entrée modifier dans la base :s

Reply

Marsh Posté le 26-01-2006 à 20:01:40    

De plus il n'y a pas de notion de "derniere ligne" avec SQL (et donc mySQL)

Reply

Marsh Posté le 26-01-2006 à 20:12:29    

avec update d'accord mais si je met quelque chose du genre :

Citation :

UPDATE matable  photo='$savefile' WHERE id= ??????


je met quoi dans id??

Reply

Marsh Posté le 26-01-2006 à 20:16:55    

update matable set mon_champ='une valeur', un_autre_champ='une autre valeur ou la meme pourquoi pas ... car apres tout tu fais bien ce que tu veux et c'est tant mieux !' where id='peut-etre l'id de la ligne que tu as insérée dernierement :p';
 
Tout de même je suis etonné de trouver si peu d'intuition a défaut de volonté pour se documenter :s

Message cité 1 fois
Message édité par afbilou le 26-01-2006 à 20:18:59
Reply

Marsh Posté le 26-01-2006 à 21:18:51    

afbilou a écrit :

update matable set mon_champ='une valeur', un_autre_champ='une autre valeur ou la meme pourquoi pas ... car apres tout tu fais bien ce que tu veux et c'est tant mieux !' where id='peut-etre l'id de la ligne que tu as insérée dernierement :p';
 
Tout de même je suis etonné de trouver si peu d'intuition a défaut de volonté pour se documenter :s


merci mais sa je le sais je précise ma question : Comment fai t'on pour mettre l'id que j'ai inséré dernierement?

Reply

Marsh Posté le 26-01-2006 à 21:22:39    

Passage par url.
Recuperation apres validation du formulaire precedent.
Session.
Voila pour les methodes envisageables :/
 
un exemple :
 
page1.php : premier formulaire avec action="page2.php" method="post"
page2.php : sauvegarder les valeurs du formulaire precedent avec des session ou champ input type="hidden", puis formulaire d'upload de la foto avec action->page3.php
page3.php : recuperation de toutes les données et insertion en base avec insert.


Message édité par afbilou le 26-01-2006 à 21:26:27
Reply

Marsh Posté le 26-01-2006 à 21:56:22    

là tu m'aide merci! en abusant de ta gentillesse j'aurai une autre petite question à te poser: j'ai un formulaire d'identification pseudo et motdepasse qui renvoie vers un script qui verifie le mot passe et renvoi vers une page différente selon le pseudo entré: mon script:  

Citation :

<?php
function verification($nom,$pass){
  // Connexion SQL
  $dbhote = 'lalala';
  $dbuser = 'lalalal';
  $dbpass = 'lalalala';
  $dbbase = 'lalalalla;
  $link = mysql_connect($dbhote,$dbuser,$dbpasse);
  mysql_select_db($dbbase,$link);
 
  // Création de la requête SQL
  $nom_sql = mysql_real_escape_string($nom) ;
  $pass_sql = mysql_real_escape_string($motdepasse) ;
  $sql ="SELECT * FROM users "  
        . " WHERE pseudo='$nom_sql' AND motdepasse='$pass_sql'" ;
   
  // Exécution de la requête SQL
  $result = mysql_query($sql,$link);
  if(mysql_num_rows($result)>0){
    return TRUE;
  }else{
  return FALSE;
  }
}
?>
<?php
// si on a reçu les données d'un formulaire :
if ( !empty( $_POST['pseudo'] ) && !empty( $_POST['motdepasse'] ) ) {
 
  // on les récupère
  $nom = $_POST['pseudo'] ;
  $motdepasse = $_POST['motdepasse'] ;
 
  // on teste si le mot de passe est valide :
  if ( verification( $nom, $motdepasse ) ) {
    $message = 'Salut $nom, tu as été correctement identifié, tu peux maintenant <a href=$nom"/admin.html">modifier ton lostblog</a>' ;
  } else {
    // sinon on avertit l'utilisateur :
    $message = 'Mauvais mot de passe' ;
    $message .='<a href="auth.php">retour</a>' ;
  }
} else {
  // un des champs n'est pas rempli
  $message = 'le login ou le mot de passe est vide' ;
  $message .='<a href="auth.html">retour</a>' ;
}
?>
<html>
<head><title>Identification</title></head>
<body><p>
<div align="center"<?php echo $message ?></div>
</p></body>
</html>


et voila le sql error:  

Citation :

Warning: mysql_connect(): Access denied for user 'i3911682'@'10.0.5.73' (using password: NO) in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 8
 
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 9
 
Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 12
 
Warning: mysql_real_escape_string(): A link to the server could not be established in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 12
 
Warning: mysql_real_escape_string(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 13
 
Warning: mysql_real_escape_string(): A link to the server could not be established in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 13
 
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 18
 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/sites/1/ifrance.com/l/o/lostblog/site/verif.php on line 19


voila ce serait trés aimable à toi de m'aider un petit peu! :)

Reply

Marsh Posté le 26-01-2006 à 22:08:49    

$pass_sql = mysql_real_escape_string($motdepasse) ; --> c'est $pass que tu passes en argument de ta fonction.
 
 

Code :
  1. if(mysql_num_rows($result)>0){
  2.     return TRUE;
  3.   }else{
  4.   return FALSE;
  5.   }


Autant faire bosser mysql avec :
'SELECT count(*) FROM users WHERE pseudo=\'',$nom_sql,'\' AND motdepasse=\'',$pass_sql,'\'' ;
et regarder si le resultat du premier champ (avec mysql_fetch_row par exemple) est > 0
Ca evite le passage d'un grand nombre de données de mysql a PHP pour que ce dernier traite le resultat.


Message édité par afbilou le 26-01-2006 à 22:14:36
Reply

Marsh Posté le 27-01-2006 à 00:12:01    

hugoOo a écrit :

merci mais sa je le sais je précise ma question : Comment fai t'on pour mettre l'id que j'ai inséré dernierement?

C'est cette fonction là dont tu as besoin :
http://fr3.php.net/manual/fr/funct [...] ert-id.php
 :??:  

Reply

Marsh Posté le 27-01-2006 à 00:12:01   

Reply

Marsh Posté le 27-01-2006 à 18:15:57    

mrbebert ---> merci pour l'aide mais ma photo ne s'affiche plus quand je met :

Citation :

$sql = "UPDATE essai SET  photo='$savefile' WHERE id='mysql_insert_id()'";

peut tu m'aider?
afbilou----> je suis entrain de regarder ce que tu me dit.

Reply

Marsh Posté le 27-01-2006 à 18:25:27    

C'est une fonction PHP [:proy]

Reply

Marsh Posté le 27-01-2006 à 21:58:51    

quelqu'un pourrait t'il me dire pourquoi cela ne marche pas?

Reply

Marsh Posté le 28-01-2006 à 14:04:26    

hugoOo a écrit :

quelqu'un pourrait t'il me dire pourquoi cela ne marche pas?


tu utilises une fonction directement dans un requete SQL : c'est du grand n'importe quoi.
Solution : ouvre une doc PHP

Reply

Marsh Posté le 28-01-2006 à 15:24:52    

Tu ferais bien d'apprendre le Php avec un echo "Hello World !"; plutôt qu'avec un blog ...
 
C'est comme pour tout, c'est mieux de commencer par les bases.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 28-01-2006 à 21:17:31    

j'ai changer de technique: je recupere d'abord toute les données en les faisant passer de page en page grace a des INPUT TYPE="hidden" puis je les enregistre dans ma table sql, mais le mysqlerror() reste le meme!

Reply

Marsh Posté le 30-01-2006 à 11:34:37    

Est tu sur de tes identifiants de conection à mysql?
T'es sur que ton nom d'utilisateur mysql est "i3911682" et que tu n'as aucun mot de passe à fournir?
 
Ca me paraitrait vraiment bizare qu'un hébergeur comme ifrance laisse une sécurité aussi basse pour la base de donnée fournis à leurs clients.
 
Quand à ta super nouvelle technique, telle que tu la décris, elle est à chié d'autant plus que tout est faisable en une fois à ma conaissance.

Reply

Marsh Posté le 30-01-2006 à 11:46:48    

oui j'ai changé j'ai tout fait sur la meme page mais sa ne marche toujours pas: jvé aller voir du coté de mes identifiants et mots de passe!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed