IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Interpreter un nombre comme du texte [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut Interpreter un nombre comme du texte
    Slt à tous,
    j'ai un blem qui m'améne à vous poser une petit question.

    J'ai une bdd dans laquelle j'ai des produits référencés.
    ID REF NOM ....
    par contre certains de ces produits ont une ref en chiffre uniquement style
    ID 5
    REF 154863
    NOM stylo....

    Mon souci c'est que quand je manipule la bdd pour diverses opérations, cela m'interprète cette REF comme un chiffre et c'est pas bon il faudrait que cela soit interpréter comme une chaine de texte.
    car ça me fait planter mes pages.

    Comment faire ?
    Merci de votre aide
    @+

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Pourrais-tu nous montrer un exemple d'une situation provoquant une erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    le site est en dév.
    mais par exemple lors de l'ajout dans le caddie si la ref est qu'en chiffre cela ne fonctionne pas.
    ou lors du calcul de poids c'est pareil.

    je peux te communiquer un adresse mais c un peu délicat.

    voila une partie du code du caddie et poids ou ca plante par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    $req121 = mysql_query("SELECT * FROM tbl_user WHERE login='$_SESSION[login]'") or die("Erreur SQL121 !"); 
    while($data121 = mysql_fetch_array($req121)) {
     
     
    if (isset($_GET['prod']))
    {
    switch ($_GET['sens'])
    {
    case 'ajout' : 
    $_SESSION[$_GET['prod']] ++;
    break;
    case 'sup' : 
    $_SESSION[$_GET['prod']] --;
    //-- si la quantité < 1, le produit est supprimé du panier -----
    if ($_SESSION[$_GET['prod']] < 1) 
    unset($_SESSION[$_GET['prod']]);
    break;
    }
     
    echo'<br />';
     
    foreach($_SESSION as $cle => $qte)
    {
     
    // on créer la requete SQL et on l'envoie 
    $sql = "SELECT * FROM produit WHERE p_ref='$cle' "; 
    // on envoie la requete 
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    while ($sortie = mysql_fetch_array($req)){
    $a=$sortie[p_ref];
    $b=$sortie[p_photo];
    $c=$sortie[p_prix];
    $d=$sortie[p_design];
     
    $total+= $sortie[p_prix]*$qte;
    $thep+= $sortie[p_poids]*$qte;
     
    }
    }
    }
    echo'<form action="?rub=panierrecap&prod" method="post" name="frm" onsubmit="return ctr();" >';
    $req = mysql_result(mysql_query("SELECT COUNT(tranch2) FROM poids WHERE tranch2 > $thep"), 0);
    if($req != 0){
    }else{
     echo 'Il y a un problème de poids';
    }
     
     
     
    	$req13 = mysql_query("SELECT * FROM poids WHERE $thep BETWEEN tranch1 AND tranch2") or die("Erreur SQL13 !"); 
    	while($data13 = mysql_fetch_array($req13)) {
    	echo'<table><tr><td class="cad03 centrage"><input type="radio" name="choix" value="'.$data13[id].'" onclick="blnCoche = true;"></td>
    	<td class="cad03">'.$data13[trans].'</td>
    	<td class="cad07">'.$data13[infos].'</td>
    	<td class="cad03 droite">'.$data13[prix].' €</td>
    	</tr></table><br />';
    	}
     
     
     
    echo'<table class="tabcad03">
    <tr><td class="cad05 gauche"><img class="vertical" src="./img/arrow2.png" alt="" /><a class="membre" href="?rub=panierfin&prod">RETOUR</a>
    </td><td class="cad07 droite"></td>
    <td  class="cad05 droite" ><input type="submit" value="CONTINUER" class="boutonlien" >
    <img class="vertical" src="./img/arrow.png" alt="" /></td></tr>
    </table>
    </form>';	
     
      }
    c'est dur à expliquer

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourrais-tu indiquer exactement ce qui plante ?
    Peux-tu nous montrer un code minimal qui reproduise ce que tu n'arrives pas a traiter ?

    Je suppose que ton champs "poids" par exemple est de type entier ?

    Le transtypage de PHP fait qu'a priori le passage entier<->chaine se fait naturellement selon le contexte.

    Ps : n'oublie pas de mettre les guillemets a tes index $data13['trans']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    j'arrive a traiter les variables mais c'est uniquement le champs REF qui pose probleme.

    Si par exemple je modifie le champs REF en ajoutant juste un point ou une lettre a la REF existante, style :
    REF 154863
    en
    REF 154863. ou 154863a

    ça fonctionne

    Mon champs dans ma BDD est un champs TEXT,
    je ne pense pas que cela joue ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dans le code que tu nous as mis, je ne vois pas d'operation avec le champ REF.

    Pourrais-tu nous montrer ce que tu fais avec et qui ne fonctionne pas comme attendu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    bon je vais essayé

    voila par exemple le visuelle d'une page ou je vais utilisé $data12['p_ref']

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    ... while ($data12 = mysql_fetch_array($limite)) {
     
     
    $carac = nl2br($data12['p_design']);
     
     
    echo '<table><tr>
        <td rowspan="3" class="centrage tabladmi1 vertical"><a href="./photosref/'.$data12[p_photo].'" rel="lightbox"><img class="photo" src="./photosref/'.$data12['p_photo'].'" alt="" /></a></td>
        <td rowspan="3" class="vertical"><strong>Catégorie :</strong> '.$data12['p_cat'].'
    	<br /><br /><strong>Sous-Catégorie :</strong><br />'.$data12['p_souscat'].'	
    	<br /><br /><strong>Référence :</strong><br />'.$data12['p_ref'].'
    	<br /><br /><strong>Caractéristiques :</strong><br /> '.$carac.'</td>
    	<td class="verticaltop tabladmi1"><strong>Rareté :<br />'.$data12['rare'].'</strong></td>
      </tr>
       <tr>
        <td class="verticaltop tabladmi1"><strong>Prix :<br />'.$data12['p_prix'].'</strong> €</td></tr>
       <tr>
         <td class="verticaltop tabladmi1"><div style="display: '.$pan.';"><a href="?rub=panier&amp;prod='.$data12['p_ref'].'&amp;sens=ajout">Acheter</a></div>
    	 <div style="display: '.$pan2.';">
    	 <a href="?rub=contact&amp;titre=Demande d information sur la Référence '.$data12['p_ref'].'">
    	<img class="" src="img/info.png" alt="" /> Demande d\'information</a></div></td>
       </tr>	
    <tr><td colspan="3"class="centrage">
    <input type="hidden" name="id" value="'.$data12['p_id'].'" /></td>
      </tr>
      </table><br /><hr /><br />';
    l'acheteur qui veux acheter ce produit va cliquer sur cette partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="?rub=panier&amp;prod='.$data12['p_ref'].'&amp;sens=ajout">Acheter</a>
    qui doit donc le mettre dans le caddie
    derrière il y a une page caddie qui doit le recevoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    if (isset($_GET['prod']))
    {
    switch ($_GET['sens'])
    {
    case 'ajout' : 
    $_SESSION[$_GET['prod']] ++;
    break;
    case 'sup' : 
    $_SESSION[$_GET['prod']] --;
    //-- si la quantité < 1, le produit est supprimé du panier -----
    if ($_SESSION[$_GET['prod']] < 1) 
    unset($_SESSION[$_GET['prod']]);
    break;
    }
     
    //-- ces lignes ne servent à rien, simplement un affichage de controle ------
    echo'<h5>Caddie</h5><br />
    <table class="tabcad01">
    <tr>
    <td class="cad01">Produit</td>
    <td class="cad02">Désignation</td>
    <td class="cad03">Prix Unitaire</td>
    <td class="cad04">Quantité</td>
    <td class="cad05">Prix TTC</td>
    </tr></table>';
     
    foreach($_SESSION as $cle => $qte)
    {
     
    // on créer la requete SQL et on l'envoie 
    $sql = "SELECT * FROM produit WHERE p_ref='$cle' "; 
    // on envoie la requete 
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    while ($sortie = mysql_fetch_array($req)){
    $a=$sortie['p_ref'];
    $b=$sortie['p_photo'];
    $c=$sortie['p_prix'];
    $d=$sortie['p_design'];
     
    echo '<table class="tabcad02">
    <tr><td>
    <tr><td class="cad01"><img src="./photosref/'.$b.'" width="100" alt="" /></td>
    <td class="cad02">'.$d.'</td>
    <td class="cad03 centrage">'.$c.' €</td>
    <td class="cad04 centrage"><a href="?rub=panier&amp;prod='.$a.'&amp;sens=ajout"><img class="vertical" src="./img/plus.png" alt="" /></a>&nbsp;'.$qte.'&nbsp;
    <a href="?rub=panier&amp;prod='.$a.'&sens=sup"><img class="vertical" src="./img/moins.png" /></a></td>
    <td class="cad05 centrage"> '.$sortie['p_prix']*$qte.' €</td></tr></table>';
    $total+= $sortie['p_prix']*$qte;
    }
    }
    }
    //$port=6;
    //$totalg=$port+$total;
    $totalg=$total;
    if ($total=="")
    {	
    echo '<table>
    <tr><td>&nbsp;</td></tr>
    <tr><td class="cad08"><div class="centrage"><strong>Votre caddie est vide</strong></div></td></tr>
    <tr><td>&nbsp;</td></tr>
    <tr><td>&nbsp;</td></tr>
    <tr><td>&nbsp;</td></tr>
    <tr><td>&nbsp;</td></tr></table>';		
    }	
    else
    {
    echo '<table class="tabcad01">
    <tr><td class="cad06 droite"><strong>Total TTC :</strong> &nbsp;</td>
    <td  class="cad05 centrage" ><strong>'.$totalg.' €</strong></td></tr>
    </table>
    <table>
    <tr><td>&nbsp;</td></tr>
    <tr><td class="cad07 centrage"><a class="membre" href="javascript:history.back()">Poursuivre mes Achats</a></td>
    <td class="cad07 centrage"><a class="membre" href="?rub=panierid">Valider mes Achats</a></td></tr>
    <tr><td>&nbsp;</td></tr>
    </table>';
    }
     
    ?>
    lors du passge sur la page caddie le produit est dans le caddie, mais si je continue mes achats et que je revient sur le caddie, ma REF précédement ajoutée a disparue.

    Et donc cela se passe uniquement quand ma REF contient que des chiffres.
    REF avec chiffre et lettre ca marche
    REF avec lettre ça marche

    Donc comment remédier à ca ?
    J'espère avoir réussi à expliquer mon blem

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 44
    Par défaut
    j'ai peut etre pas tout compris à ton probleme mais essaie déjà de tester ta requete toute seule (genre dans mysql query browser ou phpmyadmin) avec les meme cas de figures.

    Si elle fonctionne, verifie que ta variable $sql contient bien effectivement la requete que tu souhaite.

    faut debugguer quoi

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ahhh j'ai compris ce qui n'allait pas : une clef de $_SESSION n'a pas le droit de commencer par un chiffre :

    Les clés du tableau $_SESSION sont sujettes aux mêmes limitations que les variables PHP habituelles, c'est-à-dire qu'elles ne peuvent pas commencer par un nombre, mais commencer par une lettre ou un souligné '_'. Pour plus de détails, reportez-vous à la section sur les variables.
    Tu devrais développer si tu le peux en affichant toutes les erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    Tu devrais développer si tu le peux en affichant toutes les erreurs.
    c'est la seule erreur que j'ai est donc visiblement il n'y a pas de soluce.
    J'ai les boules si c'est ca.

    faut que je revoie toutes mes variables de session c'est la mort

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Non ce que je voulais dire c'est que tu devrais afficher les erreurs de type NOTICE, car ce probleme donne une erreur de ce type.

    Pour la solution effectivement tu dois ajouter un caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['_'.$_GET['prod']] ++
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 44
    Par défaut
    c'est clairement la 1ere chose à faire quand on developpe.
    perso :
    error_reporting = E_ALL

    tant qu'il y a ne serait-ce qu'un warning, je continue le debug. normal.

  13. #13
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    Merci Sabotage et les autres également.
    Je vais effectivement ajouter un caractère à l'insertion en bdd

    Merci pour les infos
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser un CLOB comme champ texte ?
    Par tostinni dans le forum SQL
    Réponses: 7
    Dernier message: 27/08/2008, 22h00
  2. scripts perl affiches comme du texte
    Par HeLLSoNG dans le forum Apache
    Réponses: 2
    Dernier message: 15/11/2006, 21h12
  3. [VBA-E]Plage contenant des nombres et du texte
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2006, 18h33
  4. Arrondir un nombre comme j'en ai envie !
    Par beletteroi dans le forum Access
    Réponses: 6
    Dernier message: 03/11/2005, 12h42
  5. automationn excel, Champ nombre reste en text ???
    Par mat_lefebvre dans le forum Access
    Réponses: 16
    Dernier message: 09/12/2003, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo