[PHP] pb inconu

pb inconu [PHP] - PHP - Programmation

Marsh Posté le 04-12-2003 à 16:20:03    

:hello:  
 
Voila, je comprend pas que cela ne fontionne pas :  
 

Code :
  1. if(isset($_POST['add_txt']) == true)
  2.      {
  3.       $txt = mysql_query("SELECT * FROM infos_local" );
  4.       $aff_txt = mysql_fetch_row($txt);
  5.       mysql_query("UPDATE infos_local SET texte='".$texte.$aff_txt[5]."'" );
  6.      }
  7.     else
  8.      {
  9.       mysql_query("UPDATE infos_local SET texte='".$texte."'" );
  10.      }


 
Aucun msg d'erreur particulier, sauf qu'il ne me prend pas en compte $aff_txt[5]  [:wawash]  :pfff:  :pfff:  
 
Le pb vient de là :  
 

Code :
  1. $txt = mysql_query("SELECT * FROM infos_local" );
  2.       $aff_txt = mysql_fetch_row($txt);
  3.       mysql_query("UPDATE infos_local SET texte='".$texte.$aff_txt[5]."'" );


 
Une idée ?


Message édité par KdZ' le 04-12-2003 à 23:38:00
Reply

Marsh Posté le 04-12-2003 à 16:20:03   

Reply

Marsh Posté le 04-12-2003 à 16:24:16    

Est-tu sûr que mysql_fetch_row te renvoie vraiment une rangée, et non pas FALSE ?
D'autre part, pourrais-tu nous montrer la structure de la table qui est utilisée ?
Utilises-tu $aff_txt[5] en tant que 5ème champ de la rangée, ou en tant que 6ème champ ? Dans le premier cas c'est une erreur, le 5ème champ est contenu dans $aff_txt[4] puisque la numérotation des indices de tableaux commence à 0.


---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 04-12-2003 à 16:38:31    

Hello ;)
 
Nan t'inkiet, le $aff_txt[5] est le 6eme champ de la rangée.
 
Ensuite, quand je met $aff_txt[5] plus bas dans la page print($aff_txt[5]); il m'affiche bien ce qu'il faut :D

Reply

Marsh Posté le 04-12-2003 à 16:39:02    

Citation : D'autre part, pourrais-tu nous montrer la structure de la table qui est utilisée ?
 
Eu, de quelle maniere ? capture ?

Reply

Marsh Posté le 04-12-2003 à 17:00:08    

Et si tu fais un  
 
echo $aff_txt[5];  
 
juste après le
 
$aff_txt = mysql_fetch_row($txt);
 
ça donne quoi ?


Message édité par deliriumtremens le 04-12-2003 à 17:00:33
Reply

Marsh Posté le 04-12-2003 à 17:32:45    

rien  [:wawash]

Reply

Marsh Posté le 04-12-2003 à 22:41:27    

change le titre du topic à l'occase

Reply

Marsh Posté le 04-12-2003 à 22:56:36    

$txt = mysql_query("SELECT * FROM infos_local" );
if (! $txt) {echo "Erreur requete 1"; exit; }
$aff_txt = mysql_fetch_row($txt);
 
C'est toujours bien de tester le résultat d'une fonction :whistle:  
 
 
Sinon, ca, spa bien : :non:  
if(isset($_POST['add_txt']) == true) {
 
Plutot ca -> if (isset($_POST['add_txt'])) { :)

Reply

Marsh Posté le 04-12-2003 à 23:37:02    

mrBebert a écrit :


Sinon, ca, spa bien : :non:  
if(isset($_POST['add_txt']) == true) {
 
Plutot ca -> if (isset($_POST['add_txt'])) { :)  


 
merci, je suis toujours preneur des astuce optimisant le code ;)
 
 
Pour le reste, ça ne fonctionne toujours pas  [:mir45]

Reply

Marsh Posté le 04-12-2003 à 23:38:30    

essaie avec mysql_fetch_array et le nom de la colonne au lieu de son numéro [:proy]


Message édité par mrbebert le 04-12-2003 à 23:41:30
Reply

Marsh Posté le 04-12-2003 à 23:38:30   

Reply

Marsh Posté le 04-12-2003 à 23:38:43    

c'est vraiment la grosse optimisation alors

Reply

Marsh Posté le 04-12-2003 à 23:52:00    

essaye dans phpmyadmin
de coller ta requete SELECT * ...
et regarde ce qu'elle retourne.
car un select sans restriction peut te retourner plein de résultat dans un ordre pas défini.
il se peut donc que le premier resultat (si il en a un) n'ai pas de 6eme champs


---------------
«Le succès consiste à aller d'échecs en échecs sans jamais perdre son enthousiasme» - Churchill
Reply

Marsh Posté le 13-12-2003 à 12:30:41    

fFluFf a écrit :

essaye dans phpmyadmin
de coller ta requete SELECT * ...
et regarde ce qu'elle retourne.
car un select sans restriction peut te retourner plein de résultat dans un ordre pas défini.
il se peut donc que le premier resultat (si il en a un) n'ai pas de 6eme champs


 
Ma requete select ????

Reply

Marsh Posté le 13-12-2003 à 13:00:48    

moi je ferais aussi avec mysql_fetch_array(); ça devrait fonctionner :s c'est quoi le message d'erreur ?

Reply

Marsh Posté le 13-12-2003 à 20:33:01    

En fait il n'y a aucun msg d'erreur, c'est juste que il ne me prend pas les deux valeur, juste une...

Reply

Marsh Posté le 13-12-2003 à 20:34:47    

null a écrit :

moi je ferais aussi avec mysql_fetch_array(); ça devrait fonctionner :s c'est quoi le message d'erreur ?


 
 
 
ça marche comment cette methode ? [:miracle]

Reply

Marsh Posté le 13-12-2003 à 20:48:26    

Pareil que fetch_row(), sauf que tu peux accéder aux colonnes directement par le nom, plutôt que par leur indice
 
Par exemple, $row[0] devient $row['id'] si la première colonne du résultat s'appelait 'id'.

Reply

Marsh Posté le 13-12-2003 à 20:51:26    

Citation :

ça marche comment cette methode ?


 
Exemple :
°°°°°°°°°°
 
Ta table "test" contient les champs "id,prenom,nom,mail".
 
$Requete = "SELECT * FROM test WHERE id = '$id'";
$Resultat = mysql_query($Requete);
$Detail = mysql_fetch_array($Resultat);
 
$Prenom = $Detail['prenom'];
$Nom = $Detail['nom'];
$Mail = $Detail['mail'];

Reply

Marsh Posté le 13-12-2003 à 21:00:58    

Oula merci les gars :)
 
Oui, donc en fait on gagne juste sur le fait que c'est plus pratique :??:

Reply

Marsh Posté le 13-12-2003 à 21:04:28    

Pour mieux comprendre mon erreur je propose de poster mon code (en partie) :
 

Code :
  1. if ($texte != '')
  2.    {
  3.     // Formatage avant enregistrement du message avec le texte saisi + mot accrocheur
  4.     if($_POST['MotDebut'] != '')
  5.      {
  6.       $texte = ('<strong><font color=\"red\">'.$_POST['MotDebut'].'</font></strong> '.$texte.'');
  7.      }
  8.     // Enregistrement de $texte dans la bdd...
  9.     if (isset($_POST['add_txt']))
  10.      {
  11.       $txt = mysql_query("SELECT * FROM infos_local" );
  12.       $aff_txt = mysql_fetch_row($txt);
  13.       mysql_query("UPDATE infos_local SET texte='".$texte.$aff_txt[5]."'" );
  14.      }
  15.     else
  16.      {
  17.       mysql_query("UPDATE infos_local SET texte='".$texte."'" );
  18.      }
  19.     if (isset($_POST['maj_date']) == true)
  20.      {
  21.       mysql_query("UPDATE infos_local SET date='".$_POST['maj_date']."'" );
  22.       $mess = '
  23.        <SCRIPT LANGUAGE="JavaScript">
  24.        <!--
  25.        alert(\'Le message à bien été enregistré.\n\(Pour infos, vous avez choisi de mettre à jour la date de modification des status des postes au jour d\\\'aujourd\\\'hui.\)\');
  26.        -->
  27.        </SCRIPT>';
  28.      }
  29.     else
  30.      {
  31.       $mess = '
  32.       <SCRIPT LANGUAGE="JavaScript">
  33.       <!--
  34.       alert(\'Le message à bien été enregistré.\n\(Pour infos, vous avez choisi de ne pas mettre à jour la date de modification des status des postes\)\');
  35.       -->
  36.       </SCRIPT>';
  37.      }
  38.    }
  39.  elseif($texte == '')
  40.   {
  41.    $mess = '
  42.    <SCRIPT LANGUAGE="JavaScript">
  43.    <!--
  44.    alert(\'ATTENTION :\n\nVous n\\\'avez pas entrer de texte dans le formulaire !\nAucune modification n\\\'a été enregistrée.\');
  45.    -->
  46.    </SCRIPT>';
  47.   }


 
Voila, en gros, j'ai deux textarea, l'un affiche le texte present actuellement dans la base, et l'autre, le second, servira pour rentrer le nouveau texte en + de l'ancien...


Message édité par KdZ' le 13-12-2003 à 21:57:51
Reply

Marsh Posté le 13-12-2003 à 22:08:42    

[:wam] c'est pas comme ca qu'on fetch ....... la tu fetch n'importe quoi ... eventuellment le premier enregistrement .....ca m'etonnerait que ce soit ce que tu veuilles ..
 
et utilises le fetch_array c'est plus clair.
 
 

Code :
  1. $txt = mysql_query("SELECT * FROM infos_local" );
  2. while($aff_txt = mysql_fetch_array($txt)) {
  3.    mysql_query("UPDATE infos_local SET texte='".$texte.$aff_txt['nom_de_mon_champ']."'" );
  4. }


 
 
c'est ce genre de truc que tu veux ... mais ca n'a pas de sens .......[:veryfree] j'aimerai bien voir comment est foutue ta base ou eventuellement ce que tu veux faire ... si tu veux update tte ta base alors ajoutes un LIMIT 0,1 a ta premiere requête .....
 
 
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-12-2003 à 22:27:21    

Mouarf, c chaud ça, je debute là...
 
voila la page : http://pim.asso.fr/stkge/upload/fichiers/056156165050651.PNG
 
bon, je vais essaer avec ton code, (le methode fetch_array())
 
Je veux juste modifier un champs dans ma bdd, c tout...
 
 
Edit : Cette methode ne fonctionne pas non plus  :pfff:  :pfff:  [:wawash]


Message édité par KdZ' le 13-12-2003 à 22:43:35
Reply

Marsh Posté le 13-12-2003 à 22:45:09    

oui mais tu as combien d'enregistrements ds ta table infos_local .... il faudrait que tu passes un identifiant d'enregistrement  
 
et tu pourrais selectionner que le champs qui t'interessent  
$txt = mysql_query("SELECT texte FROM infos_local" );  
 
et t'as *peut-etre* meme pas besoin de faire la selection du contenu du champ prealablement .....
CONCAT(str1,str2,...)
 
mysql_query("UPDATE infos_local SET texte=CONCAT('texte', '".$texte."'" );  
 
je ne suis pas sur que CONCAT puisse etre utiliser en update ... et je ne suis pas sur de la syntaxe ... peut-etre qu'il ne faut pas de quotes pour designer le champs d'origne.


Message édité par simogeo le 13-12-2003 à 22:45:59

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-12-2003 à 22:58:24    

Dans ma table info_local j'ai 8 enregistrements :
http://pim.asso.fr/stkge/upload/fichiers/05615650651.PNG
http://pim.asso.fr/stkge/upload/fichiers/255505615650651.PNG
 
ça devient chaud là... :(


Message édité par KdZ' le 13-12-2003 à 22:59:54
Reply

Marsh Posté le 13-12-2003 à 23:19:05    

KdZ' a écrit :

Dans ma table info_local j'ai 8 enregistrements :
http://pim.asso.fr/stkge/upload/fi [...] 650651.PNG
http://pim.asso.fr/stkge/upload/fi [...] 650651.PNG
 
ça devient chaud là... :(  


tu n'as pas 8 enregistrements .. tu as 8 champs .....
desolé KdZ' mais je ne veux pas t'aider davantage. c'est pas une punition, mais il faut d'abord que tu comprennes le fonctionnement d'une base de données :/ ... fais quelques tutos sur le net.
 
et reviens, on t'aidera pour mettre en place ce que tu veux mais actuellement, on ne peux pas te donner un cours de bdd depuis ce forum ce serait trop long :/


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-12-2003 à 23:26:30    

mais nan, je me suis trompé voyons, j'ai juste confondu momentanement... :o


Message édité par KdZ' le 13-12-2003 à 23:27:00
Reply

Marsh Posté le 13-12-2003 à 23:32:52    

[:rofl]......
le prend pas mal ( on apprend tous ) mais rien qu'a voir la structure de ta base ... je sais que c'etait pas une faute d'étourderie :D
 
comment tu différencies tes enregistrements alors ? :D
perds pas de temps a argumenter, et cours apprendre a te servir d'une bdd au moins ca te sera utile ;) ( 1h te suffira peut-etre )


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 14-12-2003 à 01:13:43    

:kaola: ok, t'as raison apres tout, alors a + tard ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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